主题中讨论的其他器件:LAUNCHXL2-TMS57012、
您好、TI 社区:
我和我的团队正在使用 LAUNCHXL2-TMS57012、BQ79616子板和 BQ79600通信板开发 BMS 系统。
我们根据 TMS570的示例代码进行测试、该代码可以与 BQ79600和 BQ79616连接、但在从 BQ79616读取和写入寄存器时会遇到一些问题。
我们注意到、我们可能会误解寄存器映射的工作原理、并希望获得一些帮助来理解示例代码。 读回存储为16位值的电池电压时、示例代码似乎从寄存器映射中注明的位置读回4字节偏移。
```
ReadReg (0、VCELL16_HI+(16-ACTIVECHANNELS)*2、Response_FRAME、ACTIVECHANNELS*2、0、 FRMWRT_STK_R);
…
Uint16 RawData =(RESPONSE _FRAME[boardByteStart+channe+4]<< 8)| RESPONSE FRAME[boardByteStart+channe+5];
```
上述代码片段可以得出正确的信息、但对我们没有意义。 为什么需要从寄存器映射中定义的地址读回电池电压数据4个字节?
通过在0x9处读取和写入 OV_THRESH、我们还发现在尝试环回测试时相同。 当读取先前设置为0x22的 OV_THRESH 时、该命令不会返回相同的数据、并且在响应帧的字节[4]处找到值0x22、而不是0。
```
byte response_frame2[5];
WriteReg (0、OV_THRESH、0x22、1、FRMWRT_STK_W);
…
ReadReg (0、OV_THRESH、Response_frame2、5、0、 FRMWRT_STK_R);
printf ("OV_THRESH %x\t"、response_frame2[4]);//产生0x22
```
我们在这方面有什么错误或误解吗?
非常感谢您提供任何帮助、
谢谢!