原创 STM32L系列串口使用注意点

2020-6-21 07:56 2512 20 4 分类: MCU/ 嵌入式 文集: STM32应用
部分特性说明:
NOISE ERROR FLAG(NF,START位噪音探测标志):仅在START位时进行判断,RX下降沿启动检测,在START位的中间位置检测到1时则置位该标志,然后丢弃当前START位,等待下一个START开始条件
FRAMING ERROR FLAG(帧错误):当收到一个BREAK字符、大量噪音或者数据非同步(波特率错误),会被认为是帧错误,置位该位
OVERRUN FLAG(溢出错误):当RXNE标志置位时,又收到新字符。此时新收到的字符会被丢弃,RX寄存器中数据不会被覆盖。该位为1说明至少漏掉了1个字符数据。如果该位为1时,RXNE为0,表明数据丢弃正好发生在读取上一个数据的过程中
IDLE字符:RX一次下降沿后收到全1值(TE位关闭到开启也会在TX线上产生一个IDLE字符)
BREAK字符:RX一次下降沿后收到全0值(发送器会在BREAK帧后插入2个停止位)
发送中断包括:传输完成、CTS、发送寄存器空、帧错误
接收中断包括:IDLE线天策、溢出错误、接收寄存器非空、极性校验错误、噪音错误、帧错误、字符匹配等

UART低功耗模式使用注意:
1. 为了能够支持STOP模式下唤醒串口,UART时钟必须为HSI或者LSE
对于HSI作为串口时钟:STOP模式下,RX上的下降沿触发HSI启动。根据唤醒配置(开始条件、地址匹配以及RXNE置位),满足条件则唤醒Core,否则HSI被关闭。
对于LSE作为串口时钟:类似HSI的情况,区别在于RX下降沿会开通LSE作为串口时钟,满足唤醒条件时则唤醒Core,否则断开LSE(为了达到9600波特率,CR3:UCESM必须置位)

2. 如果使用RXNE中断作为唤醒条件,则进入STOP模式前RXNEIE位必须被置位(即必须允许RX非空中断)
3. CR1:UECM在进入STOP模式前必须置位
4. 探测到唤醒事件时,WUF标志被硬件置位(无论当前Core处于STOP模式还是运行模式),如果WUFIE置位的话,也会产生一个wakeup中断(仅在STOP模式时产生中断,运行模式不会)
5. RX下降沿将置位BUSY标志(有效开始位置位,接收完成时复位),但BUSY标志不能保证Core不会进入STOP模式
6. 发送数据时必须判断TC=1时(发送结束),才能进入STOP模式
CR3:UCESM: 该位可使STOP模式下串口时钟一直开启(即不会断开LSE或不会关闭HSI)
CR1:UESM: STM32建议在进入STOP模式前置位,在退出STOP模式后复位(该位复位后,WUF标志也会被清除)

进入STOP模式前注意点:
1. BUSY标志应该为0,该位为1时说明串口正在接收数据
2. 用户自定义的接收缓冲区为空。缓冲区有数据的话,应该处理完再进入STOP模式。
3. 如果使用了RS485-RTU模式,要确保超时定时器未工作。如果定期器在工作,表明正在的等待T3.5过程中

作者: RLink, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3918760.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
20
关闭 站长推荐上一条 /2 下一条