Dialog DA7212 evaluating project DEVELOP branch
Dependencies: FXAS21002 TLV320 mbed sinelookup C12832 FXOS8700
main.cpp@5:f1907e4d1147, 2016-03-24 (annotated)
- Committer:
- K4zuki
- Date:
- Thu Mar 24 02:41:44 2016 +0900
- Revision:
- 5:f1907e4d1147
- Parent:
- 2:3e6fb6a1f3ef
- Child:
- 8:42093f0e5d9e
add LCD sample code(commented out)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
k4zuki | 1:98b55aeebaa5 | 1 | /** original: p07gbar/code/TLV320_Write_test/ |
k4zuki | 1:98b55aeebaa5 | 2 | * modify by k4zuki |
k4zuki | 1:98b55aeebaa5 | 3 | * to control Dialog DA7212 codec |
k4zuki | 1:98b55aeebaa5 | 4 | */ |
k4zuki | 1:98b55aeebaa5 | 5 | #include "mbed.h" |
k4zuki | 1:98b55aeebaa5 | 6 | #include "sinelookup.h" |
K4zuki | 5:f1907e4d1147 | 7 | // #include "TLV320.h" |
k4zuki | 1:98b55aeebaa5 | 8 | // #include "DA7212.h" |
K4zuki | 5:f1907e4d1147 | 9 | // #include "I2S.h" |
K4zuki | 5:f1907e4d1147 | 10 | // #include "C12832.h" |
K4zuki | 5:f1907e4d1147 | 11 | |
K4zuki | 5:f1907e4d1147 | 12 | // C12832 lcd(D11, D13, D12, D7, D10); |
K4zuki | 5:f1907e4d1147 | 13 | // C12832 lcd(PTD2, PTD1, PTD3, PTC3, PTD0); |
K4zuki | 5:f1907e4d1147 | 14 | // AnalogIn pot1 (A0); |
K4zuki | 5:f1907e4d1147 | 15 | // AnalogIn pot2 (A1); |
K4zuki | 5:f1907e4d1147 | 16 | // AnalogIn pot1 (PTB2); |
K4zuki | 5:f1907e4d1147 | 17 | // AnalogIn pot2 (PTB3); |
k4zuki | 1:98b55aeebaa5 | 18 | |
k4zuki | 1:98b55aeebaa5 | 19 | #define SAMPLERATE 32000 |
k4zuki | 1:98b55aeebaa5 | 20 | |
k4zuki | 1:98b55aeebaa5 | 21 | /* |
K4zuki | 2:3e6fb6a1f3ef | 22 | //DA7212 codec(I2C_SDA, I2C_SCL); |
K4zuki | 2:3e6fb6a1f3ef | 23 | TLV320 codec(I2C_SDA, I2C_SCL); |
K4zuki | 2:3e6fb6a1f3ef | 24 | I2S i2s(I2S_TRANSMIT, PTC1, PTB19, PTB18); |
k4zuki | 1:98b55aeebaa5 | 25 | |
k4zuki | 1:98b55aeebaa5 | 26 | AnalogIn aIn(p19); |
k4zuki | 1:98b55aeebaa5 | 27 | AnalogIn vol(p20); |
k4zuki | 1:98b55aeebaa5 | 28 | |
k4zuki | 1:98b55aeebaa5 | 29 | float phase_l; |
k4zuki | 1:98b55aeebaa5 | 30 | float phase_r; |
k4zuki | 1:98b55aeebaa5 | 31 | int minibuf[16]; |
k4zuki | 1:98b55aeebaa5 | 32 | float skipper; |
k4zuki | 1:98b55aeebaa5 | 33 | float volume; |
k4zuki | 1:98b55aeebaa5 | 34 | float phase_kill; |
k4zuki | 1:98b55aeebaa5 | 35 | |
k4zuki | 1:98b55aeebaa5 | 36 | |
k4zuki | 1:98b55aeebaa5 | 37 | extern "C" void HardFault_Handler() |
k4zuki | 1:98b55aeebaa5 | 38 | { |
k4zuki | 1:98b55aeebaa5 | 39 | error("Hard Fault!\n"); |
k4zuki | 1:98b55aeebaa5 | 40 | } |
k4zuki | 1:98b55aeebaa5 | 41 | |
k4zuki | 1:98b55aeebaa5 | 42 | |
k4zuki | 1:98b55aeebaa5 | 43 | void play(void) |
k4zuki | 1:98b55aeebaa5 | 44 | { |
k4zuki | 1:98b55aeebaa5 | 45 | int to_write = i2s.max_fifo_points() - (i2s.fifo_points()); |
k4zuki | 1:98b55aeebaa5 | 46 | for(int i = 0; i < to_write; i+=2) { |
k4zuki | 1:98b55aeebaa5 | 47 | minibuf[i] = int(float(sine16lookup[int(phase_l)])*volume); |
k4zuki | 1:98b55aeebaa5 | 48 | //minibuf[i] = int(sine16lookup[int(phase_l)]); |
k4zuki | 1:98b55aeebaa5 | 49 | minibuf[i+1] = int(float(sine16lookup[int(phase_r)])*volume); |
k4zuki | 1:98b55aeebaa5 | 50 | phase_l+=skipper; |
k4zuki | 1:98b55aeebaa5 | 51 | phase_r = phase_l + phase_kill; |
k4zuki | 1:98b55aeebaa5 | 52 | while(phase_l >= SINE16LENGTH) { |
k4zuki | 1:98b55aeebaa5 | 53 | phase_l -= SINE16LENGTH; |
k4zuki | 1:98b55aeebaa5 | 54 | } |
k4zuki | 1:98b55aeebaa5 | 55 | |
k4zuki | 1:98b55aeebaa5 | 56 | while(phase_r >= SINE16LENGTH) { |
k4zuki | 1:98b55aeebaa5 | 57 | phase_r -= SINE16LENGTH; |
k4zuki | 1:98b55aeebaa5 | 58 | } |
k4zuki | 1:98b55aeebaa5 | 59 | while(phase_r< 0) phase_r += SINE16LENGTH; |
k4zuki | 1:98b55aeebaa5 | 60 | } |
k4zuki | 1:98b55aeebaa5 | 61 | i2s.write(minibuf, to_write); |
k4zuki | 1:98b55aeebaa5 | 62 | } |
k4zuki | 1:98b55aeebaa5 | 63 | */ |
k4zuki | 1:98b55aeebaa5 | 64 | /* main */ |
k4zuki | 1:98b55aeebaa5 | 65 | int main() |
k4zuki | 1:98b55aeebaa5 | 66 | { |
k4zuki | 1:98b55aeebaa5 | 67 | I2S0_TCSR |= 1u<<31; |
k4zuki | 1:98b55aeebaa5 | 68 | /* |
k4zuki | 1:98b55aeebaa5 | 69 | skipper = (aIn*49)+1; |
k4zuki | 1:98b55aeebaa5 | 70 | |
k4zuki | 1:98b55aeebaa5 | 71 | codec.power(true); |
k4zuki | 1:98b55aeebaa5 | 72 | codec.frequency(SAMPLERATE); |
k4zuki | 1:98b55aeebaa5 | 73 | codec.wordsize(16); |
k4zuki | 1:98b55aeebaa5 | 74 | codec.master(false); |
k4zuki | 1:98b55aeebaa5 | 75 | codec.headphone_volume(0.5); |
k4zuki | 1:98b55aeebaa5 | 76 | codec.start(); |
k4zuki | 1:98b55aeebaa5 | 77 | |
k4zuki | 1:98b55aeebaa5 | 78 | i2s.frequency(SAMPLERATE); |
k4zuki | 1:98b55aeebaa5 | 79 | i2s.wordsize(16); |
k4zuki | 1:98b55aeebaa5 | 80 | i2s.stereomono(I2S_STEREO); |
k4zuki | 1:98b55aeebaa5 | 81 | i2s.masterslave(I2S_MASTER); |
k4zuki | 1:98b55aeebaa5 | 82 | i2s.attach(&play); |
k4zuki | 1:98b55aeebaa5 | 83 | i2s.start(); |
k4zuki | 1:98b55aeebaa5 | 84 | */ |
k4zuki | 1:98b55aeebaa5 | 85 | while(1) |
k4zuki | 1:98b55aeebaa5 | 86 | {; |
k4zuki | 1:98b55aeebaa5 | 87 | /* |
k4zuki | 1:98b55aeebaa5 | 88 | skipper = (aIn*30)+1; |
k4zuki | 1:98b55aeebaa5 | 89 | |
k4zuki | 1:98b55aeebaa5 | 90 | volume = 1; |
k4zuki | 1:98b55aeebaa5 | 91 | phase_kill = (vol-0.5)*400; |
k4zuki | 1:98b55aeebaa5 | 92 | |
k4zuki | 1:98b55aeebaa5 | 93 | //printf("Skipper:%f, %i, %i\n\r",skipper, to_write,i2s.fifo_level()); |
k4zuki | 1:98b55aeebaa5 | 94 | */ |
k4zuki | 1:98b55aeebaa5 | 95 | /*if(flag) |
k4zuki | 1:98b55aeebaa5 | 96 | { |
k4zuki | 1:98b55aeebaa5 | 97 | printf("."); |
k4zuki | 1:98b55aeebaa5 | 98 | flag = false; |
k4zuki | 1:98b55aeebaa5 | 99 | }*/ |
k4zuki | 1:98b55aeebaa5 | 100 | } |
k4zuki | 1:98b55aeebaa5 | 101 | |
k4zuki | 1:98b55aeebaa5 | 102 | } |
K4zuki | 5:f1907e4d1147 | 103 | // #include "C12832.h" |
K4zuki | 5:f1907e4d1147 | 104 | // |
K4zuki | 5:f1907e4d1147 | 105 | // C12832 lcd(D11, D13, D12, D7, D10); |
K4zuki | 5:f1907e4d1147 | 106 | // |
K4zuki | 5:f1907e4d1147 | 107 | // AnalogIn pot1 (A0); |
K4zuki | 5:f1907e4d1147 | 108 | // AnalogIn pot2 (A1); |
K4zuki | 5:f1907e4d1147 | 109 | // |
K4zuki | 5:f1907e4d1147 | 110 | // int main() |
K4zuki | 5:f1907e4d1147 | 111 | // { |
K4zuki | 5:f1907e4d1147 | 112 | // while(1) { |
K4zuki | 5:f1907e4d1147 | 113 | // lcd.cls(); |
K4zuki | 5:f1907e4d1147 | 114 | // lcd.locate(0,3); |
K4zuki | 5:f1907e4d1147 | 115 | // lcd.printf("Pot 1 = %.2f", (float)pot1); |
K4zuki | 5:f1907e4d1147 | 116 | // lcd.locate(0,14); |
K4zuki | 5:f1907e4d1147 | 117 | // lcd.printf("Pot 2 = %.2f", (float)pot2); |
K4zuki | 5:f1907e4d1147 | 118 | // wait(0.1); |
K4zuki | 5:f1907e4d1147 | 119 | // } |
K4zuki | 5:f1907e4d1147 | 120 | // } |