TI中文支持网
TI专业的中文技术问题搜集分享网站

bq27510新校验和写入到0x60寄存器中,寄存器没有更新

如题,我发送new_checksum到0x60(已经按照新的0x40~0x5F之间的值进行计算,应该是正确的校验和),写进去了,bq27510也又给我应答,但是再去读0x60寄存器发现校验和没有更新,还是以前的校验验和值,导致我修改的设计容量没有更新,请问大神们知道这应该怎么解决吗?要修改的值我已经写入DATA FLASH里了,我读出来也是我修改的值,但是校验和验证没有通过导致用0x2E读的设计容量数据一直没有更新。跪求大佬们解答。

1. 发送design capacity 寄存器的subcalss 到0x3E/0x3F(根据datasheet的Data Flash Summary的表格,design capacity是subclass,48。需要写入16进制)

 W:AA 61 00    

 W : AA 3E 30 00

2. 发送需要修改的寄存器offset到0x40~0x5F之间,design capacity的offset是10,给0x40+10, 即0x4A,假设为2000mAh

     W: AA 4A 07 D0  

3.发送checksum到0x60,(需要按照新的0x40~0x5F之间的值进行计算

    W:AA 60 new_checksum

我流程基本是这样的

上图是我把new_checksum写入0x60中,但是每一次写SCL(蓝线)都会出现这个波形,会不会是这个原因导致数据没有写入到0x60中呢?

user5180992:

不是上图时序的原因,我把波形弄好了还是没写进去,或者我算的校验和有问题,校验和是将0x40-0x5f寄存器里的值全读出来相加,然后取出低8位,用0xFF减去取出的低8位,得到的数就是校验和。我这个求法没错吧?

Rosa Chen:

回复 user5180992:

你好,

我昨天也遇见了类似的问题,我觉得可能的问题有:
1.每次写入dataflash最多只能写32 bytes. checksum是以上您说的算法,但是是发送的32 bytes的值的和,取低8位,用ff减
2.我每次发送的是checksum和数据长度一起到60. 不知道您发没发数据长度呢?
下面是我去英文论坛找到的相似的帖子,我通过这个文件写成功了,不知道对您有没有用,希望有帮助

e2e.ti.com/…/2336247

赞(0)
未经允许不得转载:TI中文支持网 » bq27510新校验和写入到0x60寄存器中,寄存器没有更新
分享到: 更多 (0)