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.

[参考译文] INA228:I2C 代码在开发板上工作、但在定制板上不工作

Guru**** 1101210 points
Other Parts Discussed in Thread: INA228
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1337162/ina228-my-i2c-code-works-on-the-dev-board-but-doesnt-on-my-custom-board

器件型号:INA228

我最初从 Adafruit 带来一个使用 INA228芯片的电流传感器。 在遇到一些挑战后、我设法实现了 I2C 通信、并能够从寄存器中读取数据。 我清理了代码、制作了一个包含16个此类传感器的定制电路板。  

我只将一个 INA 228传感器焊接在定制电路板上、并尝试查看是否可以使用相同的代码读取寄存器。 出于某种原因、我的代码在 Adafruit 传感器上工作、但在我的定制板上不工作。 不知道为什么。 我使用逻辑分析仪研究了 I2C 线路的范围。 我已经将捕获信息附加到该消息中、并且还在下面列出了要传输的数据。 有人能解释一下我在定制电路板上遗漏了什么吗?  

工作数据流:Start -> 0x40 Write (从器件地址)-> ACK -> 0x06 (Temp 寄存器)-> Stop || Start -> 0x40 Read -> ACK -> 0x0B -> ACK -> 0xC8 -> NAK -> Stop

这里清楚地表明、来自寄存器的数据为0x0B、0xC8。 这转化为大约23.56 C。这是可行的。 没有问题(我认为)。

不工作的数据流:Start -> 0x40 Write -> ACK -> Stop || Start -> 0x40 Read -> ACK -> 0x00 -> ACK -> NACK -> Stop  

||这里代表一个小停顿。  

使用 相同代码时、为什么主器件不在定制电路板情况下写入0x06 (寄存器至 READ)? SDA 线为什么始终为低电平? 这是硬件问题还是固件问题?  

无法正常工作屏幕截图:

工作屏幕截图:

INA 228电路:

Adafruit 传感器: www.adafruit.com/.../5832

注:
工作板有4.7K 的上拉电阻器。 我尝试了4.7k、24k 和2.4K 上拉电阻器。 到目前为止,他们都没有工作。 不确定它是否甚至是上拉电阻器。  

谢谢!  

瓦伦 R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在非工作屏幕截图中、主设备决定停止事务。 这可能是软件问题。 但如果不在示波器波形中看到实际波形、就无法确定。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我添加了示波器捕获、信号看起来是不同的。 它看起来有点失真。 我可以直观地看到在示波器捕获中主器件发送了0x06、但逻辑分析仪和从器件没有拾取它。 当它不工作时、总线相对而言更有意义、因为它有16个从站、而不是只有1个从站。 为什么信号会失真? 如何避免这种情况? 这与上拉电阻器有什么关系吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    我将对此进行探讨、明天再与您联系。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在非工作迹线中、上升沿不会到达顶部。 您的上拉电阻太弱、或 I²C Ω 速度过高。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正确、此处是开始调试的好位置。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    上拉电阻器是问题所在。 1.8K 下的时钟上升时间为420ns、4.7K 下的时钟上升时间要高得多。 根据 INA228传感器、上升时间不应超过300ns。 我尝试了1K 上拉电阻、它可以正常工作。 现在的上升时间为235ns、低于限值。 感谢您的帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很高兴它得到了解决!