我最初从 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