主题中讨论的其他部件:EV2400, GPCCHEM
您好,
我目前能够将设计密度数据写入BQ2.7742万闪存中。 但当我阅读它时,使用0x3c,我只能找到默认值。 我更新的数据未显示。 如何使用我的新数据更新闪存。
提前感谢!
Kavya。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
我目前能够将设计密度数据写入BQ2.7742万闪存中。 但当我阅读它时,使用0x3c,我只能找到默认值。 我更新的数据未显示。 如何使用我的新数据更新闪存。
提前感谢!
Kavya。
您好,Keller,
感谢您的回复。 我发送的用于更新设计容量的命令序列是,
//打开仪表密封件
unseal();//正在将缺省值0x3672.0414万密钥写入key0和key1中以解除密封。
//启用块数据存储器控制
blockDataControl();//write 0x00 to 0x61命令
DelayMS(5);//5ms延迟
//访问状态子类
blockDataClass(48);//发出0x3e命令以设置要访问的数据类48。
//写入块偏移
blockDataOffset(0/32);//发出0x3f命令以设置要访问的数据块。
//读取块校验和
computeBlockChecksum ();//读取加载的扩展数据的所有32字节,并根据 这些值计算校验和。
UINT8_t oldCsum = blockDataChecksum (); //使用0x60命令读取当前校验和。
UINT8_t块[32];
//更新设计电压
block[0]=(uint8_t)(设计电压>>8);
block[1]=(uint8_t)(设计电压和0x00FF );
//更新设计容量
block[10]=(uint8_t)( designCapacity_mAh >>8);
block[11]=(uint8_t)(设计容量_毫安和0x00FF );
//写入数据字节:
(i = 0;i < 32;I++)
{
//写入偏移,如果偏移大于32,则修改32
//上面的blockDataOffset设置了32位块
writeBlockData((0% 32)+I,block[i]);
}
//使用BlockDataChecksum (0x60)写入新校验和
UINT8_t newCsum = computeBlockChecksum ();//计算新的校验和
writeBlockChecksum (newCsum);
DelayMS(3000);
control_write( BQ2.7742万_gauer_reset );写入0x0041命令 重置量表。
DelayMS(500);
seal();//写入0x0020以密封量表。
我几乎没有疑问,例如,
1. EV2400是否是闪存更新所必需的,或者是否可以使用命令序列完成。
2.读取命令正常工作时,为什么需要Chem ID。
您好,Kavya:
您能否比较一下EV2400通信和主机通信的逻辑分析仪捕获。 这很可能会向您显示任何问题的位置,在使用的序列或驱动程序中出现问题非常常见,这很难从我们的角度进行调试。
EV2400是准确测量所必需的,除非从GPCCHEM获得结果后,CHEM ID与闪存中加载的默认值相同。 唯一不需要EV2400进行设置的仪表是ROM仪表,在这种情况下,您订购的仪表具有与CHEM ID最匹配的电压范围。
此致,
Wyatt Keller
您好,Kavya:
正如我前面提到的,您必须使用GPCCHEM工具与默认CHEM ID匹配,或者必须使用EV2400对该工具推荐给您的CHEM ID进行编程。 您使用的是基于闪存的仪表,如果您使用的是ROM仪表,则不需要EV2400,因为它预加载了您可以订购的3个CHEM ID之一。
仅仅因为电压读数正确,并不意味着测量结果将是准确的。 我们的Impedance Track量规型号需要正确的CHEM ID才能保证测量精度。 您将需要EV2400,它还可以加快调试速度。
此致,
Wyatt Keller