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.

[参考译文] BQ76PL455A-Q1:解释由&quot 生成的响应帧;读取存储的值"命令

Guru**** 2468460 points
Other Parts Discussed in Thread: TMS570LS0432

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/683512/bq76pl455a-q1-interpreting-response-frame-generated-by-read-stored-values-command

器件型号:BQ76PL455A-Q1
主题中讨论的其他器件:TMS570LS0432BQ76PL455EVM

您好!

我将 BQ76PL455EVM 评估板与通过 UART 连接的 TMS570LS0432控制器搭配使用、用于电池管理系统。 我的通信正常、现在我正在尝试在发送"采样和存储"和"读取存储的值"命令后解释 PL455s 响应帧。 我已将8节电池连接到评估板上的电池通道。

这是我与 PL455芯片通信的部分:

WriteReg (0、3、0xFFFFFFE0、4、FRMWRT_SGL_NR); //选择16节电池、所有 AUX 和温度
写入寄存器(0、2、0、 1、FRMWRT_SGL_NR); //发送同步采样并存储命令
WriteReg (0、2、0x20、1、FRMWRT_SGL_R); //发送读取存储值命令
WaitRespFrame (g_ui8PL455Data、57、0); // 54字节数据+数据包标头+ CRC、0ms 超时 

一切工作正常、我获得了 g_ui8PL455Data[]阵列中存储的响应:

十六进制代码中的值为:
35 11FC 0068 0067 0072 006A 006B 0068 0083 BE0B B783 B170 B3DE C33A B99B C066 C415 FFDB FFDB FFDB FFDB FFDB FFDB FFDB FFDB FFDB FFDB FFDB 818C 64EB 5BC6 71F3

在 PL455s 数据表中、我可以看到第一个字节是响应字节的数量- 1、因此有0x35 + 0x1 = DEC 54响应字节、最后两个字节是 CRC 校验和。 在数据表中、我还发现、PL455以16位值对电池电压进行返调、因为我使用8 x 过采样和平均、这会在14位 ADC 值之外产生两个额外的位。 我找到了四个公式、将电池电压和 AUX 通道电压从16位整数转换为浮点值、单位为伏特:

  • V_CELL =[(2×VREF)/ 65535)×READ_ADC_VALUE
  • V_AUX =[(2×VREF)/ 65535)×READ_ADC_VALUE
  • 内部数字芯片温度°C =(V_ADC–2.287)×131.944
  • 内部模拟芯片温度°C =(V ADC–1.8078)×147.514

但我无法按开关顺序找到电池电压、AUX 电压和温度电压的传输、因此我对接收到的十六进制代码进行了逆向工程、以确定它们在帧中的位置。

以十进制表示的响应帧16位值(忽略帧初始化字节和两个 CRC 字节)为:

  4604      104    103    114     106    107   104    131        //电池16 - 9     (未连接/浮动)                      
48651 46979 45424 46046 49978 47515 49254 50197        //电池8 - 1         (连接3.7V 电池)
65499 65499 65499 65499 65499 65499 65499   65499 65499 65499        // Aux 8 -1            (未连接、仅板载上拉电阻)
33164 25835 23494                                                                       //温度和内部电源电压

由于未连接电池通道16至9、如果我将它们放在上面的公式中、我猜这是前8个数字、在0.01至0.35伏之间浮动一点。 电芯通道8至1可以是48651 至50197的以下8个数字、提供3.7至3.8伏的电压。 接下来的8个数字必须是带有上拉电阻器的辅助通道、因为它们都具有相同的值、可提供4.997伏的电压。 我认为最后3个数字是数字芯片的温度电压(2.53V ^= 32°C)、模拟芯片的温度电压(1.97V ^= 24°C)和1.79V ~= 1.8V 内部数字电源电压。

有人能告诉我在什么位置可以在其数据表中的 PL455s 响应帧中找到电压的顺序吗? 我的建议对吗?

此致
米歇尔

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

    强烈建议将所有未使用的感测引脚短接至最高使用电芯。 如果将 SENSE 引脚保持悬空、则可能会在道路上遇到问题、因为浮动输入是不可预测的。 如果您制造了许多此类电路板、您还可能遇到热插拔问题。

    您对反向工程非常了解。 从 ADC 转换返回的数据将按照与 CHANNELS 寄存器中启用的位相同的顺序返回、从 MSB (CELL16)开始、一直到 LSB (CMD_VMONSEL)。 如果将某个位设置为0、则不会包含该位。

    因此、如果您要启用所有功能、您将获得:

    Cell 16,Cell 15… CELL2、CELL1、AUX8、AUX7、… AUX0、数字芯片温度、模拟芯片温度.... 寄存器下方的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    感谢你的建议。 在我的最终版本中、我将在每块电路板上使用15节电池、并将第16节电池检测引脚短接至最高的电池。
    现在我可以继续编程...

    此致
    米歇尔