微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > 有关bq27510-g2 数据块写入问题

有关bq27510-g2 数据块写入问题

时间:10-02 整理:3721RD 点击:

已经根据MSP430 Software for bq  、slua559与BQ27510-g2 里面的文档与bq27599的测试程序  去写入BlockDataControl  DataFlashClass DataFlashBlock 这三位,但是BlockDataChecksum 与想更改的DesignCapacity 都更改不了  按照说明 设置前者应该就可以去更改后者了  麻烦谁能帮我解答一下 还需要更改什么别的数据么?

刚才又看了一下 额 可以修改数据的位置看错了  不过 DesignCapacity 怎么去设置   文档中显示 是只读的  但区间值有可以到65535 麻烦 谁可以帮我解答一下 怎么设置 这个设计容量大小

您说的design capacity应该是指 design capacity(), 这个是I2C的命令。并不是实际的Dataflash中的design capacity存储的寄存器、

请参照 DATA FLASH的位置 以及datasheet中对 BLOCK data() 修改的流程,

block a data ()的数据是对应 design capacity() 这些数据位么? 

亲 我就想问一下  在板子的i2c读写的方式可以更改bq27510-g2的“设计电源容量”等参数么 是必须得用烧录的形式才可以么?还是如果可以的话是修改block a data 那32块数据就行了么,那32块数据对应前面的那些你说的i2c命令?or什么 。。。 

Hi  

可以通过block data修改特定的dataflash。

datasheet中有说明

好先谢谢你 明天我再试试

你好 今天 我试了一下 好像还是设置的不对 修改block data的时候 原cmd的寄存器 没有变化 请问可能是什么原因 ,或者 能简单的帮我写一个例子的操作流程  我自己对照看一下 麻烦了

你好  下午的时候 又前进了一步 确定找到了 想设置的cmd的数据位 而且也写进去了  但是 在cmd中查看值还是不变 不知道为什么  而且checksum的值一直写不进去  我是按照 msp430的那个c程序的顺序去写的 假设我想设置0x3c\3d 这个设计电量 我做了以下步骤:blockdatacontrol    0x60 为 0x00 设置了 DataFlashClass( ) 的值为 0x30 设置了DataFlashBlock( ) 为 0x00  但BlockDataCheckSum( )位我写不进去值 按照那个程序这位是可以写的 (问题1) 然后我对照datasheet找到 0x4a与0x4b 为这个 0x3c\3d 的对应值  改变完 之后 我就不知道怎么才能让这个值生效到 cmd上 也就是0x3c\3d的位置 (问题2)

关于上一条的线索麻烦帮忙解答一下 谢谢

是都在休息么=。=   有在的麻烦帮忙回复一下  谢谢

Hi 

您对电量计的理解有些问题。

首先,0x3c.0x3d这个是I2C的指令,电量计接受到这个指令后,从DataFlash中读取对应Design Capacity的值返回给主机。

0x3c 0c3d是电量计i2C的命令,可以当做是一个command。

如果要修改design capacity的值,需要直接对Dataflash的寄存器进行操作。操作流程如下:

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

请按照以上流程修改。

你好  

  我确实是这么写的  但是写0x60的时候 也就是checksum的时候 会失败 不知道为什么 请问 还有别的什么需要注意的么

 需要确认checksum 计算正确。

旧checksum是多少?

修改了那两个byte?

新计算的checksum是多少?

另外保证芯片的供电需要在2.8V以上。

写入的过程中不要有其他i2C指令的中断。

芯片处于Full Access 状态。

我是用这个做的测试 到写0x60的时候就是 wirte fault

i2cset -f -y 2 0x55 0x61 0
i2cset -f -y 2 0x55 0x3e 0x30
i2cset -f -y 2 0x55 0x3f 0 

i2cset -f -y 2 0x55 0x4a 0x18
i2cset -f -y 2 0x55 0x4b 0x38

关于checksum我是根据 官网上的一个实例程序中的方法算的 

 checksum = (0xFF - (sum & 0x00FF));   不知道是不是这个 sum是 0x40-0x5f的和 

而且此前的几步都没问题;就是在写0x60的时候写不进去

 i2cset -f -y 2 0x55 0x60 0x45

       0    1    2   3  4  5  6    7   8   9   a    b   c    d   e   f

40: 00 64 01 b0 f6 fe 0c 03 84 5a 03 e8 07 62 71 32

50: 37 35 31 30 00 00 00 00 00 00 00 00 00 00 00 00

60: 45

这是修改后的值 , 写0x60的时候会报错

 修改部分可以参考datasheet里关于Flash区域的读写操作,不过建议使用EV2400/2300通过上位机进行配置,因为单片机无法对CHEM-ID进行设置,CHEM-ID不修改对电量精度影响很大。

您好  感谢您的回复 修改部分已经是按照操作手册去操作的,只有checknum写不进去,   还有您那面的建议是不在单片机或者arm上进行操作是么=。=如果只有arm呢 可否有什么准确的方法去设定电量从而得到准确的剩余电量

=.=

亲们  没有人回答么=。=

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top