ADS7924: STM32 IIC读取寄存器没有ACK

Part Number: ADS7924

最近在用STM32调试读取ADS7924,在读取寄存器测试中。发现ADS7924经常没有响应ACK导致读写失败。

这是我的读写流程

while (1) 

{

   写ADS7924 0x0A寄存器 0x5A;

   读ADS7924 0x0A寄存器;

   延时100ms;

}

我使用逻辑分析仪和示波器抓取了波形,STM32发的波形都满足手册里面的读写Timing Diagram,造成没有acknowledge的原因可能有哪些?下面分别是正常波形和异常波形,

  • 感谢您对TI产品的关注!
    关于你的咨询,我们正在确认你的问题,稍后回复您。

  • 您好,

           ADS7924不返回ACK,或者是I2C时序不对,或者是命令无法正确解析。

          现在用的fSCL频率是多少?

          I2C上拉电阻是多大?(数据手册Figure 57)通常来说,频率越高,上拉电阻相应减小。

          ADS7924 2.2 V, 12-Bit, 4-Channel, MicroPOWER Analog-to-Digital Converter With I2C Interface datasheet (Rev. C)

  • 我的频率是100K。上拉电阻是2K。我使用 ADS7924EVM 板和MCU进行测试,并用飞线将它们连接起来。控制芯片的 SDA 和 SCL 连接到 EVM 上 J10 的 SDA 和 SCL。此外,我将两个传感器连接到 EVM 上 J1A 的 CH0 和 CH1。EVM 板上的 VDD 设置为 5V,BVDD 设置为 3.3V。最后,我移除了 EVM 的 RA1 电阻器。另一幅图是硬件连接图。



  • 您好,

           ADC板载的I2C总线上还挂有其他芯片,如果这些芯片没用,请断开连接。

          否则,需要通过器件地址区分,以免总线冲突。

           另外,MCU板与ADC板共地,还有一种可能是I2C外接引线有干扰,可缩短I2C引线,或使用屏蔽线。

  • I2C总线上只有一个芯片,并且两块板子也共地,I2C引线只有10厘米长的杜邦线。接头焊接后还打了胶。
    确认一下,软件层面应该没有什么问题吧?这种情况硬件方面或者干扰或者接触不良等情况的可能性更大?

  • 您好,

          如果使用同样的驱动代码,MCU与ADC具有完整的通讯交互过程,不会怀疑程序方面。

x 出现错误。请重试或与管理员联系。