STM32串口升级协议与Bootloader详解

5星 · 超过95%的资源 需积分: 10 38 下载量 198 浏览量 更新于2024-07-30 3 收藏 2.08MB DOC 举报
"AN3155应用笔记主要讲解了如何使用串口(USART)进行固件升级,涉及启动代码序列、波特率选择以及 bootloader 的命令集等关键知识点。" 在AN3155的应用笔记中,串口(USART)Bootloader代码序列是关键部分,用于实现芯片间的升级。当STM32微控制器进入系统内存启动模式后,它会配置好自身,并通过USARTx_RX引脚监听0x7F数据帧,该帧由一个起始位、0x7F数据位、偶校验位和一个停止位组成。系统使用Systick定时器来测量数据帧的持续时间,从而计算出相应的波特率,这个波特率与系统时钟直接相关。 波特率的选择至关重要,启动代码会根据接收到的第一个字节的长度来计算USARTx的串行波特率。为了保证数据传输的准确性,波特率必须在一定的范围内,误差不能超过2.5%。计算波特率误差的公式涉及到CPU时钟和主机波特率,误差随着主机波特率增加而增大。最小波特率为1200,若低于这个值会导致SysTick定时器溢出,无法正确初始化USARTx;最大波特率为115200,所有波特率都需在这个区间内。 Bootloader的命令集包括多种功能,如数据传输、设备擦除等。在命令执行过程中,如果遇到拒绝命令或错误,Bootloader会发送NACK字节并返回检查命令。对于具有读保护(RDP)功能的设备,只有特定的命令子集在RDP激活时有效,其他命令会被拒绝。"Erase"(0x43)和"Extended Erase"(0x44)是两种不同的擦除命令,设备仅支持其中一种。通信安全是另一重点,PC到外设的通信会通过校验和验证,确保数据传输的完整性。 总结来说,AN3155应用笔记详细介绍了使用STM32的USART Bootloader进行固件升级的过程,涵盖了波特率计算、命令控制及通信安全等多个技术要点,为开发者提供了实用的指导。