完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
主机给从机提供MCLK = 24.576MHz,(GPIO1管脚复用为MCLK input)BCLK= 3.072MHz,fs = 48kHz*/
void ADC_5140_Init(uint8_t tlv5140_addr) { I2C_Write(tlv5140_addr,ADCX140_SW_RESET,0x01); /* Reset */ I2C_Write(tlv5140_addr,ADCX140_PAGE_SELECT,0x00); /* page 0 */ I2C_Write(tlv5140_addr,ADCX140_SLEEP_CFG,0x81); /* Debice is not sleep mode */ I2C_Write(tlv5140_addr,ADCX140_SHDN_CFG,0x05); /* */ I2C_Write(tlv5140_addr,ADCX140_ASI_CFG0,0x60); /* I2S mode ,24bit*/ I2C_Write(tlv5140_addr,ADCX140_PWR_CFG,0xe0); /* power up PLL */ // I2C_Write(tlv5140_addr,ADCX140_MST_CFG0,0x60); /* */ // I2C_Write(tlv5140_addr,ADCX140_MST_CFG1,0x44); I2C_Write(tlv5140_addr,ADCX140_CLK_SRC,0x58); /* */ I2C_Write(tlv5140_addr,ADCX140_GPIO_CFG0,0xa6); /* GPIO1 provide MCLK = 24.516MHz*/ I2C_Write(tlv5140_addr,ADCX140_ASI_CH1,0x00); /* I2S mode*/ I2C_Write(tlv5140_addr,ADCX140_CH1_CFG0,0x04); /* Analog single-ended input for channel 1 */ I2C_Write(tlv5140_addr,ADCX140_CH1_CFG1,0x28); /* input 40dB,step 1dB*/ I2C_Write(tlv5140_addr,ADCX140_CH1_CFG2,0xff); /* output 27dB, setp -0.5dB*/ I2C_Write(tlv5140_addr,ADCX140_ASI_CH2,0x00); /* I2Smode */ I2C_Write(tlv5140_addr,ADCX140_CH2_CFG0,0x04); /* channel2 */ I2C_Write(tlv5140_addr,ADCX140_CH2_CFG1,0x28); I2C_Write(tlv5140_addr,ADCX140_CH2_CFG2,0xff); I2C_Write(tlv5140_addr,ADCX140_ASI_CH3,0x02); /* I2Smode */ I2C_Write(tlv5140_addr,ADCX140_CH3_CFG0,0x04); /* channel3 */ I2C_Write(tlv5140_addr,ADCX140_CH3_CFG1,0x28); I2C_Write(tlv5140_addr,ADCX140_CH3_CFG2,0xff); I2C_Write(tlv5140_addr,ADCX140_IN_CH_EN,0xe0); /* channel1 、channel2 channel3 input en */ I2C_Write(tlv5140_addr,ADCX140_ASI_OUT_CH_EN,0xe0); /* channel1 、channel2 channel3 output en */ } |
|
相关推荐
2个回答
|
|
您可以实测一下MCLK、BCLK、FSYNC吗
必须避免时钟输入上的逻辑电平故障或其他噪声,故障可能会触发时钟错误,从而关闭ASI,可以在输出驱动器附近添加一些串联电阻(10-33Ω)来保持MCLK输入信号尽可能干净 |
|
|
|
要解决TLV320ADC5140作为I2S从机无法正常工作的问题,我们需要检查以下几个方面:
1. 确认硬件连接是否正确: 确保TLV320ADC5140的MCLK、BCLK、LRCLK和DATA接口正确连接到主机。检查GPIO1管脚是否正确复用为MCLK输入。 2. 检查I2C通信: 确保I2C通信正常,包括I2C地址、时钟速率等。可以使用I2C扫描工具检查设备是否被正确识别。 3. 检查初始化代码: 检查初始化代码是否正确配置了TLV320ADC5140的寄存器。以下是一些可能需要检查的寄存器设置: - ADCX140_PAGE_SELECT:确保设置为正确的页面(例如0x00)。 - ADCX140_SLEEP_CFG:确保设备不在睡眠模式(例如0x81)。 - ADCX140_SHDN_CFG:确保设备不在关闭模式(例如0x05)。 - ADCX140_ASI_CFG0:确保设置了正确的I2S模式(例如0x60)。 - ADCX140_ASI_FORMAT:确保设置了正确的数据格式(例如0x00)。 - ADCX140_ASI_CLOCK:确保设置了正确的时钟设置(例如0x01)。 4. 检查时钟设置: 确保MCLK、BCLK和fs的设置正确。在您的例子中,MCLK = 24.576MHz,BCLK = 3.072MHz,fs = 48kHz。检查这些值是否满足TLV320ADC5140的要求。 5. 检查数据格式: 确保TLV320ADC5140的数据格式与主机的数据格式相匹配。例如,如果主机发送的是16位数据,TLV320ADC5140也需要配置为16位数据。 6. 检查LRCLK: 确保LRCLK信号正确连接到TLV320ADC5140。LRCLK信号用于同步I2S数据流。 7. 检查DATA接口: 确保DATA接口正确连接到TLV320ADC5140。DATA接口用于传输I2S数据。 如果在检查以上方面后仍然无法解决问题,可以尝试以下步骤: 1. 使用示波器检查MCLK、BCLK和LRCLK信号的波形,确保它们稳定且符合规格要求。 2. 使用逻辑分析仪检查I2S数据流,确保数据正确传输。 3. 尝试使用不同的I2C地址或时钟速率。 4. 尝试使用不同的MCLK、BCLK和fs设置。 5. 检查TLV320ADC5140的数据手册,确保所有寄存器设置正确。 通过以上步骤,您应该能够找到并解决TLV320ADC5140作为I2S从机无法正常工作的问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
334 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
773 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1126 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
56浏览 29评论
125浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
251浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
200浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
56浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:45 , Processed in 0.977358 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号