本使用指南主要描述 N32G45x 系列、N32G4FR 系列、N32WB452 系列
MCU 的 BOOT 接口基础指令,便于使用国民技术 BOOT Loader 进行下载开 发
- BOOT 简述
使用指南适用于 N32G45x、N32G4FR、N32WB452 系列芯片,提供了用户下载功能,
具体如下:
- 支持 USART1(PA9/PA10,自动波特率检测,支持的波特率 4800、9600、14400、
19200、38400、57600、115200、128000)和 USB 接口(DFU 协议)下载程序到用户
区; - 支持 Flash 擦除功能(下载前确保该页已经被擦除);
- 支持数据或程序下载功能;
- 支持下载数据 CRC32 校验;
- 支持上电 BOOT 自校验;
- 支持跳转到用户区执行;
- 支持软件复位芯片操作。。
本文档详细描述了通用 MCU 芯片 BOOT 的功能、实现及使用介绍。
- BOOT 流程及命令处理
BOOT 程序支持通过 URART/USB 接口下载用户程序和数据。上电时,自动识别使用
的接口。下面阐述相关命令处理流程。
1.1 命令及数据结构
1.1.1 命令列表
Table2.1 命令定义
1.1.2 数据结构
这里介绍下文阐述中的一些约定,其中,“<>”代表必须包含的字段,“()”代表根据参数
不同包含的字段。
3. 逻辑层指令数据结构
- 上层指令结构:
<CMD_H + CMD_L + LEN + Par> + (DAT)。
CMD_H 代表一级命令字段,CMD_L 代表二级命令字段;LEN 代表发送数据长度;
Par 代表 4 个字节命令参数;DAT 代表上层指令往下层发送的具体数据; - 下层应答结构:
< CMD_H + CMD_L + LEN > + (DAT) + <CR1+CR2>。
CMD_H 代表一级命令字段,CMD_L 代表二级命令字段,下层的命令字段和对应
上层的命令字段相同;LEN 代表发送数据长度;DAT 代表下层向上层应答的具体数据;
CR1+CR2 代表向上层返回的指令执行结果,若上层发送命令一级、二级命令字段不属
于任何命令,BOOT 回复 CR1=0xBB,CR2 = 0xCC。
- 物理层指令数据结构
- USB 接口指令数据结构
USB 接口采用 DFU 协议,详情见’DFU_1.1’文档:
上位机下发上层指令:
使用 DFU_DNLOAD 请求下发上层指令数据。
上位机获取下层应答指令:
使用 DFU_GETSTATUS 请求获取下层应答指令数据。 - 串口指令数据结构:
上位机下发上层指令:
STA1 + STA2 + {上层指令结构} + XOR。
STA1 和 STA2 是串口发送命令的起始字节,STA1=0xAA,STA2=0x55。用于
芯片识别上位机发送串口数据流。
XOR 代表之前命令字节的异或运算值(STA1 + STA2 + {上层指令结构})。
上位机接收下层应答:
STA1 + STA2 + {下层应答结构} + XOR。
STA1 和 STA2 是串口发送命令的起始字节,STA1=0xAA,STA2=0x55。用于
上位机识别芯片发送串口数据流
XOR 代表之前命令字节的异或运算值(STA1 + STA2 + {下层应答结构})。
1.2 命令说明
1.2.1 CMD_GET_INF
该命令提供的功能是读取 BOOT 版本号、芯片型号索引、芯片 ID、芯片系列化信息共
4 种信息。
上层指令:
保留值:0x00。 LEN 发送数据长度:0x00(LEN[0])、0x00(LEN[1]),LEN = LEN[0] +(LEN[1]<<8)
过程字节(CMD_H)和上层指令中的(CMD_H)对应。
LEN 是数据长度:0x33(LEN[0])、0x00(LEN[1]),LEN = LEN[0] + (LEN[1]<<8)。 DAT[0]芯片型号索引
产品编号:0x01
DAT[1] 0xXY,BOOT 命令集版本号(BCD 码)
0x10:指示 BOOT 使用的命令集版本,表示使用 V1.0 的命令集版本
DAT[2]:BOOT 代码版本
DAT[3~50] 48Byte
DAT[3~18]:16Byte UCID(例:36 01 01 A0 15 50 36 33 50 30 35 30 30 09 7D 22),
DAT[19~30]:12Byte Chip ID(UID)(例:36 01 01 50 36 33 50 30 35 09 7D 22)
DAT[31~34]:4Byte DBGMCU_IDCODE(例:01 54 87 F8)
UCID/ UID/ DBGMCU_IDCODE 具体定义见《UM_N32G45x 系列用户手册》 《UM_N32G4FR 系列用户手册》《UM_N32WB452 系列用户手册》
DAT[35~50]:16Byte (保留); 状态字节(CR1、CR2)根据命令执行情况分为:
- 返回成功:状态标志位(0xA0、0x00)。
- 返回失败:状态标志位(0xB0、0x00)。