主题中讨论的其他部件: BQ76PL455-Q1
您好,David:
我们使用bq76pl455a-Q1制造了定制PCB。 我能够为OV,UV,比较器和辅助通道设置正确的阈值。 但始终存在芯片故障和系统故障。
在系统故障中:sys_Reset精度(位-7)
芯片故障: USER_CKSUM_ERR (位-15)
此错误始终存在,由于此原因,n故障引脚始终保持"低"状态。
你能帮我解决这个问题吗?
谢谢你
Ritul Shah
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.
您好,David:
我们使用bq76pl455a-Q1制造了定制PCB。 我能够为OV,UV,比较器和辅助通道设置正确的阈值。 但始终存在芯片故障和系统故障。
在系统故障中:sys_Reset精度(位-7)
芯片故障: USER_CKSUM_ERR (位-15)
此错误始终存在,由于此原因,n故障引脚始终保持"低"状态。
你能帮我解决这个问题吗?
谢谢你
Ritul Shah
您好,David:
正如您提到的两个解决方案,
1.要将CSUM_RSLT寄存器值复制到CSUM寄存器中,我无法理解如何执行此任务?
2.屏蔽校验和错误故障。 我尝试通过屏蔽数据表中的寄存器编号107来实现这一目的。 但此命令不起作用
{
nsent = WriteReg (0107,0x8000,2,FRMWRT_SGL_NR); //用户校验和错误掩码
delay_ms(5);
}
这一问题还有什么进一步的解决办法?
正在等待您的回复。 我们在"星期六"工作,因此如果可能,请今天回答此帖子,以便我在星期六尝试。
谢谢
Ritul Shah
您好,David:
我尝试了你所展示的方法。
请在下面查找代码:
nread = ReadReg (nDev_ID,244,&chksum,4,0); //读取ChecksumRslt错误(寄存器编号:244,数据表)
我在寄存器244和240上得到相同的值,但芯片故障错误仍然存在。
可能的问题是什么?
请帮我解决。
您好,David:
我正在使用单个设备。
我已按照您的上述说明复制并粘贴校验和。 它运行良好,消除了芯片故障。
只有当我连续将校验和写入USERCHECKSUM时,这种方法才有效。 (在while循环中使用)。 在初始化过程中,如果我执行一次,它将不起作用。
此外,清除芯片故障也产生了新的问题。 为我未使用的单元生成欠压比较器故障(单元编号 14,15,16)。 此错误以前从未出现过。 [我已正确选择要使用的频道。]
请告诉我:
1.在初始化过程中,应该将校验和读写放置在何处,这样我就不必连续触发该功能?
2.如果我不执行校验和复制粘贴,则不存在欠压比较器故障。 如何消除欠压比较器故障?
您好,David:
我将尝试在复制粘贴校验和后屏蔽故障。
我没有使用GUI。 我已经开发了具有bq76pl455-Q1的PCB和微控制器。 我正在读取故障,将其发送给控制器并在Putty上查看。
请查找我的设置的附加视频。 希望它能帮助您了解我们的问题。
e2e.ti.com/.../VID_5F00_2018.0317万_5F00_101222.rar</s>10.1222万
您好,David:
我正面临比较器欠压故障的问题,这妨碍了我运行代码和测试系统。
以前我遇到了校验和错误的问题,然后按照你的建议,我存储了内部校验和并将其写入USERCHECKSUM。 这解决了校验和问题,但为我尚未选择的通道生成了比较器欠压故障。
我的系统信道:13.
我遵循了TI软件设计参考应用手册中的配置方法。
请在下面找到我的代码片段。
nsent = WriteReg (nDev_ID,16,0x1080,2,FRMWRT_SGL_NR); //将通信波特率设置为250KBaud
nsent = WriteReg (nDev_ID,15,0x80,1,FRMWRT_SGL_NR); //根据数据表的标准配置
nsent = WriteReg (nDev_ID,14,0x18,1,FRMWRT_SGL_NR); //故障被解锁并自动清除,
nsent = WriteReg (nDev_ID,12,0x08,1,FRMWRT_SGL_NR); //自动地址启用
nsent = WriteReg (nDev_ID,10,0x00,1,FRMWRT_SGL_NR); //设备地址=00
nread = ReadReg (nDev_ID,244,&chksum,4,0); //此寄存器包含当前内部计算的寄存器校验和。
nsent = WriteReg (nDev_ID,240,chksum,4,FRMWRT_SGL_NR); //此寄存器包含寄存器的编程校验和。
nsent = WriteReg (0107,0x8000,2,FRMWRT_SGL_NR); //用户校验和错误掩码
DELAY _US (500);
nsent = WriteReg (0,81,0x18,1,FRMWRT_SGL_NR); //清除系统状态寄存器中的故障标志
DELAY _Us (100);
nsent = WriteReg (nDev_ID,82,0xFFC0,2,FRMWRT_SGL_NR); //清除所有故障摘要标志
nsent = WriteReg (nDev_ID,84,0xFFFF,2,FRMWRT_SGL_NR); // UV透明
nsent = WriteReg (nDev_ID,86,0xFFFF,2,FRMWRT_SGL_NR); // OV清除
nsent = WriteReg (nDev_ID,88,0xFFFF,2,FRMWRT_SGL_NR); // AUX清除
nsent = WriteReg (nDev_ID,90,0xFFFF,2,FRMWRT_SGL_NR); // COMP UV透明
nsent = WriteReg (nDev_ID,92,0xFFFF,2,FRMWRT_SGL_NR); // COMP OV Clear
nsent = WriteReg (nDev_ID,94,0xFFE9,2,FRMWRT_SGL_NR); // COMM FLT透明
nsent = WriteReg (nDev_ID,96,0xFF,1,FRMWRT_SGL_NR); // SYSFLT清除
nsent = WriteReg (nDev_ID,97,0xFFFF,2,FRMWRT_SGL_NR); //芯片清除
nsent = WriteReg (nDev_ID,99,0x3F,1,FRMWRT_SGL_NR); //清除所有故障摘要标志
nsent = WriteReg (nDev_ID,104,0xFFE9,2,FRMWRT_SGL_NR); //掩码通信
nsent = WriteReg (nDev_ID,106,0xDF,1,FRMWRT_SGL_NR); //掩码系统flt.
nsent = WriteReg (nDev_ID,107,0xE000,2,FRMWRT_SGL_NR); //掩码芯片故障
void configure_AFE()
{
nsent = WriteReg (nDev_ID,61,0x00,1,FRMWRT_SGL_NR); //初始采样延迟
nsent = WriteReg (nDev_ID,62,0x44,1,FRMWRT_SGL_NR); //电压和温度采样间隔12.6us
nsent = WriteReg (nDev_ID,63,0x4444.4444万,4,FRMWRT_SGL_NR); //初始采样延迟
nsent = WriteReg (nDev_ID,7,0x00,1,FRMWRT_SGL_NR); //反向采样率和命令
nsent = WriteReg (0,81,0x38,1,FRMWRT_SGL_NR); //清除系统状态寄存器中的故障标志
nsent = WriteReg (nDev_ID,82,0xFFC0,2,FRMWRT_SGL_NR); //清除所有故障摘要标志
nsent = WriteReg (nDev_ID,13,0x0D,1,FRMWRT_SGL_NR); // nchan:将单元格数设置为13
nsent = WriteReg (nDev_ID,3,0x1FFF0000,4,FRMWRT_SGL_NR); //选择全部13个单元格,
nsent = WriteReg (nDev_ID,50,0x04,1,FRMWRT_SGL_NR); //自动监控周期10ms
nsent = WriteReg (nDev_ID,51,0x1FFF0000,4,FRMWRT_SGL_NR); //自动监听信道
nsent = WriteReg (nDev_ID,144,0xD709,2,FRMWRT_SGL_NR); //电池过压阈值
nsent = WriteReg (nDev_ID,142,0x9999,2,FRMWRT_SGL_NR); //电池欠压阈值
nsent = WriteReg (nDev_ID,141,0xB4,1,FRMWRT_SGL_NR); //电池比较器过压阈值
nsent = WriteReg (nDev_ID,140,0x00,1,FRMWRT_SGL_NR); //单元比较器欠压阈值
nsent = WriteReg (nDev_ID,146,0x0000,2,FRMWRT_SGL_NR); //辅助0欠压阈值
nsent = WriteReg (nDev_ID,148,0xFFFF,2,FRMWRT_SGL_NR); //辅助0过压阈值
nsent = WriteReg (nDev_ID,150,0x0000,2,FRMWRT_SGL_NR); //辅助1欠压阈值
nsent = WriteReg (nDev_ID,152,0xFFFF,2,FRMWRT_SGL_NR); //辅助1过压阈值
nsent = WriteReg (nDev_ID,154,0x0000,2,FRMWRT_SGL_NR); //辅助2欠压阈值
nsent = WriteReg (nDev_ID,156,0xFFFF,2,FRMWRT_SGL_NR); //辅助2过压阈值
nsent = WriteReg (nDev_ID,158,0x0000,2,FRMWRT_SGL_NR); //辅助3欠压阈值
nsent = WriteReg (nDev_ID,160,0xFFFF,2,FRMWRT_SGL_NR); //辅助3过压阈值
nsent = WriteReg (nDev_ID,162,0x0000,2,FRMWRT_SGL_NR); //辅助4欠压阈值
nsent = WriteReg (nDev_ID,164,0xFFFF,2,FRMWRT_SGL_NR); //辅助4过压阈值
nsent = WriteReg (nDev_ID,166,0x0000,2,FRMWRT_SGL_NR); //辅助5欠压阈值
nsent = WriteReg (nDev_ID,168,0xFFFF,2,FRMWRT_SGL_NR); //辅助5过压阈值
nsent = WriteReg (nDev_ID,170,0x0000,2,FRMWRT_SGL_NR); //辅助6欠压阈值
nsent = WriteReg (nDev_ID,172,0xFFFF,2,FRMWRT_SGL_NR); //辅助6过压阈值
nsent = WriteReg (nDev_ID,174,0x0000,2,FRMWRT_SGL_NR); //辅助7欠压阈值
nsent = WriteReg (nDev_ID,176,0xFFFF,2,FRMWRT_SGL_NR); //辅助7过压阈值
}
此外,我还附上了我的示意图以供参考。
请帮我解决这个问题。 直到故障被清除,我才能够测试我的逻辑。
谢谢
Ritul Shah