主题中讨论的其他器件: BQSTUDIO
大家好、
我的客户现在使用 BQ27220、他们想要校准监测计。
首先、他们尝试根据 slubbd4第6.1节获得完全访问。执行访问获取代码后、他们等待最长1.6秒、以确保器件进入稳定的完全访问模式。 然后读取 SEC[1:0]。 但他们发现有时 SEC[1:0]等于11 (密封访问)或10 (非密封访问),而不是01 (完全访问)。 配置是否有问题?
请帮我解决这个问题、欢迎您发表任何意见。 谢谢你。
下面是访问获取代码:
-------------------- 获取访问-------------------------------------------------------------
//step1未密封器件
Rsh_Bq27220Write (0x00、0x14);
Rsh_Bq27220Write (0x01、0x04);
Rsh_Bq27220Write (0x00、0x72);
Rsh_Bq27220Write (0x01、0x36);
//step2进入完全访问
Rsh_Bq27220Write (0x00、0xff);
Rsh_Bq27220Write (0x01、0xff);
Rsh_Bq27220Write (0x00、0xff);
Rsh_Bq27220Write (0x01、0xff);
//step3输入 cfg update
Rsh_Bq27220Write (0x00、0x90);
Rsh_Bq27220Write (0x01、0x00);
---------------- 读取访问饱和--------------------------------------------------------
while (1)
{
usleep(200*1000);
//step4 flag.cfgupdate 是否已设置
rsh_Bq27220Read (0x3a、_val_3a);
rsh_Bq27220Read (0x3b、_val_3b);
DcmPrintf ("val_3a:%x、val_3b:%x\n"、val_3a、val_3b);
if ((val_3a &(1 << 1))&(!(val_3a &(1 << 2))))
{
DcmPrintf ("解封成功! Val_3a =[%x] cnt =[%d]\n"、val_3a、cnt);
中断;
}
其他
{
CNT++;
if (cnt > 8)
{
DcmPrintf ("解除密封失败!\n");
中断;
}
}
}