ZHCSF35D October 2014 – February 2025 PGA300
PRODUCTION DATA
EEPROM 存储器的最后一个字节,即 EEPROM_CRC_VALUE_USER 寄存器,是为存储器映射 CRC 而保留。此 CRC 值涵盖 EEPROM 存储器中的所有数据。每次写入 EEPROM_CRC_VALUE_USER 寄存器时,PGA300 都会计算 EEPROM 存储器中的 CRC 值,将计算得出的 CRC 值放入 EEPROM_CRC_VALUE_CALC 寄存器中,并根据 EEPROM_CRC_VALUE_USER 寄存器中编程的 CRC 值来验证该值。如果 EEPROM_CRC_VALUE_CALC 寄存器中计算得出的 CRC 值与 EEPROM_CRC_VALUE_USER 寄存器中编程的值相匹配,则会设置 EEPROM_CRC_STATUS 寄存器中的 CRC_GOOD 位。
也可以通过设置 EEPROM_CRC 寄存器中的 CALCULATE_CRC 位,随时启动 CRC 校验。EEPROM_CRC_STATUS 寄存器中的 CRC_CHECK_IN_PROG 位提供了 CRC 计算的状态,而 EEPROM_CRC_STATUS 寄存器中的 CRC_GOOD 位提供了 CRC 校验的结果。
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
EEPROM CRC 计算在数字内核上电开始运行 340µs 后完成。