N32G45x系列、N32G4FR系列、N32WB452系列MCU的BOOT接口基础指令,便于使用国民技术BOOTLoader进行下载开发。
1.BOOT简述
使用指南适用于N32G45x、N32G4FR、N32WB452系列芯片,提供了用户下载功能,具体如下:
1)支持USART1(PA9/PA10,自动波特率检测,支持的波特率4800、9600、14400、19200、38400、57600、115200、128000)和USB接口(DFU协议)下载程序到用户区;
2)支持Flash擦除功能(下载前确保该页已经被擦除);
3)支持数据或程序下载功能;
4)支持下载数据CRC32校验;
5)支持上电BOOT自校验;
6)支持跳转到用户区执行;
7)支持软件复位芯片操作。。
本文档详细描述了通用MCU芯片BOOT的功能、实现及使用介绍。
2.BOOT流程及命令处理
BOOT程序支持通过URART/USB接口下载用户程序和数据。上电时,自动识别使用的接口。下面阐述相关命令处理流程。
1.1命令及数据结构
1.1.1命令列表
命令名称 | 键值 | 简要说明 | CMD_GET_INF | 0x10 | 读取芯片型号索引、BOOT版本号、芯片ID | CMD_FLASH_ERASE | 0x30 | 擦除FLASH | CMD_FLASH_DWNLD | 0x31 | 下载用户程序到FLASH | CMD_DATA_CRC_CHECK | 0x32 | CRC校验下载用户程序 | CMD_OPT_RW | 0x40 | 读取昭己置选项字节(包含了读保护等级、FLASH页写保护、DataO/1配置、USER配置) | CMD_SYS_RESET | 0x50 | 系统复位 | CMD_APP_GO | 0x51 | 跳转到用户区执行程序 |
1.1.2 数据结构
这里介绍下文阐述中的一些约定,其中,“<>”代表必须包含的字段,“()”代表根据参数不同包含的字段。
1. 逻辑层指令数据结构
1) 上层指令结构:
<CMD_H + CMD_L + LEN + Par> + (DAT)。
CMD_H 代表一级命令字段,CMD_L 代表二级命令字段;LEN 代表发送数据长度;
Par 代表 4 个字节命令参数;DAT 代表上层指令往下层发送的具体数据;
2) 下层应答结构:
< CMD_H + CMD_L + LEN > + (DAT) + <CR1+CR2>。
CMD_H 代表一级命令字段,CMD_L 代表二级命令字段,下层的命令字段和对应
上层的命令字段相同;LEN 代表发送数据长度;DAT 代表下层向上层应答的具体数据;
CR1+CR2 代表向上层返回的指令执行结果,若上层发送命令一级、二级命令字段不属于任何命令,BOOT 回复 CR1=0xBB,CR2 = 0xCC。
2. 物理层指令数据结构 1) USB 接口指令数据结构
USB 接口采用 DFU 协议,详情见’DFU_1.1’文档:
●上位机下发上层指令:使用 DFU_DNLOAD 请求下发上层指令数据。
●上位机获取下层应答指令:使用 DFU_GETSTATUS 请求获取下层应答指令数据。
2) 串口指令数据结构:
●上位机下发上层指令:
STA1 + STA2 + {上层指令结构} + XOR。
STA1 和 STA2 是串口发送命令的起始字节,STA1=0xAA,STA2=0x55。用于芯片识别上位机发送串口数据流。
XOR 代表之前命令字节的异或运算值(STA1 + STA2 + {上层指令结构})。
●上位机接收下层应答:
STA1 + STA2 + {下层应答结构} + XOR。 STA1 和 STA2 是串口发送命令的起始字节,STA1=0xAA,STA2=0x55。用于上位机识别芯片发送串口数据流
XOR 代表之前命令字节的异或运算值(STA1 + STA2 + {下层应答结构})
|