你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32™ 自举程序中使用的 USART 协议

[复制链接]
STMCU小助手 发布时间:2022-12-6 14:56
前言
( C$ }/ Z6 |' M( F/ S本应用笔记将介绍 USART 协议在 STM32 微控制器自举程序中的应用,还将详细介绍支持的每个命令。要详细了解器件自举程序的 USART 硬件资源和要求,请参见“STM32 系统存储器自举模式”(应用笔记 AN2606)。( o. ^7 ^5 W. ~) X, \! D3 Z
! g5 b( G1 R, L0 f8 Z
相关文档/ h, n, K% Q8 v$ j5 a* ~- R0 m8 m! c- B
AN2606“STM32 系统存储器自举模式”, P; X0 g% z) b0 v+ v5 _: D
& Y* @* V& }! |/ v0 A+ t4 k& D. V, `$ m9 u
) I# P& f# R/ L3 A5 Z% ~) ~
V53P{JJ18F(INXPWDJ`@OCX.png
9 i" a0 Y& t. w" |! ]' T5 i
1 M, e- M; y8 A( ]- q6 X

% K! |+ h  [6 y1 USART 自举程序代码序列
% a( w( r4 A6 _+ l8 }
$ W4 ?* l0 ~0 ^: x V]A}UK~[%`MPB@H3ITEBJZ3.png
0 J; b- @5 Y  p+ T* t; p% d; K: C1 J% L+ o' J5 S8 y6 t# g2 ~" Q3 g" l) P
- p# V/ Z- [: |: I
当配置 STM32 微控制器为自举启动,系统将进入自举程序模式(有关详细信息,请参见应用笔记 AN2606“STM32 系统存储器自举模式”),自举程序代码将立即扫描 USARTx_RX引脚,等待接收 0x7F 数据帧:一个起始位,0x7F 数据位,偶校验位和一个停止位。" d# G+ q& C& G% u: R
此数据帧的持续时间由 SysTick 定时器测量。之后,该定时器的计数值用于计算关于当前系统时钟的相应波特率因子。' q( e# X7 D# ]' W' ]: L
随后,代码将相应初始化串行接口。通过计算出的波特率,发送确认字节 (0x79) 返回主机,表示 STM32 已准备好接收命令。
, e: f2 ]2 \1 M# m, l4 }$ [' W4 E% h5 }( m, g1 P/ t
2 选择 USARTx 波特率9 T# V. m0 J" q  X! k. }/ D/ I+ P& c
USARTx 串口波特率根据接收到的首字节长度进行计算,便于在很大波特率范围下运行自举程序。不过,为了确保数据传输正常进行,波特率必须确保在对应范围的上限和下限内。) V, Q2 s1 o) W9 e
为了确保从主机到微控制器的数据传输正常进行,USARTx 内部初始化波特率与主机实际波特率之间的最大偏差应小于 2.5%。可使用如下公式计算主机波特率与微控制器波特率之间的偏差(fB,用百分比表示):
- K0 d4 {2 T' g0 h% ?
! e( }9 d& `: u! K
' }) o3 t' X# e
J4VW)51]6`ONZ0CNI}%8T9F.png
( h7 e+ ~3 a0 N7 {' @; I& M% _! c' h  Y7 R) O* G- C2 e
此波特率偏差为非线性函数,其结果取决于 CPU 时钟和主机波特率。函数 (fB) 的最大值随主机波特率增大。原因是,波特率预分频系数越小,隐含的量化误差越大。
' y5 U" m! U/ T; g* X! Y3 {" B% E* B0 k* Z
, c" l; |) O- ?1 [; a8 w
2.1 最小波特率- d9 ], Q# s6 \( P& Z
测试所得的最小波特率 (BLow) 为 1200。波特率低于 BLow 会导致 SysTick 定时器溢出。此时USARTx 将无法正确初始化。# r9 _0 E  N2 m* S$ E. \; _8 [1 Q

6 E2 I  |& {& M

. {7 o! j% A0 b0 G, N2.2 最大波特率; w0 A1 [& Q  z
BHigh 为偏差不超过限值的最高波特率。BLow 和 BHigh 之间的所有波特率均低于偏差限值。测试所得的最高波特率 (BHigh) 为 115 200。
0 d/ ?; v1 b8 q) U0 K4 p/ {7 S( {: D0 g7 z2 q' ^
3 自举程序命令集
* A$ V1 D9 L0 p, n下面的表 2 中列出了支持的命令。本部分将详细说明其中的每一个命令。
8 ]: Y5 q, O8 F' N9 x+ t7 ?+ Z9 I( J# z
# D& U* h2 K% h4 x6 w7 I
324@YGM8`ZO{A[J%VS6J4$E.png
( u) I) c+ C0 R0 {3 F6 R% l% y% q6 J9 A$ \" u, j

" Y7 w& z) h- S: w- O) e通信安全& J$ p: b) g, a5 z6 C
编程工具 (PC) 到器件的所有通信均通过如下方式验证:4 \6 ?3 g: p; g# ]. N* B
1. 校验和:接收到的数据字节块进行异或运算。每个通信结尾增加一个字节(校验和字节),包含前面所有字节异或运算的结果。异或运算所有接收到的字节,即数据包加上校验和字节,结果必须为 0x00+ f8 k0 t% J& q6 s
2. 针对每条命令,主机都会发送一个字节及其补码(异或结果 = 0x00)
- ?& F. e8 a1 U$ U3. UART:激活奇偶校验(偶校验)
6 Q5 Q0 {* Y3 s1 [: W每个数据包或者被接受(ACK 应答)或者被丢弃(NACK 应答):
5 e' j0 t2 L2 z: s• ACK = 0x79
" ~. @: I  ?8 B' {• NACK = 0x1F/ I' }3 v( [* E% a5 X' C2 c) g" u! Y
: R7 N2 N9 U: ]  g- f# v

2 G  C& C( ^( Z8 ?' `) I
8 x* @1 R6 u+ v( z完整版请查看:附件- H* z: V  [; h8 r

; P9 C  z7 C. Z" d2 b% _* U0 v/ S% k8 \" O) k

. u7 _  R, ~5 D! T9 L& b7 ?6 j, |/ ~" N& X9 H0 d

4 ~5 c( t; F. T+ f" }' Q
$ ~& W% `! {1 R; \

STM32™ 自举程序中使用的 USART 协议.pdf

下载

1.04 MB, 下载次数: 3

收藏 评论0 发布时间:2022-12-6 14:56

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版