STM32 的 USART 和 UART 有什么区别?

STM32 · 8 浏览
STM32 的 USART 和 UART 有什么区别?

回答(4)

STM32H7系列有些USART支持FIFO和DMA,同步模式下性能更好,但功耗也高,低功耗项目优先用UART。
低功耗老王 · 2026-08-18
实际调试时,如果USART同步没配好,SCLK会乱跳,用示波器先看时钟,再查数据线,别一上来就怀疑波特率。
嵌入式小张 · 2026-08-18
补充:USART的同步模式还能做LIN、IrDA,但UART没有这些扩展,选型时看手册的‘Features’表,别光看名字。
老电工阿强 · 2026-08-18
在STM32中,USART(Universal Synchronous/Asynchronous Receiver/Transmitter)和UART(Universal Asynchronous Receiver/Transmitter)的核心区别在于**同步模式**。USART支持时钟线(SCLK)驱动的同步通信,可外接SPI类设备或智能卡(ISO 7816),而UART仅支持异步模式,无时钟输出。 **实操建议**: 1. **选型**:若需与外部芯片同步通信(如MISO/MOSI+SCLK),选USART;仅做串口调试或与PC通信,UART足够(如STM32F103的USART1/2/3,但部分型号如F0的UART4/5仅异步)。 2. **配置差异**:USART初始化时需设置`USART_InitStructure.USART_Mode`(同步时加`USART_Mode_Sync`),并配置`USART_Clock`和`USART_CPOL/CPHA`;UART则忽略这些字段。 3. **硬件复用**:同步模式下SCLK引脚(如PA8)必须复用为USART_CK,否则通信失败。 代码示例(同步模式使能): ```c USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx | USART_Mode_Sync; USART_InitStructure.USART_Clock = USART_Clock_Disable; // 或Enable USART_InitStructure.USART_CPOL = USART_CPOL_Low; USART_InitStructure.USART_CPHA = USART_CPHA_1Edge; ``` **注意**:实际项目中,多数场景用UART即可,避免因同步配置错误导致数据错位。
mcuku 阿沐 · 2026-08-18

🧰 配套工具

🔗 波特率计算器