最近在用STM32调试读取ADS7924,在读取寄存器测试中。发现ADS7924经常没有响应ACK导致读写失败。
这是我的读写流程
while (1)
{
写ADS7924 0x0A寄存器 0x5A;
读ADS7924 0x0A寄存器;
延时100ms;
}
我使用逻辑分析仪和示波器抓取了波形,STM32发的波形都满足手册里面的读写Timing Diagram,造成没有acknowledge的原因可能有哪些?下面分别是正常波形和异常波形,
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
ADS7924不返回ACK,或者是I2C时序不对,或者是命令无法正确解析。
现在用的fSCL频率是多少?
I2C上拉电阻是多大?(数据手册Figure 57)通常来说,频率越高,上拉电阻相应减小。
您好,
ADC板载的I2C总线上还挂有其他芯片,如果这些芯片没用,请断开连接。
否则,需要通过器件地址区分,以免总线冲突。
另外,MCU板与ADC板共地,还有一种可能是I2C外接引线有干扰,可缩短I2C引线,或使用屏蔽线。