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-GUI-SW:bFrame 和 CellSample 中不存储任何内容。

Guru**** 2864540 points

Other Parts Discussed in Thread: HALCOGEN, TMS570LS0432, BQ76PL455EVM-GUI-SW, BQ79616-Q1

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1213975/bq76pl455evm-gui-sw-nothing-is-stored-in-bframe-and-cellsample

主题中讨论的其他器件:TMS570LS0432BQ76PL455A、HALCOGEN、 BQ76PL455EVM-GUI-SW、BQ76PL455A-Q1、 BQ79616-Q1

BQ76PL455EVM-GUI-SW: 该程序在 CCS 中使用 halcogen (微控制器- TMS570LS0432)和 BQ76PL455A 来检测15节串联锂离子电池的每节电芯电压。 程序执行后、bFrame 和 cellSample 中不会存储任何内容。

/*用户代码开始(0)*/
/*用户代码结束*/

/*包含文件*/

#include "sys_common.h"
#include "system.h"

/*用户代码开始(1)*/
#include "Gio.h"
#include "sci.h"
#include "RTI.h"
#include "sys_vim.h"
#include "swi_util.h"

#include "pl455.h"

//#include "pl455.h"

INT UART_RX_RDY = 0;
int rti_timeout = 0;
双电压;
/*用户代码结束*/

/**@fn void main (void)
*@简介应用程序主要功能
*@注意此功能默认为空。
*
*此函数在启动后调用。
*用户可以使用此函数来实施应用程序。
*/

/*用户代码开始(2)*/
/*用户代码结束*/


