Part Number:TLV320ADCX140SW-DRIVERSOther Parts Discussed in Thread:TLV320ADC6140
I use 4 analog microphones through differential input, but SDOUT has no data, I checked the registers and found that the 0x76 register shows that my chip is not working properly, do I need to turn on any switches?
Thanks
Kailyn Chen:
您好,0x76 这里读取的值为0x00,说明ADC和PDM的所有通道都power down了。
您需要通过寄存器0x75 bit6配置为1将其power up。
,
Harun Chen:
Hi Kailyn:
感谢你的支持! 我已经尝试过把寄存器0x75设置为0xE0, 但SDOUT依然没有任何数据. 以下是我所尝试过的更多信息.
1. 当我使用Linux动态加载该驱动时, 我通过逻辑分析仪抓取了I2C数据如下:
——-
98 01 01
98 02 81
98 21 00
98 73 C0
98 74 C0
98 75 E0
98 76 99 00 // 读数据
98 77 99 C0 // 读数据
98 75 00
98 07 70
98 75 E0
——-
按照文档要求, 我重点对寄存器0x73, 0x74, 0x75进行了初始化. 为了验证问题出现在哪里, 我在初始化完成这几个寄存器读取了寄存器0x76值为0x00, 表明没有任何通道被使能.
2. 然后我使用arecord工具进行录音时, 逻辑分析仪抓取了I2C数据如下:
——-
98 75 00
98 75 E0
98 15 99 FF // 读数据
98 76 99 00 // 读数据
98 77 99 C0 // 读数据
——-
我同时抓取了I2S的波形, 该时钟由主控提供, TLV320ADC6140为从设备.
BCLK: 3.072MHz
FSYNC: 48KHz
SDOUT: 出现一些不规律杂波, 软件解读数据都为0xFFFFFFFF
3. 为了进一步确认问题, 我看到寄存器0x15能做PLL的检查, 我不确定作为TLV320ADC6140作为从设备时该寄存器值是否有效, 但我读出来的值(0xFF)不是我的预期值. 查询datasheet可知该值表示Invalid sample rate和invalid ratio.
能请您帮我分析一下我的问题出在哪里吗?
,
Kailyn Chen:
您好,时序中写完寄存器0X15之后收到ACK信号,然后应该是发送一个stop 命令,然后再restart+slave address+read + register data。
所以我看时序里,我红色标注的这里,好像是不满足stop的要求,当clock为高时,data由低变高为stop 命令。我怀疑是这里的问题导致读取的值为0XFF。