本PDF文件为BQ78350数据闪存读写的参考文档,详细介绍了如何对BQ78350芯片的数据闪存进行高效、安全的操作,包括读取和写入等基本功能。
为了编写新的电压分压器值,请按照以下步骤操作:
1. **确定子类标识与偏移量**:对于“电压分压器”,其SubclassID为104或0x68(十六进制),并且其偏移量是14。
2. **启用块数据闪存控制**:
- 使用`BlockDataControl()`命令(0x61)写入0x00以开启块数据闪存控制。(指令为:wr 0x61 0x00)
3. **访问子类寄存器**:
- 利用`DataFlashClass()`命令 (0x3E),将电压分压器的SubclassID(即Calibration Subclass)写入,以获取相应的寄存器。(指令为:wr 0x3E 0x68)
4. **设置块偏移量**:
- 使用`DataFlashBlock()`命令 (0x3F) 写入所需的偏移值。例如,电压分压器的偏移是14,位于第一个数据块内,因此指令为:wr 0x3F 0x00。
5. **读取与写入特定位置的数据**:
- 若要从某个具体的偏移量处读取数据,请使用地址 `0x40 + mod(offset, 32)`。例如,电压分压器的旧值可以通过以下指令获取:rd 0x4E old_Voltage Divider_MSB 和 rd 0x4F old_Voltage Divider_LSB。
- 若要向特定偏移量写入数据,请使用相同的地址 `0x40 + mod(offset, 32)`。例如,新电压分压器的值可以通过以下指令设置:rd 0x4E new_Voltage Divider_MSB 和 rd 0x4F new_Voltage Divider_LSB。
6. **计算并写入校验和**:
- 数据只有在正确的整个块(地址从0x40到0x5F)的校验和通过`BlockDataChecksum()`命令 (0x60) 写入后才会被转移到数据闪存中。(指令为:wr 0x60 NEW_checksum)
校验和计算公式:
- 新校验和(NEW_checksum)= 255 – mod(temp + new_Voltage Divider_MSB + new_Voltage Divider_LSB, 256),其中temp = mod(255 – OLD_checksum – old_Voltage Divider_MSB - old_Voltage Divider_LSB, 256)
**步骤3:更新特定的闪存位置,如序列号、批码和日期**
在与电压分压器类似的方式下,生产过程中可以改变例如序列号、批码及日期等包特有数据。