ZHCSH81B December 2017 – February 2025 PGA302
PRODUCTION DATA
EEPROM 存储器的最后一个字节保留用于 CRC。该 CRC 值涵盖 EEPROM 存储器中的所有数据。每次对最后一个字节进行编程时,都会自动计算 CRC 值并进行验证。验证过程会通过在 EEPROM 存储器单元中编程的最后一个字节来校验计算出的 CRC 值。如果计算出的 CRC 与最后一个字节中编程的值匹配,则会设置 EEPROM_CRC_STATUS 寄存器中的 CRC_GOOD 位。
也可通过设置 EEPROM_CRC 寄存器中的 CALCULATE_CRC 位,随时启动 CRC 校验。CRC 计算状态可在 EEPROM_CRC_STATUS 寄存器的 CRC_CHECK_IN_PROG 位中找到,而 CRC 验证结果可在 EEPROM_CRC_STATUS 寄存器的 CRC_GOOD 位中找到。
CRC 计算伪代码如下:
currentCRC8 = 0xFF; // Current value of CRC8
for NextData
D = NextData;
C = currentCRC8;
begin
nextCRC8_BIT0 = D_BIT7 ^ D_BIT6 ^ D_BIT0 ^ C_BIT0 ^ C_BIT6 ^ C_BIT7;
nextCRC8_BIT1 = D_BIT6 ^ D_BIT1 ^ D_BIT0 ^ C_BIT0 ^ C_BIT1 ^ C_BIT6;
nextCRC8_BIT2 = D_BIT6 ^ D_BIT2 ^ D_BIT1 ^ D_BIT0 ^ C_BIT0 ^ C_BIT1 ^ C_BIT2 ^ C_BIT6;
nextCRC8_BIT3 = D_BIT7 ^ D_BIT3 ^ D_BIT2 ^ D_BIT1 ^ C_BIT1 ^ C_BIT2 ^ C_BIT3 ^ C_BIT7;
nextCRC8_BIT4 = D_BIT4 ^ D_BIT3 ^ D_BIT2 ^ C_BIT2 ^ C_BIT3 ^ C_BIT4;
nextCRC8_BIT5 = D_BIT5 ^ D_BIT4 ^ D_BIT3 ^ C_BIT3 ^ C_BIT4 ^ C_BIT5;
nextCRC8_BIT6 = D_BIT6 ^ D_BIT5 ^ D_BIT4 ^ C_BIT4 ^ C_BIT5 ^ C_BIT6;
nextCRC8_BIT7 = D_BIT7 ^ D_BIT6 ^ D_BIT5 ^ C_BIT5 ^ C_BIT6 ^ C_BIT7;
end
currentCRC8 = nextCRC8_D8;
endfor
上电时数字内核开始运行 340µs 后,EEPROM CRC 计算完成。