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

【中文文档】AN3155_基于STM32微控制器引导程序的串口通讯...

[复制链接]
STMCU-管管 发布时间:2019-3-29 13:27
STM32™ 自举程序中使用的 USART 协议 4 i4 N9 `+ x2 ~

5 m: h  @6 K3 f- g- v& H6 }, j; d6 \, g/ u前言 % l' v$ e% W9 A! _+ A* W
' `9 G0 V* m% {8 ~
本应用笔记将介绍 USART 协议在 STM32 微控制器自举程序中的应用,还将详细介绍支持的每个命令。要详细了解器件自举程序的 USART 硬件资源和要求,请参见“STM32 系统存储器自举模式”(应用笔记 AN2606)。相关文档可从 www.st.com 下载:AN2606“STM32 系统存储器自举模式”: b: \$ I5 M* \# y# V: f
1.png
1 USART 自举程序代码序列

$ m) {8 K3 X  O* q: Z* {0 u
1.png

4 E  i" V7 u& O6 ?8 v0 }7 Z6 j- e# {/ a
当配置 STM32 微控制器为自举启动,系统将进入自举程序模式(有关详细信息,请参见应用笔记 AN2606“STM32 系统存储器自举模式”),自举程序代码将立即扫描 USARTx_RX引脚,等待接收 0x7F 数据帧:一个起始位,0x7F 数据位,偶校验位和一个停止位。

4 M# o! @2 }: r  I; ], s; g
此数据帧的持续时间由 SysTick 定时器测量。之后,该定时器的计数值用于计算关于当前系统时钟的相应波特率因子。

+ V. d+ b1 k3 c+ O, N, n
随后,代码将相应初始化串行接口。通过计算出的波特率,发送确认字节 (0x79) 返回主机,表示 STM32 已准备好接收命令。
. W" x* W3 L/ ]9 [- h/ u
2 选择 USARTx 波特率

8 s4 _8 b  N0 K& p4 A
USARTx 串口波特率根据接收到的首字节长度进行计算,便于在很大波特率范围下运行自举程序。不过,为了确保数据传输正常进行,波特率必须确保在对应范围的上限和下限内。
. G6 J5 w0 \. C' ]6 P4 }& Z
为了确保从主机到微控制器的数据传输正常进行,USARTx 内部初始化波特率与主机实际波特率之间的最大偏差应小于 2.5%。可使用如下公式计算主机波特率与微控制器波特率之间的偏差(fB,用百分比表示):
7 _# U0 \! d. H/ U) [( H) G1 y; p1 _
1.png
  x/ u8 n$ S) b9 W$ a
此波特率偏差为非线性函数,其结果取决于 CPU 时钟和主机波特率。函数 (fB) 的最大值随主机波特率增大。原因是,波特率预分频系数越小,隐含的量化误差越大。

) F5 L3 j+ g3 Q% N: P
2.1 最小波特率
7 w% v. |( q, B% n& Z
测试所得的最小波特率 (BLow) 为 1200。波特率低于 BLow 会导致 SysTick 定时器溢出。此时USARTx 将无法正确初始化。

, R8 Y9 Z( T! @
2.2 最大波特率BHigh
0 [2 q' r4 M, x4 [; o
为偏差不超过限值的最高波特率。BLow 和 BHigh 之间的所有波特率均低于偏差限值。测试所得的最高波特率 (BHigh) 为 115 200。

: ~1 C  S4 r- `/ x
3 自举程序命令集

. V! x/ L' x+ m3 b# K
下面的表 2 中列出了支持的命令。本部分将详细说明其中的每一个命令。
2 b* R1 }9 U1 d; z' J2 a8 l
1.png
............

- E; T* X/ g3 \3 x. ]: F
想了解更多,请下载原文阅读
. y9 `" N0 [1 ?  t
赞 收藏 评论0 发布时间:2019-3-29 13:27

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版