Part Number:TAA3020
使用STM32L476RGT6的硬件I2C和SAI1来分别配置TAA3020的寄存器值以及读回I2S数据,寄存器的配置如代码所示。在I2S数据线上有信号以后,再读取0X76寄存器的值为0xC0,0x77寄存器的值为0xE0。现在的问题在于使用HAL_SAI_Receive_DMA(&hsai_BlockA1, (uint8_t *)RXBUF, DATABUFSIZE * 2);函数开启I2S传输,发现I2S返回的数据是杂乱无章的。此时在通道1上接了一个1.0V的电压,我想设置成通道1和通道2都是单端输入且使用标准I2S协议。
I2CWrite(0x07,0x31); HAL_Delay(2); I2CWrite(0x3A,0x80); HAL_Delay(2); I2CWrite(0x13,0x00); HAL_Delay(2); I2CWrite(0x3C,0xBC); HAL_Delay(2); I2CWrite(0x41,0xBC); HAL_Delay(2); I2CWrite(0x73,0xC0); HAL_Delay(2); I2CWrite(0x74,0xC0); HAL_Delay(2); I2CWrite(0x75,0xE0); HAL_Delay(5);
Jie Ba:
Fs是48KHz,BCLK是3.072MHz
,
Taylor:
您好,
已经收到了您的案例,调查需要些时间,感谢您的耐心等待。
,
Taylor:
数据杂乱的原因:时序不匹配,寄存器配置错误,
建议写入后要读取寄存器,确认配置是否成功写入。
另外,信号路径可能未激活,不知道外围电路如何,建议参考官方开发板,开发板还有专用GUI,可以指导配置。
TAA3020EVM-PDK
,
Jie Ba:
我按照官方参考板的说明书上的那段I2C脚本代码的寄存器配置代码,写进去以后再读出来。读出来的数值确实是写入的数据,但奇怪的是,配置完相关寄存器后再去读0x76和0x77的寄存器值,0x76返回0x00,0x77返回0xC0。只有在使用HAL_SAI_Receive_DMA()之后,再去读0x76和0x77的值才会发生变化。寄存器刚配置完的0x76和0x77的值不正确是什么原因呢,外部电路上电时序不对还是有其他原因?
,
Jie Ba:
电路图用的是数据手册上的图8-1
TI中文支持网


