96kHz-16bit USB Audio Output interface with UDA1345 and 24.576MHz Xtal.
Dependencies: I2S USBDevice mbed
Fork of USBAudioPlayback by
Diff: main.cpp
- Revision:
- 6:dc7b32ce4277
- Parent:
- 5:ca2316551f3d
--- a/main.cpp Wed Feb 05 14:31:03 2014 +0000 +++ b/main.cpp Tue Sep 16 23:21:17 2014 +0000 @@ -4,7 +4,7 @@ #include "USBAudio.h" #include "I2S.h" -// frequency: 48 kHz +// frequency: 96 kHz #define FREQ_SPK 96000 #define FREQ_MIC 8000 @@ -24,6 +24,11 @@ I2S i2s(I2S_TRANSMIT, p5, p6, p7); I2S i2srx(I2S_RECEIVE, p8, p29, p15); +//SPI spi(p11, p12, p13); // mosi, miso, sclk +DigitalOut mode(p14); +DigitalOut spiout(p11); +DigitalOut spiclk(p13); + #define CHUNKS 8 int buf_out[LENGTH_AUDIO_PACKET_MIC/sizeof(int)]; @@ -67,7 +72,84 @@ myled = 0; } +void spi_send(int byte) +{ + wait_us(10); + for (int i = 0; i < 8; i++) { + if (byte & (1 << i)) + spiout = 1; + else + spiout = 0; + spiclk = 0; + wait_us(10); + spiclk = 1; + wait_us(10); + } +} + + +void init_uda1345() { + spiclk = 1; + mode = 1; + wait_us(100); + mode = 0; + spi_send(0x16); + mode = 1; + spi_send(0x21); + mode = 0; + spi_send(0x14); + mode = 1; + spi_send(0x84); + mode = 0; + wait_us(10); + mode = 1; + spi_send(0x02); + mode = 0; + wait_us(10); + mode = 1; + spi_send(0xc3); + +#if 0 + spi.format(8, 3); + spi.frequency(100000); + mode = 1; + wait_us(100); + mode = 0; + spi.write(0x68); // 0x16 + wait_us(100); + mode = 1; + wait_us(100); + spi.write(0x84); // 0x21 + wait_us(100); + mode = 0; + spi.write(0x28); // 0x14 + wait_us(100); + mode = 1; + wait_us(100); + spi.write(0x21); // 0x84 + wait_us(100); + mode = 0; + //spi.write(0x28); // 0x14 + wait_us(100); + mode = 1; + wait_us(100); + spi.write(0x40); // 0x02 + wait_us(100); + mode = 0; + //spi.write(0x28); // 0x14 + wait_us(100); + mode = 1; + wait_us(100); + spi.write(0xc3); // 0xc3 + //wait_us(100); + //mode = 0; + //wait_us(100); + //mode = 1; +#endif +} + int main() { + init_uda1345(); i2srx.masterslave(I2S_SLAVE); i2srx.frequency(96000); i2srx.start();