微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > 关于BQ28Z610 I2C Commands操作步骤问题

关于BQ28Z610 I2C Commands操作步骤问题

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

BQ28Z610 电池已经做完了。现在要摘取些主要的地址跟命令 给客户查看。发现在advanced commend I2C发送指令步骤不会用。

一,如图所示

12.1 standard data commands读写电池信息方法,谁能帮我翻译一下他的描述:

the bq28z610 uses a series of 2-byte standard
I2C commands with a 7-bit device address of 0x55 (8 bits = 0xAA to read and 0xAB to write). Each
standard command has an associated command code pair, as indicated in Table 12-1, Standard
Commands. Each protocol has specific means to access the data at each command code. Data RAM is
updated and read by the gauge once per second.

不是我英文不行,主要是我不懂这些专业术语。寄存器代码用到了 最高有效位the Most Significant Bitmsb)和 最低有效位the least significant bitlsb),这个我实在不懂,不过我觉得应该不影响我使用这个芯片。比如 如果我去查看温度TEMP  ,0x06/0x07 这指令如何发送,在哪个界面发送?官网提供的一个EVM 文档并没有举例描述,所以搞不懂。

二,我想起了BQ45Z50R1的数据手册跟上位机软件里面的advanced commands SMB screen。

EVM 文件里面举例说明了查看电池信息,在read-word/write 里面输入0x09 查看电压,这个就容易懂了。 BQ28Z610的 寄存器代码方式不一样,所有的文档也没有举例说明,我就不懂如何查看了。

三,BQ28Z610的0x00, 0x01 AltManufacturerAccess() and 0x3E, 0x3F AltManufacturerAccess()  功能问题

1,如图所示

按照 数据手册里面的例子,在使用0x00 指令的时候,有2种发送方式,

如:0x0021 使能gauge 

第1种为直接在寄存器的manufacturer access里面输入0x0021 OK即可使能

第2种为在advanced commend I2C 的界面里面先write 再read相应的指令(方式有具体的例子介绍)

看介绍,问题就出来了。

1,我按照(a) I2C Write, start address = 0x3E (or 0x00). Data = 21 00 (data must be sent in Little Endian). 确实可以使能,或者06 00查看CHEM-ID ,但是这里面的0x00, 0x010x3E, 0x3F,是啥意思? 为什么start address得输入3E,3F又是啥意义? 数据手册里面没有说明,我很懵。

2,manufacturer access里面好像只能输入 write的命令,才会得到相应,比如0x0021Gauging (IT Enable),0x001F ChargeFET,旗位会响应。

如果输入read的命令,比如0x0006 ChemID ,0x0002 FirmwareVersion 所查看的信息是不会在manufacturer access框里面显示出来。(这就跟bq evaluation software 上位机软件有区别,后者如果输入ChemID命令,可以直接在窗口显示结果)

3,battery management system (bq studio )这个软件多了个  直接commends 界面,包含了大多数的主要write的快捷键,是比较方便的。但是总觉得还是不全。光BQ28Z610都有0x0001 到0xF082这么多。

四,如何退出ROM模式

1,我尝试在advanced commendI2C 里面write了 0x0F00 这个指令,是进入了ROM模式,但是我发现我不会退出来了,结果只能断电,重新焊接电池。

12.2.44 AltManufacturerAccess() 0x0F00 ROM Mode 里面介绍了进入 退出ROM模式,但是我不会弄。

2,我记得在Smbus 协议的芯片,有个直接可以send cmd 的界面,发送08 即可退出ROM 模式,这个芯片我就不知道了。

1. 查看温度不需要发送指令,直接读取06 07地址就可以。读回来以后,07地址返回的数据是高位, 06的是低字节

2. bq28z610是I2C接口, bqstudio 也可以用Advanced  Comm来读取数据。在TRM文件里,Table 12-1. Standard Commands里的数据都是可以直接读取对应的地址即可

3.简单来说,在TRM文件里Table 12-2. AltManufacturerAccess() Command List 里面所列的命令

先看ACCESS这一列,凡是标“W”,并且Format这一列是空白的指令,都是控制指令,不用读取返回数据的。所以直接对00/01,或者3e/3f写,效果是一样的,这没有问题。

再看ACCESS为“R”或者”R/W"的,Format是“Block"的。读取数据的时候,是先对00/01或者3e/3f写相应的指令命令,例如06 00,读取chemID。然后再从3E地址开始读取36个byte, 不用管其他值是什么,只要关心,返回的第3,第4个byte,就是你想要的值,如果要算checksum 校验数据是不是对,那个就需要整个36byte一起来算,就好。 当然有些返回的值长度很长,那也是同样只关心从第3个byte开始之后的你需要的值。

所以这个逻辑和其他的芯片不一样,确实bq28z610是特别的一个。

命令不齐全可以自己写,在安装目录里 找到bq28z610的.bqz文件,解压缩工具打开,找到Command.xml文档,添加就好,可以尝试。但我还没有试过。

4. 退出ROM 按照这个芯片的逻辑应该也是发送08, 不过在Advanced Comm中把地址修改为0x16. 再发08. 一样,我也还没有尝试过,只是建议。

或者,在进入ROM模式后,在program中直接再烧写一下firmware,会自动退出。

总的来说, bq28z610的逻辑是由于一些原因导致和其他不一样,要仔细看一下TRM。

谢谢仔细回答,我还得一个个去验证,毕竟现在时间有限,还不能弄懂全部。  

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

网站地图

Top