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

【实战经验】LPUART唤醒STOP MODE下的MCU

[复制链接]
zero99 发布时间:2017-4-1 15:06
LPUART 唤醒STOP MODE 下的MCU
- u! h. g9 l& h7 c6 @4 [- z! i
1 V! l' T" c8 \1 W
前言  [  K* K# @+ T3 c5 J
      在很多低功耗应用中都需将MCU 进入STOP MODE 以节省更多的功耗,但是在以前的架构中,如果要达到这种应用,只能在进入低功耗模式之前将串口的管脚设置成普通的GPIO 的中断模式,虽然也可/ h+ t. U0 Q' w) V
以达到效果,但是这样会丢失第一个字节.所以我们现在可以使用新的LPUART,这样不仅可以把MCU 从STOP mode 下,还可以不丢失第一个数据,但是还是有一定限制和使用方法的.下面我们将详细介绍一下。) Y2 B/ W' ~' K, `

7 e' n6 G7 p% q' B7 |( v4 `! c
7 L- J$ E. b+ c- e/ M: ?$ A/ {1.使用不同时钟下LPUART 的方法3 {2 X. t4 _5 h( }9 r2 x
; m$ R3 H9 R( A

% F/ n& O! D% y3 E% t

  n0 t/ a1 k. ~2 y1.1 使用LSE 的LPUART# q3 s+ D' `- N+ f2 u" E# g4 Y
      首先我们先介绍一下使用LSE 下的LPUART,这个相对简单了,因为LSE 只有32.768Khz,LPUART 的波特率最大也只能到9600,速度下来了,自然就没有那么多问题了.
! y% y3 O) w6 F2 C; N5 Z
) u/ w7 P4 I' H  ]* W# U
& h& Q/ S# A% h* n1.2 使用HSI16 的LPUART0 Z: @( z! {5 {# s
     在使用HSI16 作为LPUART 的时钟,这样波特率就可以上升很多,这样就会产生一个限制问题,高速的波特率与LPUART 的唤醒时间差的问题.我们以STM32L431 作为例子,他的LPUART 唤醒时间如7 Q$ U( v! r4 X5 n) t' x
下 :- _* D) A8 d$ n, T& ^0 j# U$ A4 `# @
     以下我们以某客户作为例子,他们反映,LPUART 在576000 时唤醒会丢失字节.我们来详细分析一下这些情况.' C0 K/ l; D- K
3.PNG.thumb.jpg 2 y' ^( z( \) h8 x0 A3 e' ?
如果应用是在STOP MODE 1/2 下,则需要等待8.5uS,但是实际上,串口通信是异步的,并不会等等待,不想IIC 有始终延展功能.这时候我们需要做的就是在这样情况下,串口的最大波特率.
5 e1 o; X0 F$ `' g+ z6 N  N3 j2 G      首先我们需要需要以下两个参数 :' |3 P- A- W. P4 ]  [0 W3 f
tWULPUART (wakeup time from Stop mode),这个可以从数据手册上查询.(如上表)
$ b& c- Z) ~& p; d2 ^. GLPUART 接收的允许公差(如下表)2 x: X( D6 V* E" }) Z# d' \; L! Z8 d

/ x$ `- t% a8 a$ y9 n* C0 L" G7 R+ N
! ]2 J2 }, _& k# i下面我们以8bit ,1STOP,BRR ≥4096,STOP2 mode作为例子:
1 X, F/ ^8 }! v( F5 e      首先我们可以通过上表”Table 165: Tolerance of the LPUART receiver when BRR[3:0] is different from 0000”得出LPUART在这情况下的接收容差是4.42%.
% `/ {, q! M' J& e$ M" H9 X1 y      容错公式为 : DTRA + DQUANT + DREC + DTCL + DWU < USART/ L9 u7 e; }& Q) q) i
                DTRA: 预期发送的容错率(这个包含发射器本身振荡器的偏差)
) Y. L4 K0 w) ~1 e! N; a& M                DQUANT: 波特率接收的错误率5 _) k6 G0 t5 h+ `. @0 N# d
             DREC: 接收晶体的偏差
& W7 p; g' h% D             DTCL: 发送的偏差率 (一般都是发送器采用不对称的上升沿和下降沿时序)
: {+ J  p# l& L, ?                DWU :是从stop mode 下唤醒后采样点的偏差而导致的错码率.
' i, U! i* K* w5 j      为了更容易计算,我们简化一下公式,假设DTRA,DQUANT,DREC和DTCL为0%,所以DWU是4.42%,为了更准确,我还要考虑晶体的误差,我们使用的HIS误差是1%, tWULPUART = 8.5uS(这里采用的是STOP2):  g3 ^3 W9 A- w5 H5 C4 F5 j" U- l
                DREC + DWU < LPUART+ u9 w. C) c: H: W
                =>1% + DWU <4.42%
0 u0 h. m) ]' q! ~  _                =>DWU<3.42%
  t8 x$ \; @1 v8 ?/ |               因为我们这里采用的是8bit ,1stop,所以 :
+ `9 N7 {7 f5 l, U* ?+ p  Z/ h               M[1:0] = 00 :
; m, A4 b% I4 s               DWU = tWUUSART/(10 × Tbit )2 u+ f3 V5 c# @0 d6 i! b6 l" n
               Tbit min = 8.5us/( 10* 3.42%)
) r2 l( f* s1 t/ B6 S. E& |/ c* x& N               Tbit min = 24.8us7 C1 b7 b6 K0 J, W# w
      所以在这个条件下最大的波特率是1/24.8us,即要小于40.3K的波特率.我们客户使用的是576000的波特率显然会丢失第一个字节,当修改为19200后,问题就解决了.
! I3 t) q0 W9 D2 a, [! ~

8 I' W9 j7 P6 h+ L; h0 Y8 [( O/ \% `8 v9 T& l* K4 Z: V: O' ~9 I

' r3 D1 e! S: C2 L  ?% z5 j LPUART唤醒STOP MODE下的MCU.pdf (244.76 KB, 下载次数: 376)
收藏 5 评论7 发布时间:2017-4-1 15:06

举报

7个回答
sssh 回答时间:2017-4-24 10:49:16
你好,这个唤醒的实现,有代码吗?
ataudio 回答时间:2017-6-16 08:00:33
论坛里的风子有实现样例的。用的是L476.
jangyouhua 回答时间:2018-5-16 15:53:49
w分析得不错
9 n" J6 Q0 V. I* C* @
man9953212 回答时间:2020-4-29 20:30:20
分析得不错
zzz80675@sohu.c 回答时间:2020-12-24 11:50:11
正在使用,学习了,感谢
dfr3602 回答时间:2020-12-24 12:43:44
你好,对应Stop 模式的功耗是多少?
lijinqiu 回答时间:2021-1-15 15:30:24
谢谢分享!

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版