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

【经验分享】STM8L051F3P6串口UART数据起始位判断的问题

[复制链接]
STMCU小助手 发布时间:2022-2-11 18:45
STM8L051F3P6 串口 UART 数据起始位判断的问题
/ ]& r  p! A5 M一. 前言
$ l/ O; A6 J9 b1 I6 J* P某客户反映新换成 STM8L 的单片机,UART 配置后,利用库函数软件代码,无法正常接收正确的数据。' o9 k6 e1 m$ q
客户对照波形,初步判断是起始位的问题。为了能测出 STM8L 能够识别的起始位前面的最短高电平,对客户发送的数据进行了模拟,不断调整起始位前面的高电平宽度,最后发现高电平宽度>=21uS 的时候 STM8L 可以正常接收数据。* q( C9 J  M* m+ v, R4 d. Y
二.客户问题现象初步分析

! J: b/ i3 A  E& a0 a$ q* |5 Z
3 A, _0 E  u+ A7 w5 ~' J2 | 0N(W294Y@P_PB4X}12O~N2A.png - c) ^5 U5 ?2 O2 O+ P9 D* g
上图是客户端的 UART 需要接收正确识别的数据。客户的起始电平是低电平。1 p  d: A" l3 A. n* y
乍一看,这种波形有点像下图中的 Break frame 的形状。6 H2 c; v( ]  @$ W7 R  J  P

1 k8 K2 v4 _. C2 w  J2 f _WRP)9JL@%`0OK0)Y{%6@@6.png ; {- b: w0 l* M/ @8 r% q/ C

" @5 z9 ]# {/ g" ~- J$ a但其实并不是这样理解的。Break frame 是由发送者发送的,UART 作为接收者,总是侦测认为 break的状态是种错误的数据结构,造成此种情况的原因是由于停止位在发送时被发送者遗忘,所以,它需要在 break 数据结构后加一个额外的数据“1”(不管 STOP bit control 的设置),数据长度为 1bit ,以便能确信可以接受到下一个数据结构的起始位。
- ]; r( ^8 V$ F: R
1 R. e& U4 X9 a. i三.产生原因的分析解决
" {+ I) L& ~4 }6 s' T! z1 K9 h7 W1 k7 y. {
Z{KQ3HOJ99O$P904_OCEO(M.png   O: u3 h$ \6 `

+ a* X8 O6 q0 i2 g( p首先要对 UART 的起始位的概念定义有所了解,参见 reference manual 的 511 页。由上图可见,在接" v: `0 i7 @% G1 _# b4 [! x  o
收到特定的采样序列(16 倍的采样频率):1110x0x0x00000xxxxx 后,关于起始位的有效性才会被确立。
" P3 \. o) O) b! F$ n客户的采样频率在波特率为 9600 下,是 153,6kBd(每隔 6.5us 采样一次),为了验证起始位的有效性。
$ Z" H3 l5 G0 S9 K. XUART 接收器需要去检测到 1110 的序列,三个时间间隔,即需要至少:6.5*3 = 19.5us。符合一开始% G8 j' P& o: A9 s
在前言部分做的试验。
4 E/ j* G" A. K# s2 u5 i3 h
; p, M+ Y; ?* j5 C' T$ E1 R; v  B$ S" }0 Q$ F; E) N
收藏 评论0 发布时间:2022-2-11 18:45

举报

0个回答

所属标签

相似分享

官网相关资源

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