Part Number:INA238Other Parts Discussed in Thread: SYSCONFIG
1、涉及到的寄存器有SHUNT_CAL寄存器,写进去的值0x08CA,读到的值为0x084A;更换值,也会跟着变,但是不一致;
2、温度限制寄存器,写进去的值0x01FA,读到的值为0x00FA;更换值,也会跟着变,但是不一致。
3、芯片ID读取到的值与其他的寄存器的数据顺序是反的。
Alice:
您好,
“芯片ID读取到的值与其他的寄存器的数据顺序是反的。”
——-请参考数据手册“图 7-7”和 “图 7-8”,数据读写是高位在前。
请参考下面帖子,上拉电阻对I2C通讯的影响。
(+) INA237: 寄存器读取值与手册中不匹配 – 放大器论坛 – 放大器 – E2E 设计支持 (ti.com)
使用SysConfig工具可以帮助生成INA238的驱动代码: SysConfig (ti.com)
,
user6296334:
您好,谢谢回复
是这样,参照图7-7和图7-8读取的芯片ID的寄存器内容是正确的,但是我现在遇到的问题是,以这种方式获取的其他寄存器的值是反掉的,所以不知道问题在那里,ID的寄存器读取和其他寄存器的读取顺序是反掉的。比如: INA238_writeReg(sensor, INA238_adc_config_register, sensor->adcConfigRegister);写入的数值为0xFB68,根据高位在前,低位在后,回读的数据为0x68FB.芯片ID读取的为0x2381,相同的方式,读取到的寄存器却是反掉的,采用的是相同的读取函数。
取值不匹配的问题参考过以上文章,改过IIC上拉电阻,没有作用。当前采用的是4.7K,该总线上有其他IIC从站芯片,可以正常通信。
INA238的SHUNT_CAL寄存器和TEMPERATURE_LIMIT寄存器是主要错误的寄存器,回读的数据存在单字节错误。其他的配置寄存器没有任何问题。
母线电压/电流/温度的读取数据是错误的。而且存在不同的电压,读取的数据一直不变的问题。
,
user6296334:
当前代码是通过官网SysCongfig生成的。
,
Alice:
您好,
如果仅仅是高低字节反了,就是写入代码发送时顺序错了。
因为芯片ID可以正确读取,说明读程序是正确的。
如果写入的数据与读出的数据不一样,还要检查I2C的写时序,在写的过程中是否都有ACK。
或者您用示波器实际监测一下SDA线上的值。
,
user6296334:
非常感谢
测试正确了,多个从站有不同的通信方式,造成了数据混乱。