Dialog DA7212 evaluating project DEVELOP branch
Dependencies: FXAS21002 TLV320 mbed sinelookup C12832 FXOS8700
main.cpp
- Committer:
- k4zuki
- Date:
- 2017-07-04
- Revision:
- 16:2edf3d4ccbe3
- Parent:
- 15:f9f642239cb6
File content as of revision 16:2edf3d4ccbe3:
/** original: p07gbar/code/TLV320_Write_test/ * modify by k4zuki * to control Dialog DA7212 codec from FRDM-K64F/K66F * - FRDM * - https://developer.mbed.org/platforms/FRDM-K64F/ * - I2S * - I2S_TXD: PTC1 * - I2S_TX_FS: PTB19 * - I2S_TX_BCLK: PTB18 * - FXOS8700CQ - Accelerometer and Magnetometer * - SCL:SCL * - SDA:SDA * - 8-bit Address: 0x3A * - https://developer.mbed.org/platforms/FRDM-K66F/ * - I2S * - I2S_TXD: PTC1 * - I2S_TX_FS: PTE11 * - I2S_TX_BCLK: PTE12 * - FXOS8700CQ - Accelerometer and Magnetometer * - SCL:SCL * - SDA:SDA * - 8-bit Address: 0x3A * - FXAS21002 - Gyroscope * - SCL:SCL * - SDA:SDA * - 8-bit Address: 0x42 * - 2 user push-buttons * - RGB LED * - DA7212 (on-board(K66F) or off-board(K64F+ARD-AUDIO-7212)) * - https://developer.mbed.org/components/ARD-AUDIO-DA7212/ * - SCL:SCL * - SDA:SDA * - 8-bit address: 0x34 * - Application Shield * - https://developer.mbed.org/components/mbed-Application-Shield/ * - 3 Axis +/1 1.5g Accelerometer,I2C Interface Freescale MMA7660 * - SCL: SCL * - SDA: SDA * - 8-bit Address: 0x98 * - Temperature sensor LM75B * - SCL: SCL * - SDA: SDA * - 8-bit Address: 0x90 * - 2 x Potentiometers Iskra PNZ10ZA, 10k * - Pot 1 (left) : A0 * - Pot 2 (right): A1 * - 5 way Joystick ALPS SKRHADE010 * - Up: A2 * - Down: A3 * - Left: A4 * - Right: A5 * - Centre: D4 * - 128x32 Graphics LCD, SPI Interface Newhaven C12332A1Z * - A0: D7 * - nCS: D10 * - MOSI: D11 * - nRESET: D12 * - SCK: D13 * - RGB LED, PWM connected Cree Inc CLV1A-FKB * - Red: D5 * - Blue: D8 * - Green: D9 * - Speaker, PWM Connected MULTICOMP MCSMT-8030B-3717 * - D6 * - Xbee socket * - Tx: D0 * - Rx: D1 * - Status: D2 * - nReset: D3 */ #include "mbed.h" AnalogIn pot1 (A0); AnalogIn pot2 (A1); InterruptIn left(PTA4); InterruptIn right(PTC6); #include "FXOS8700.h" FXOS8700 acc(PTD9, PTD8); FXOS8700 mag(PTD9, PTD8); #include "C12832.h" C12832 lcd(D11, D13, D12, D7, D10); #include "DA7212.h" #include "FrdmI2s.h" #define SAMPLERATE 32000 #include "sinelookup.h" //DA7212 codec(I2C_SDA, I2C_SCL); //TLV320 codec(I2C_SDA, I2C_SCL); FrdmI2s i2s(PTC6,PTC1, PTE11, PTE12,TRANSMIT); uint16_t phase_l; uint16_t phase_r; int minibuf[16]; unsigned short skipper; unsigned short volume; //float phase_kill; //extern "C" void HardFault_Handler() //{ // error("Hard Fault!\n"); //} void play(void) { int to_write = i2s.get_fifo_limit() - (i2s.fifo_points()); for(int i = 0; i < to_write; i+=2) { minibuf[i] = (int)sine16lookup[(SINE16LENGTH - 1) &( phase_l+skipper)]; minibuf[i+1] = (int)sine16lookup[(SINE16LENGTH - 1) & (phase_r+skipper)]; } i2s.write(minibuf, to_write); } Serial pc(USBTX,USBRX); /* main */ int main() { pc.baud(115200); skipper = pot1.read_u16() >> 8; volume = pot2.read_u16() >> 10; phase_l = 0; phase_r = 512; int to_write =0; int irq=0; // codec.power(true); // codec.frequency(SAMPLERATE); // codec.wordsize(16); // codec.master(false); // codec.headphone_volume(0.5); // codec.start(); i2s.frequency(SAMPLERATE); i2s.wordsize(16); i2s.stereomono(FrdmI2s::STEREO); i2s.role(FrdmI2s::MASTER); // i2s.attach(&play); i2s.start(); while(1) { pc.printf("."); wait_ms(50); // skipper = pot1.read_u16() >> 8; // volume = pot2.read_u16() >> 10; // 6-bit unsigned int // codec.headphone_volume((int)(volume)); lcd.locate(0,3); lcd.printf("%08X",I2S0->TCSR); I2S0->TCSR |= I2S_TCSR_FEF(1); // lcd.printf("Volume: %+03d", (volume - 57)); // lcd.locate(0,15); // lcd.printf("Skipper: %04d", skipper); irq = (I2S0->TCSR &I2S_TCSR_FEF_MASK) >> I2S_TCSR_FEF_SHIFT; to_write = i2s.get_fifo_limit() - (i2s.fifo_level()); pc.printf("%d, %d\r",irq,to_write); for(int j=0;j<to_write ;j++){ I2S0->TDR[0] = 0x55AA; } } }