0
点赞
收藏
分享

微信扫一扫

PIC单片机Hex文件的校验和是怎么计算的?

PIC单片机Hex文件的校验和是怎么计算的?

  1. Intel Hex 格式文件背景
  • PIC 单片机的 Hex 文件通常是采用 Intel Hex 格式。这种格式是一种文本文件格式,用于存储二进制代码和数据,方便将程序烧录到单片机等芯片中。
  • Intel Hex 格式文件中的每一行称为一个记录,记录的格式为“:CCAAAATT[DD...]CC”,其中第一个 CC 是字节计数,即该行中数据字节数;AAAA 是 16 位的地址,表示数据要写入的起始地址;TT 是记录类型,常见的有数据记录(值为 00)、文件结束记录(值为 01)等;[DD...] 是数据部分;最后的 CC 是校验和字节。
  1. 校验和计算方法
  • 数据记录校验和
  • 计算校验和时,首先要将该行记录中的各个字段进行累加。包括字节计数(第一个 CC)、地址(AAAA)、记录类型(TT)和数据部分([DD...])中的字节。
  • 例如,对于一行记录“:10000000214578A9”,其中字节计数是 10,地址是 0000,记录类型是 00,数据部分是 21 45 78 A9。将这些字节转换为十进制数值进行累加(注意这里是以十六进制数值来计算,但在累加时当作十进制数值处理)。字节计数 10 是十进制的 16,地址 0000 转换为十进制是 0,记录类型 00 是 0,数据部分 21(33)、45(69)、78(120)、A9(169)分别转换为十进制。
  • 累加这些数值:16(字节计数) + 0(地址高字节) + 0(地址低字节) + 0(记录类型) + 33 + 69 + 120 + 169 = 351(十进制)。
  • 然后,将累加结果取反加 1,得到校验和。这里累加结果是 351,其二进制原码是 101011111,取反后是 010100000,加 1 后是 010100001,即十进制的 81,转换为十六进制就是 51。所以该行记录的校验和应该是 51,完整的记录将是“:10000000214578A951”。
  • 文件结束记录校验和
  • 文件结束记录的格式相对简单,一般形式为“:00000001FF”。其中字节计数是 00,地址是 0000,记录类型是 01,没有数据部分。计算校验和时,将字节计数(00)、地址(0000)和记录类型(01)转换为十进制数值累加。
  • 字节计数 00 是 0,地址 0000 是 0,记录类型 01 是 1,累加结果为 1。取反加 1 后得到 255 - 1 + 1 = 255(十进制),即十六进制的 FF,这就是文件结束记录的校验和。

通过这种校验和的计算方法,可以保证 Hex 文件在传输和烧录过程中的数据完整性,确保程序能够正确地写入 PIC 单片机。

举报

相关推荐

0 条评论