主题中讨论的其他器件: INA228、 TI-SCB、 SysConfig
您好!
INA238到处都是缺货、但我确实需要它、并发现有人在 AliveXpress 上销售它。 我购买了它并测试了2个器件、结果相同。
我从头开始编写一个驱动程序、因此可能我犯了一个错误。 我使用逻辑分析仪记录了 I2C 事务、请找到以下日志文件:
写入0x45 ACK 数据:0x00 0x80 0x00
写入0x45 ACK 数据:0x3E
读取0x45 ACK 数据:0x54 0x49
写入0x45 ACK 数据:0x3F
读取0x45 ACK 数据:0x22 0x81
写入0x45 ACK 数据:0x00 0x00 0x10
写入0x45 ACK 数据:0x00
读取0x45 ACK 数据:0x00 0x00
写入0x45 ACK 数据:0x02 0x27 0xC0
写入0x45 ACK 数据:0x02
读取0x45 ACK 数据:0x27 0xC0
写入0x45 ACK 数据:0x01 0xF4 0x92
写入0x45 ACK 数据:0x01
读取0x45 ACK 数据:0xf4 0x92
写入0x45 ACK 数据:0x06
读取0x45 ACK 数据:0x00 0x00
写入0x45 ACK 数据:0x05
读取0x45 ACK 数据:0x00 0x00
写入0x45 ACK 数据:0x0B
读取0x45 ACK 数据:0x00 0x00
如您所见、我首先通过在配置寄存器中写入0x8000来重新启动器件。 然后我可以成功读取公司 ID 寄存器中的"TI"、但第一个奇怪的回答是下一个、我应该读取0x2381或0x2380、但我正在读取0x2281 (不过这是另一个 TI 参考)。
然后、我将0x10写入配置寄存器、以将刻度范围设置为40mV。 然后、我将读取同一个寄存器、得到0x00。
然后、我将0x27c0写入 分流校准 寄存器、并读回0x27c0、因此这里的一切都正常。
然后、我将0xF492写入 ADC 配置 寄存器、并读回0xF492、同样、在这里可以。
但随后、我将读取总线电压寄存器(我在其上插入了3V 电源)和温度寄存器、但两者都得到0x0000。
最后、我将读取 DIAG_ALRT 寄存器、当我应该读取0x1时获得0x0。 0x0表示"在器件调整存储器空间中检测到校验和错误。"
我确认、我在2个不同的定制板上焊接了2个不同的装置、结果完全相同。 如果是假的、我不应该读取任何寄存器? 您对此问题有什么想法吗?
感谢您的帮助、
Arthur
