【WCH蓝牙系列芯片】-脱机烧录器烧录蓝牙芯片输出的日志说明

-------------------------------------------------------------------------------------------------------------------------------------

   在脱机烧录器进行离线烧录蓝牙芯片时,可以通过观察串口的日志输出当时烧录的芯片信息,比如蓝牙芯片的内部MAC地址,还有下载程序的时间参数。这里以CH585芯片为例,离线烧录CH585芯片,观察整个日志输出,进行解析说明。

前期的离线烧录CH585芯片过程,可以参考这个链接:脱机烧录器资料 - 沁恒微电子社区,这个里面也可以获取到很全的脱机烧录器资料。

  将脱机烧录器的串口烧录脚,接到CH585开发板的 PA15、PA14、VCC和GND脚,然后将BOOT脚PB22接到脱机烧录器的GND上,这样烧录后会拉低进入烧录。然后再将串口日志输出脚TX接到调试工具的RX,并接个GNN进行共地处理。

通过串口调试工具来观察,整个烧录过程中,日志输出情况。

  可以看到,日志输出的Boot-UART,表明是采用的串口烧录的方式,

  chip UID:94 04 84 88 19 70 31 fd ,这个chip UID输出的前六个字节芯片的内部的唯一MAC地址,最后两位是校验位。

  通过BLE调试助手可以观察到,在主机端传入的mac地址要注意大小端问题,所以这个蓝牙从机的MAC地址是 70 19 88 84 04 94。所以在串口日志输出的chip UID:94 04 84 88 19 70 31 fd中,前六个字节是以小端存储的,需要将第六个字节作为蓝牙MAC地址的第一个字节,依此排列,第一个字节也就是蓝牙MAC地址的最后一个字节,即第六个字节。

其中的校验关系是:(0x0494 + 0x8884 + 0x7019 )& 0xFFFF = 0xFD31

  至于后两位的校验位如何得到的,可以分析一下

  在这个程序中, 我们可以观察这个通过FLASH_EEPROM_CMD函数中,读取到MAC地址信息, 然后再计算校验和,从 Buffer 中取出前6个字节(即MAC地址的6个字节),分别将每两个字节组合成一个16位的整数。将这三个16位整数相加,得到一个累加和 temp,然后存储校验和,将累加和 temp 的低8位存储在 Buffer[6] 中。将累加和 temp 的高8位存储在 Buffer[7] 中。

通过串口打印来可以观察到,Buffer 中取出前6个字节是94 04 84 88 19 70 ,

  • 04 << 8 表示将 04 左移 8 位。

  • 04 的二进制表示为 00000100

  • 左移 8 位后,结果为 00000100 00000000,即 0400

  • 94 | 0400 表示将 940400 进行按位或操作。

  • 94 的二进制表示为 10010100

  • 0400 的二进制表示为 00000100 00000000

  • 按位或操作的结果为 00000100 10010100,即 0494

  然后讲这个六个字节两两组合成16位整数,然后全部累加起来,得到计算的校验和数据。

  也就是0494+8884+7019 = FD31(十六进制加法)

  然后将31字节低8位存储在 Buffer[6]中,FD字节高8位存储在 Buffer[7]中。这样就得到两个字节的校验值,也就是脱机烧录器输出的日志chip UID的最后两位校验值。

  日志中还有opertion times=926也就下载需要的时间参数。

 

posted on 2025-05-22 11:26  凡仕  阅读(93)  评论(0)    收藏  举报