1. 引言 在很多 STM32 系列中, USART 是不能在 STOP 模式下工作的。但是少数的系列中可以支持 USART 工作在 STOP0/1 模式下并可将芯片唤醒,比如 STM32L0 系列和STM32L4 系列。那么,如果要在 STOP0/1 模式下使用 USART,有什么需要注意的地方呢?0 m6 `4 ?% @* A* `* b9 k3 { 2. 问题/ U f3 K: T( F, Y" |" k! t 2.1.问题起源) @/ C( X) l- K) {6 n9 Q2 h" C: \ 某客户在其产品的设计中,使用了 STM32L433VCT6。由于是低功耗产品应用,客户在阅读数据手册的时候,发现 STM32L4 可以支持 USART 工作在 STOP 模式下,如图1:6 x# E9 T0 }; Q, F( B4 s! s7 X- S$ Q6 W ! f0 f o/ m7 P: G5 v( [ 客户看到 USARTx 可以在 STOP 0/1 模式下工作,很开心,打算把它用起来。需要注意的是,这里打了个上标“(6)”,要先看一下写的是什么。+ l" o' P+ F: n0 e4 S, d 这个标注 6 的内容是这样的:“UART and LPUART reception is functional in Stop mode, and generates a wakeup interrupt on Start, address match or received frame event. ”意思是说,UART 和 LPUART 接收可以在 STOP 模式下工作,并可以在起始位、地址匹配或接收帧事件上产生唤醒中断。嗯,在此,再次确认确实是可以在 STOP 模式下工作的。同样的表格也出现在 STM32L433 的参考手册 RM0394 中的第 5 章 Power Control (PWR) 中。 因为是接收,所以客户也在参考手册的“38.5.3 USART receiver”一节中关于时钟源的选择中看到了“Choosing LSE or HSI16 as clock source may allow the USART to receive data while the MCU is in low-power mode. Depending on the received data and wakeup mode selection, the USART wakes up the MCU, when needed, in order to transfer the received data by software reading the USART_RDR register or by DMA.”意5 K8 K. ~- X' m$ f6 W. D 思是说,当 MCU 工作在低功耗模式下时,选择 LSE 或者 HSI16 作为时钟源可以允许USART 接收数据。根据接收的数据和唤醒模式的选择,USART 在需要时唤醒 MCU,以便通过软件读取 USART_RDR 寄存器或 DMA 传输接收到的数据。 & I& W- e" h7 w" v3 T4 B 2.2.问题描述 客户确定可以使用之后,客户开始其软件设计,使用了 USART3,选择采用了 LSE(32.768KHz)作为 USART3 的时钟源,使其可以工作在 STOP 1 模式,波特率为9600bps。在软件设计上,客户采用了 STM32L4Cube 的 LL 库来实现。但是,当其写完软件之后,却发现 USART3 无法正常建立通信。 客户分享了其时钟配置代码,如图 2 所示。 完整版请查看:附件 / J% ~) q/ \& A. U$ y& Z , w/ v: c) v- D8 U |
基于STM32L476+64M QSPI接口PSRAM(IPS6404L)开源分享(含源码)
基于STM32L4R9 的QuadSPI Flash 通讯速率不理想经验分享
STM32L4超低功耗功能概述
基于STM32L431RC Standby和RTC中断唤醒经验分享
基于STM32L431的睡眠模式经验分享
STM32L4R9 的 QuadSPI Flash 通讯速率不理想
STM32L4、STM32L4+和STM32G4系列 微控制器上的专利代码读取保护
【实测教程】基于STM32L4系列的实测教程分享合集
STM32L4系列MCU的五种振荡器和使用说明
【实测教程】STM32CubeMX-STM32L4之研究串口通信(printf)