AN-1001: 校验和计算
本应用笔记说明 ADM106x 开发软件产生的各种校验和是如 何计算的,并会在适当的地方讨论这些校验和在 EEPROM 中的存储位置。
配置寄存器校验和计算(0x00 至 0xFF)
ADM106x 配置寄存器包含用户当前正在使用的数据(称为 易失性存储器)。如果发生失电事件,则所有这些数据都会 丢失。
该校验和的计算仅涉及到用户可以配置的寄存器,如故障 检测寄存器、输出寄存器、DAC 寄存器、通用寄存器和 ADC 限值寄存器等。
为了计算这些可配置位置的校验和,需要从器件的易失性 存储器中读取所有这些位置的数据。然而,校验和计算仅 使用下列位置的数据 :
- 0x00 至 0x7C(不包括 0x7C)
- 0x80 至 0x83(不包括 0x83)
- 0x91 至 0x93(不包括 0x93)
上述位置中的数据相加,然后反转数据总和,并将所得的 值与 0xFFFF 进行 AND 运算(参见图 2)。
配置 EEPROM 校验和计算(0xF8; 0x00 至 0xF8; 0xFF)
配 置 EEPROM 寄 存 器 包 含 用 户 从 控 制 寄 存 器 保 存 到 EEPROM(非易失性存储器)的数据。因此,如果发生失 电事件,所有这些数据不会丢失。
该校验和的计算仅涉及到用户可以配置的寄存器,如故障 检测寄存器、输出寄存器、DAC 寄存器、通用寄存器和 ADC 限值寄存器等。
为了计算这些可配置 EEPROM 位置的校验和,只需要从器 件的 0xF8 非易失性存储器空间的 256 个位置中读取 148 个 位置的数据。然而,校验和计算仅使用下列位置的数据 :
- 0xF8; 0x00 至 0xF8; 0x7C(不包括 0xF8; 0x7C)
- 0xF8; 0x80 至 0xF8; 0x83(不包括 0xF8; 0x83)
- 0xF8; 0x91 至 0xF8; 0x93(不包括 0xF8; 0x93)
上述位置中的数据相加,然后反转数据总和,并将所得的 值与 0xFFFF 进行 AND 运算(参见图 3)。
此外,将数据保存到 EEPROM 时,校验和计算结果也会被 保存到器件的 EEPROM 中,用户可以随时读取。这些校验 和的存储位置如图 1 所示。计算结果可以通过 ADM106x 开 发软件生成的文本文件查看。注意,示例中的 xx 表示校验 和数据。
figure 1
figure 2
figure 3
用户 EEPROM 校验和计算(0xF9; 0x00 至 0xF9; 0xFF)
用户 EEPROM 寄存器包含用户保存的数据。这 256 个位置 供用户存储数据,如版本 ID 等。该数据对 ADM106x 器件 的功能无影响。
为了计算用户 EEPROM 位置的校验和,需要从器件的 0xF9 非易失性存储器空间读取所有 256 个位置的数据。
位置 0xF9; 0x00 至 0xF9; 0xFF 中的数据相加,然后反转数 据总和,并将所得的值与 0xFFFF 进行 AND 运算。
时 序 控 制 引 擎 EEPROM 校 验 和 计 算(0xFA; 0x00 至 0xFA; 0xFF)
时序控制引擎 EEPROM 寄存器包含用户从 ADM106x 开发 软件中的时序控制引擎编辑器保存的数据。
为了计算时序控制引擎 EEPROM 寄存器的校验和,需要从 器件读取从 0xFA; 0x00 到 0xFB; 0xFF 的所有位置中的数据。
上述位置中的数据相加,然后反转数据总和,并将所得的 值与 0xFFFFF 进行 AND 运算。
INTEL 十六进制校验和计算(0xF8; 0x00 至 0xFB; 0xFF)
生成 Intel 十六进制文件时,校验和的计算方法是将所有 行结束二进制补码校验和相加,但不包括文件最后一行的 0xFF 及从 0xF8; 0xA0 到 0xF8; 0xFF 的 EEPROM 区域的校验 和。该区域是 EEPROM 中的锁定空间,包含器件特定的所 有调整和配置寄存器,这些寄存器在 ADI 公司的测试过程 中设置。该空间已被锁定,防止用户无意中擦除其中数据 而使 ADM106x 器件失去作用。
软件启动时显示的校验和
图 4 所示为顶层 ADM106x 评估软件右下方出现的显示框。
启动时,软件检查图 1 所示 EEPROM 空间中的寄存器并显 示该数据。如果 EEPROM 中没有数据,则会计算配置寄存 器和 Intel 十六进制文件的校验和,并且显示计算结果。
figure 4