空 main (void)
{
/*用户代码开始(3)*/
systemInit();
gioInit ();
sciInit();
sciSetBudrate (scilinREG、BAUDRATE);//更改以 Hz 为单位的波特率
rtiInit();
vimInit;

_enable_irq();

WakePL455 ();//切换唤醒信号

CommClear();

CommReset();

//初始化局部变量
Int nSent、nRead、nTopFound = 0;
int nDev_ID=0、nGrp_ID;
字节 bFrame [132];
UINT32 wTemp = 0;
FLOAT CELLSAMPLE[16];
int incCount=0;

/**代码示例
*以下命令序列是 bq76PL455通信示例文档中消息示例的示例。
*每个消息示例都引用了文档中的章节。
*/

//唤醒所有设备
//唤醒音将唤醒已处于关断状态的任何设备,而断电将关闭任何设备
//这已经是唤醒的。 排序唤醒和断电的最少次数将是执行
//通过板覆盖已唤醒或关闭的板的最坏情况组合。

nsent = WriteReg (nDev_ID、12、0x40、1、FRMWRT_SGL_NR); //发出广播 pwrdown 命令
延迟(5);//~5ms
WakePL455();
延迟(5);//~5ms


//屏蔽客户校验和故障位
Nsent = WriteReg (0107、0x8000、2、FRMWRT_ALL_NR); //清除所有故障摘要标志

//清除并检查所有故障
nDev_ID=0;
nsent = WriteReg (nDev_ID、81、0x38、1、FRMWRT_ALL_NR); //清除系统状态寄存器中的故障标志
nsent = WriteReg (nDev_ID、82、0xFFC0、2、FRMWRT_ALL_NR); //清除所有故障摘要标志
//nRead = ReadReg (nDev_ID、81、&wTemp、1、0); // 0ms 超时
//nRead = ReadReg (nDev_ID、82、&wTemp、2、0); // 0ms 超时
(十)

//自动对所有板寻址(第1.2.2节)
// nSent = WriteReg (0、14、0x19、1、FRMWRT_ALL_NR); //设置自动寻址模式
// nSent = WriteReg (0、12、0x08、1、FRMWRT_ALL_NR); //在所有板上进入自动地址模式,对该 ID 的下一次写入将是其地址
nsent = WriteReg (nDev_ID、10、nDev_ID、1、FRMWRT_ALL_NR);


//启用堆叠中所有电路板上的所有通信接口(第1.2.1节)
//nSent = WriteReg (0、16、0x10F8、2、FRMWRT_SGL_NR); //设置通信波特率并启用所有接口

/*更改为应用中使用的最终波特率(由 pl455.h 中的 BAUDRATE 定义设置)。
*到目前为止,所有的通信都在250Kb ,因为 COMM_RESET 在初始时完成
*启动会将 bq76PL455A-Q1 UART 复位为250Kb。 */


/*根据它们在堆栈中的位置适当地设置通信接口,并且
*针对应用程序中使用的波特率(由 pl455.h 中的 BAUDRATE 定义设置)。
*(第1.2.4节)
*/
//仅适用于一个板
nsent = WriteReg (nDev_ID、16、0x1080、2、FRMWRT_ALL_NR); //设置通信波特率,仅使能板载单端通信端口


//配置 AFE (第2.2.1节)


nsent = WriteReg (nDev_ID、60、0x00、1、FRMWRT_SGL_NR); //设置0多路复用延迟
nsent = WriteReg (nDev_ID、61、0x00、1、FRMWRT_SGL_NR); //设置0初始延迟

//配置电压和内部采样周期(第2.2.2节)

nsent = WriteReg (nDev_ID、62、0xCC、1、FRMWRT_SGL_NR); //设置99.92us ADC 采样周期

//配置过采样率(第2.2.3节)

nsent = WriteReg (nDev_ID、7、0x00、1、FRMWRT_SGL_NR); //设置无过采样周期
//屏蔽客户校验和故障位
Nsent = WriteReg (0107、0x8000、2、FRMWRT_ALL_NR); //清除所有故障摘要标志

//清除并检查所有故障

nsent = WriteReg (nDev_ID、82、0xFFC0、2、FRMWRT_ALL_NR); //清除所有故障摘要标志
nsent = WriteReg (nDev_ID、81、0x38、1、FRMWRT_ALL_NR); //清除系统状态寄存器中的故障标志

//选择要采样的电芯和通道数量(第2.2.5.1节)

nsent = WriteReg (nDev_ID、13、0x0F、1、FRMWRT_SGL_NR); //将电池数设置为15
nsent = WriteReg (nDev_ID、3、0x7FFF00C0、4、FRMWRT_SGL_NR); //选择15个呼叫、所有 AUX 通道、选择模拟和数字芯片温度


//在单个电路板上设置电池过压和电池欠压阈值(第2.2.6.1节)
// Vref = 5V
nsent = WriteReg (nDev_ID、144、0xD708、2、FRMWRT_SGL_NR); //设置 OV 阈值= 4.2000V
nsent = WriteReg (nDev_ID、142、0x8CCC、2、FRMWRT_SGL_NR); //设置 UV 阈值= 2.75V

nsent = WriteReg (nDev_ID、123、0x00、1、FRMWRT_SGL_NR); //关闭所有 GPIO 下拉


while (1)
{
//向单板发送样片请求以进行采样并发送结果(第4.2节)
nsent = WriteReg (nDev_ID、2、0x00、1、FRMWRT_SGL_NR); //发送同步采样命令
nsent = WriteReg (nDev_ID、2、0x20、1、FRMWRT_SGL_R); //发送同步采样命令
nsert = WaitRespFrame (bFrame、53、0);//每2个字节25个通道、因此50个字节的数据+数据包头1个字节+ CRC 2个字节= 53个字节、0ms 超时
for (incCount = 1;incCount < 16;incCount ++)
{
//value =(unsigned int) adc_data_ptr->value;
// voltage [incCount-1]=(value/4095)* 3.3;

CellSample[15-incCount]=(bFrame[incCount*2-1]<<8|bFrame[incCount*2])* 0.000076295;
//cell_data[incCount-1].value=(bFrame[incCount*2-1]<<8|bFrame[incCount*2])* 0.000076295;


第41集9.5万人 Lu shi(2000 )- 6.4分



/*用户代码结束*/

/*用户代码开始(4)*/
/*用户代码结束*/

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

    尊敬的 Azim:

    感谢您向我们提供此视频! 我将与我们的团队讨论、详细了解您提供的信息、并会在回来时提出评论/其他问题。

    此致、

    朱莉娅·路易斯

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

    Azim,

    您对此器件的预期是什么? 由于我们推荐新设计改用 bq79616-Q1、因此最近从网站中删除了该选项。 它是具有改进的 FeatureSet 的新一代16S 设备。 请查看设备、因为支持455的设备将非常有限。

    此致、

    泰勒