搜索
查看: 11793|回复: 7

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

[复制链接]
  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2017-4-1 15:06:35 | 显示全部楼层 |阅读模式
    LPUART 唤醒STOP MODE 下的MCU

    前言
          在很多低功耗应用中都需将MCU 进入STOP MODE 以节省更多的功耗,但是在以前的架构中,如果要达到这种应用,只能在进入低功耗模式之前将串口的管脚设置成普通的GPIO 的中断模式,虽然也可
    以达到效果,但是这样会丢失第一个字节.所以我们现在可以使用新的LPUART,这样不仅可以把MCU 从STOP mode 下,还可以不丢失第一个数据,但是还是有一定限制和使用方法的.下面我们将详细介绍一下。


    1.使用不同时钟下LPUART 的方法



    1.1 使用LSE 的LPUART
          首先我们先介绍一下使用LSE 下的LPUART,这个相对简单了,因为LSE 只有32.768Khz,LPUART 的波特率最大也只能到9600,速度下来了,自然就没有那么多问题了.


    1.2 使用HSI16 的LPUART
         在使用HSI16 作为LPUART 的时钟,这样波特率就可以上升很多,这样就会产生一个限制问题,高速的波特率与LPUART 的唤醒时间差的问题.我们以STM32L431 作为例子,他的LPUART 唤醒时间如
    下 :
         以下我们以某客户作为例子,他们反映,LPUART 在576000 时唤醒会丢失字节.我们来详细分析一下这些情况.
    3.PNG.thumb.jpg
    如果应用是在STOP MODE 1/2 下,则需要等待8.5uS,但是实际上,串口通信是异步的,并不会等等待,不想IIC 有始终延展功能.这时候我们需要做的就是在这样情况下,串口的最大波特率.
          首先我们需要需要以下两个参数 :
    tWULPUART (wakeup time from Stop mode),这个可以从数据手册上查询.(如上表)
    LPUART 接收的允许公差(如下表)


    下面我们以8bit ,1STOP,BRR ≥4096,STOP2 mode作为例子:
          首先我们可以通过上表”Table 165: Tolerance of the LPUART receiver when BRR[3:0] is different from 0000”得出LPUART在这情况下的接收容差是4.42%.
          容错公式为 : DTRA + DQUANT + DREC + DTCL + DWU < USART
                    DTRA: 预期发送的容错率(这个包含发射器本身振荡器的偏差)
                    DQUANT: 波特率接收的错误率
                 DREC: 接收晶体的偏差
                 DTCL: 发送的偏差率 (一般都是发送器采用不对称的上升沿和下降沿时序)
                    DWU :是从stop mode 下唤醒后采样点的偏差而导致的错码率.
          为了更容易计算,我们简化一下公式,假设DTRA,DQUANT,DREC和DTCL为0%,所以DWU是4.42%,为了更准确,我还要考虑晶体的误差,我们使用的HIS误差是1%, tWULPUART = 8.5uS(这里采用的是STOP2):
                    DREC + DWU < LPUART
                    =>1% + DWU <4.42%
                    =>DWU<3.42%
                   因为我们这里采用的是8bit ,1stop,所以 :
                   M[1:0] = 00 :
                   DWU = tWUUSART/(10 × Tbit )
                   Tbit min = 8.5us/( 10* 3.42%)
                   Tbit min = 24.8us
          所以在这个条件下最大的波特率是1/24.8us,即要小于40.3K的波特率.我们客户使用的是576000的波特率显然会丢失第一个字节,当修改为19200后,问题就解决了.




    LPUART唤醒STOP MODE下的MCU.pdf (244.76 KB, 下载次数: 423)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2017-5-15
    发表于 2017-4-24 10:49:16 | 显示全部楼层
    你好,这个唤醒的实现,有代码吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    48

    主题

    657

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2021-2-4
    发表于 2017-6-16 08:00:33 | 显示全部楼层
    论坛里的风子有实现样例的。用的是L476.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2020-10-27
    发表于 2018-5-16 15:53:49 | 显示全部楼层
    w分析得不错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2020-12-28
    发表于 2020-4-29 20:30:20 | 显示全部楼层
    分析得不错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    77

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2021-1-8
    发表于 2020-12-24 11:50:11 | 显示全部楼层
    正在使用,学习了,感谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    9

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2020-12-25
    发表于 2020-12-24 12:43:44 | 显示全部楼层
    你好,对应Stop 模式的功耗是多少?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    11

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2021-1-15
    发表于 2021-1-15 15:30:24 | 显示全部楼层
    谢谢分享!
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-29 01:01 , Processed in 0.205937 second(s), 42 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表