比如我现在想修改design capacity ,那么我怎么才能用单片机直接实现这个功能,我不想用ev2300进行修改!
user3608626:
比如说我正常的进入dataflash都是要先解锁,FAS SS,那么我是不是只需要用单片机写一串这样的指令就可以完成解锁的功能呢?
user3608626:
回复 user3608626:
不知道是不是参照ti提供的这个example来读写dataflash!
Sheldon Cai:
回复 user3608626:
是的,但是需要注意的是有些参数是只能通过EV2300烧写的,比如CHEM-ID的信息,所以对于FLASH类型的电量计EV2400/EV2300是必须的,并且单片机配置过程复杂调试难度高。单节的部分电量计比如bq274XX在对精度要求不高的情况下,可以采用该方式配置(但是强烈不推荐)。
user3608626:
回复 user3608626:
我不太明白的是,后面的每页32个byte代表的值是怎么算出来的,我现在用逻辑分析仪把波形给弄出来了,我前面写subclass能看懂,但是后面的32个字节我就看不懂了,那个crc效验我知道是怎么回事,
user3608626:
回复 Sheldon Cai:
恩恩, 我现在就是不知道我只写一个数据的话,为什么我用逻辑分析仪抓取的波形好奇怪,上面不是说写一个block吗?32个字节,请问究竟是如何进行写dataflash的!
user3608626:
回复 Sheldon Cai:
我现在已经可以写数据了,但是好像只能一个块来写,可是我想只想某一个,比如我现在想写design capacity。是怎么做的。是先发S -0x16(ack)-0x77(ack)-0x30(ack)-0x00(ack)-0x9b(ack)-P 然后S-0X16(ACK)-0X78(ACK)-0X20(ACK)-0X01(ACK)-0XF4(ACK)-P这样的话就写完了REMAIN CAPACITY ALARM 500,但是如果我想写design capacty其他都不改变的话,改怎么操作呢? 我把波形也抓取出来了
Luke Deng:
回复 user3608626:
Read required block of Gas Gauging-IT Cfg subclass (SubclassID = 80) into RAM:· Write Subclass ID– SMB Slave Address (0x17)– SMB CMD 0x77 with 0x0050 as data (=80 decimal)· Read Subclass (2nd block is needed as its offset 45)– SMB Slave Address (0x16)– SMB CMD 0x79 receiving 32 bytes of dataOverwrite offset (45 – 32 = 13) of received data with 8.7 V:· Update offset 45 with 0x21fc (= 8700 decimal)Write the updated block back to the bq20z70/bq20z75:· Write Subclass ID– SMB Slave Address (0x17) SMB CMD 0x77 with 0x0050 as data· Write Subclass– SMB Slave Address (0x17)– SMB CMD 0x79 with 32 bytes of data
针对block内某些字节的操作,你可以指定offset,比如DESIGN CAPACITY的class id是48,offset是22,那么CMD 0x77处写入0x30,选定block的CMD是0x78而不是0x79,因为offset 22小于32。
user3608626:
回复 Luke Deng:
我知道你的意思。也就是说如果offset大于32的话,那就需要2个block,但是我现在在0x78写4400的话,那我怎么知道写的就是design capacity呢?换句话说,我如何写4400到design capacity这个offset呢?
user3608626:
回复 Luke Deng:
前面应该还有一个数 代表要写入多少个数据的, 我看了的,为什么写1st level safety最后2个数据 CUV recovery 和CUV threshold的时候出现2个0x02呢?
user3608626:
回复 Luke Deng: