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.

[参考译文] BQ76PL455EVM:BQ板和Arduino Mega模块之间的通信

Guru**** 2411970 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/634497/bq76pl455evm-communicating-between-the-bq-board-and-an-arduino-mega-module

部件号:BQ76PL455EVM

您好,

我计划将Arduino Mega用作BQ76PL455EVM 评估板(连接到13单元系列字符串)的微控制器。 以前是否进行过此操作?

我可以安装Arduino USB-A主机扩展板以将BQ板连接到Arduino,然后使用Arduino的USB-B端口将其连接到我的笔记本电脑。 但在这之后,我不太确定如何在Arduino和BQ板之间进行通信。

目标是能够将字符串信息(13个电池中每个电池的电压,温度以电压形式从连接到BQ板的8个热敏电阻发送)发送到Arduino,然后发送到笔记本电脑。

任何建议都很棒!

此致,

克利须那

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

    只要您的MCU具有可与我们的波特率选项(125k,250k,500k或1M)之一匹配的UART外设。 您还需要两个GPIO用于唤醒和nFault。

    在pl455的技术文档选项卡下,您将找到TMS570的示例软件和软件设计参考。 数据表中还详细介绍了与我们部件通信的UART协议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,David:

    感谢您的回复。 我对电池管理的这一方面很陌生,所以需要一些时间才能理解。 我稍后会回到这个主题。 目前,我只是在使用GUI发送十六进制命令时遇到一些问题。 我将就此开始一个新的话题。

    此致,

    Muthu

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

    我强烈建议您通读上述文档以及数据表的UART协议部分。 这将帮助您了解如何创建正确的十六进制数据包。

    如果您有任何特定的命令,例如,我可以提供帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    您好,David:

    我现在对十六进制命令有了很好的了解,并且可以使用GUI与主板进行有效的通信。 现在,我尝试使用Arduino Mega执行同样的操作。 我已将5V,GND,TX1,RX1引脚连接到EVM上的正确引脚。 EVM串联连接到13个锂离子电池组。

    我要发送的十六进制消息是:81 00 22 20 28 84,根据SLVA617A文档,它是电压和温度辅助测量的请求。

    我整理了一个简单的Arduino代码(随附),但在串行监视器上没有响应。

    1)使用微控制器时,基本上是向EVM发送请求并显示EVM板的响应。 是否必须先在唤醒引脚上发送唤醒信号?

    2)是否有关于示例代码的其他文档? SLVA635文档仅提及如何在CCS上打开代码。 我已经这样做了,但我该如何开始呢? 我在CCS示例代码的任何文件夹中都找不到介绍指南或任何解释。

    此致,

    Krishnae2e.ti.com/.../ti-message-code.txt



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

    您好,David:

    我现在了解了如何使用Arduino Mega打开EVM板。 我已将EVM板的唤醒,nFault,TX,RX,5V和GND引脚连接到Arduino上的相关引脚。 在Arduino上使用Serial1.Read()从EVM读取时,如果键入Serial1.Read(),HEX,则会收到响应"-1"或"FFFFFFFFFFFFF"。

    即使我将任何十六进制命令发送到主板,然后从主板上读取,我也会得到相同的响应。 我是否需要将库从CCS示例代码导入到我的Arduino shell? 我未能找到有关示例代码的明确介绍性文档。

    我在这里的主要目标是在输入请求时能够对电池电压和温度进行采样。 否则,我想让主板告诉我是否存在UV,OV或高温故障,以便Arduino随后可以切断与充电器或负载的连接。

    此致,

    克利须那

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

    我建议在TX/RX引脚上放置一个逻辑分析器,以查看正在发生的情况。

    我还认为您可能误读了行-寄存器0x22已保留。 尝试将其更改为0x02,以写入命令寄存器(控制ADC)。

    请确保先执行“样本和存储”值,否则将读取无效数据(我猜可能是空寄存器中的0)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,David:

    感谢你的帮助。 我现在对系统有了更好的了解。 我可以从Arduino Mega向主板发送消息并接收响应。

    我可以发送消息:

    94 00 03 1F FF 00 E7 DD ...(选择13单元和8个AUX温度传感器)

    ...81 00 02 20 28 84 (请求单元格和AUX值)

    接收我的13个电池和8个温度传感器的电压的十六进制值串。 我的TX/RX端口连接到Arduino Mega上的串行通信(分别为RX3/TX3)。 唤醒和nFAULT引脚连接到Mega上的两个不同的数字引脚。

    如何读取错误消息? 检测到故障时,nFAULT针脚是否应该变高? 我正在发送以下消息:

    92 00 90 66 66 12 7A        (将过压故障设置为2 V作为测试)

    我的所有单元当前均为3 V。但nFAULT未转高,BQ的TX引脚未传输OV故障消息(这将如何显示为十六进制字符串?)

    此致,

    克利须那  

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

    您好,David:

    我能否获得一些有关错误消息的帮助(详见我之前的消息)?  

    这是我最后需要配置的内容。 然后,我可以使用Arduino关闭各种开关,以防止过度充电/过度放电。

    此致,

    克利须那

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

    FAULT_N是一个有效的低信号。 想象如下:

    FAULT_N (无故障)为TRUE,针脚输出为逻辑1或5V

    FAULT_N (无故障)为FALSE,针脚输出为逻辑0或0V。

    Fault_N针脚是微控制器中断,用于发出pl455检测到故障的信号。 MCU有责任读取故障寄存器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最后一条消息中的两个示例均显示(无故障)。 您能澄清一下吗?

    您的意思是:

    FAULT_N (无故障)为TRUE,针脚输出为逻辑1或5V

    FAULT_N (检测到故障)为FALSE,针脚输出为逻辑0或0V。  

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

    你好,Muthu,

    您回答正确。  

    (无故障)旨在  澄清Fault_N引脚代表的含义。  我对措辞不当表示歉意。

    但是,您的解释是正确的。

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

    您好,David:

    感谢您迄今为止的耐心等待,我想我几乎就在那里了。 我仍然无法从nFAULT引脚获得正确的响应。 这是我正在发送的消息:

    {0x91,0x00,0x3D,0x00,0x3C, 0x6C                    ,// 2.2 1  配置初始采样延迟

     0x91,0x00,0x3E,0xBC,0x3D, 0x2D                   ,// 2.2 2  配置电压和内部采样周期

     0x91,0x00,0x07,0x00,0x2E, 0xCC                    ,// 2.2 3  配置过采样率

     0x91,0x00,0x51,0x38,0x10, 0xBE                     ,// 2.2 4  清除并检查故障-系统状态寄存器故障标志

     0x92,0x00,0x52,0xFF,0xC0, 0x59,0xAC,             //         清除并检查故障-摘要标志

     0x94,0x00,0x03,0x1F,0xFF, 0xFF,0x00,0xE7,0xDD ,// 2.2 5  选择单个模块上的单元和通道数

     0x92,0x00,0x90,0x66,0x66, 0x12,0x7A};                      // 2.2 6  将OV设置为2 V

     0x81,0x00,0x02,0x20,0x28, 0x84};                  //         请求电压和辅助温度数据

    我将OV限制设置为2 V作为测试。 我所有的细胞都在3.5 V

    根据我们之前的对话,默认情况下nFAULT引脚应较高。 但在我发送此消息后,nFAULT应变低,因为存在OV故障。

    但是,nFAULT在整个时间都处于低位。 这似乎是默认设置。 我缺少什么?

    此致,

    克利须那


                    

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