https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1078564/tlv320dac3101-audio-forum
部件号:TLV320DAC3101大家好,我和我的 Roman 正在与 ESP32和 TVl320DAC3101合作开发定制 PCB。 我正在使用带有 ESP32 Dev Modul 板的 Arduino 编程。 我可以使用 I2C 设置和读取所有寄存器。 使用 I2S,我正在发送 Sounddata。
我的问题是:
正确设置所有寄存器后,我发出大约0.5秒的蜂鸣音。 我可以听到哔声,但只要我想播放 Flash 中的 MP3文件(ESP32可以读取和播放),DAC 就不会让任何东西发出。
我正在阅读第1页的寄存器42/43,我可以看到 D0不是1,即使在播放声音文件之前它是1。 这是我的一次工作,但声音被撕裂了,你无法理解一个词。
这是我的主要:
这是启动 DAC 的功能:
Serial.println("Starting Setup"); delay(10); setRegister(0, 1, 1); // Soft reset delay(10); // 10ms startup delay setRegister(0,0x04,0x07);// PLL_CLKIN = BCLK, CODEC_CLKIN = PLL_CLK setRegister(0,0x06,0x20);// J = 32 setRegister(0,0x05,0x92);//Turn PPL Driver on, P = 1, R = 2 delay(100); setRegister(0,0x0b,0x88);// DAC NDAC divider = Powered Up, DAC NDAC_VAL = 8 setRegister(0,0x0C,0x82);// DAC MDAC divider = Powered Up, DAC MDAC_VAL = 2 setRegister(0,0x0D,0x00);// DAC DOSR_VAL MSB = 0 setRegister(0,0x0E,0x80);// DAC DOSR_VAL LSB = 128 setRegister(0,0x1B,0x00);// CODEC Interface = I2S, Word Length = 16 Bit, BLCK = INPUT, WCLK = Input setRegister(0,0x1C,0x00);// Data-Slot Offset Programmability, Offset = 0 BCLK setRegister(0,0x3C,0x19);// Set Processing BLock = PCB_P25 setRegister(8,0x01,0x04); // DAC Coefficient RAM Control= Adaptive filtering enabled in DAC processing block setRegister(0,0x74,0x00);//VOlume Control Pin disabled setRegister(1,0x21,0x4E);//De-pop, Power on = 800 ms, Step time = 4 ms setRegister(1,0x23,0x44);//Set DACL->Routed to Left Channel and DACR-> Routed to Right Channel /*Set Headphone gain */ setRegister(1,0x28,0x0e); setRegister(1,0x29,0x0e); /*Set Speaker gain */ setRegister(1,0x2a,0x04); setRegister(1,0x2b,0x04); /*Power up HPL and HPR */ setRegister(1,0x1F,0xC6); /*Power up Speaker */ setRegister(1,0x20,0xC6); /*Set Speaker Volume */ setRegister(1,0x26,0x80); setRegister(1,0x27,0x80); /*Waiting Time*/ delay(1000); setRegister(0,0x3f,0xd6);// Power UP DAC for left and Right Channels setRegister(0,0x41,0x00);//Set LEft Gain setRegister(0,0x42,0x00);// Set Right gain setRegister(0,0x40,0x00);// Unmute the digital Volume of the DAC
这是串行监视器上的输出:
15:03:39.272 -> initialization done. 15:03:39.272 -> Starting Setup 15:03:40.405 -> Finished Setup 15:03:40.405 -> 0xe8 15:03:40.405 -> 0xe8 15:03:40.405 -> 0x05 15:03:40.405 -> 0x05 15:03:40.405 -> ------------------------------------------------------------ 15:03:40.452 -> info: PSRAM not found, inputBufferSize: 6399 bytes 15:03:40.452 -> [ 1392][V][ssl_client.cpp:311] stop_ssl_socket(): Cleaning SSL connection. 15:03:40.547 -> info: buffers freed, free Heap: 274144 bytes 15:03:40.594 -> info: Reading file: "/obiwankechnobli.mp3" 15:03:40.641 -> info: MP3Decoder has been initialized, free Heap: 250480 bytes 15:03:40.641 -> info: stream ready 15:03:40.641 -> info: Content-Length: 492032 15:03:40.641 -> info: ID3 framesSize: 9291 15:03:41.628 -> [ 2603][E][TLV320DAC3101.cpp:182] getRegister(): Timed out 15:03:41.628 -> Interrupt Flags: 0x00 15:03:41.628 -> DAC Interrupt Flags: 0x00 15:03:41.628 -> DAC Flag Register: 0x88 15:03:41.628 -> SPR Driver: 0x04 15:03:41.628 -> SPL Driver: 0x04 15:03:41.675 -> After reinitialising SPR Driver: 0x04 15:03:41.675 -> After reinitialising SPL Driver: 0x04 15:03:41.675 -> info: ID3 version: 2.4 15:03:41.675 -> info: ID3 normal frames 15:03:41.721 -> info: Audio-Length: 482741 15:03:41.721 -> info: syncword found at pos 0 15:03:41.721 -> info: Channels: 2 15:03:41.721 -> info: SampleRate: 44100 15:03:41.721 -> info: BitsPerSample: 16 15:03:41.721 -> Interrupt Flags: 0x00 15:03:41.721 -> DAC Interrupt Flags: 0x00 15:03:41.721 -> DAC Flag Register: 0x88 15:03:41.721 -> SPR Driver: 0x04 15:03:41.721 -> SPL Driver: 0x04 15:03:41.721 -> After reinitialising SPR Driver: 0x04 15:03:41.721 -> After reinitialising SPL Driver: 0x04 15:03:41.768 -> info: BitRate: 128000 15:04:12.098 -> info: End of file "obiwankechnobli.mp3"
这是我的 DAC 的 Scheema: