You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32 UART TX与RX正确连接方法及接收异常问题求助

STM32 UART 连接与接收异常问题解答

一、STM32 UART TX/RX 正确连接方式

  • 设备交叉连接:设备A的TX引脚接设备B的RX引脚,设备A的RX引脚接设备B的TX引脚
  • 强制共地:两块设备的GND引脚必须连接,否则信号电平无参考基准,必然出现通信异常
  • 硬件流控(可选):若启用CTS/RTS,需交叉连接A的CTS→B的RTS、A的RTS→B的CTS;无需求时可将对应引脚配置为普通IO或悬空

二、单次接收正常后续全为0的排查与解决建议

1. 修正RXNE标志位处理逻辑

RXNE(接收寄存器非空)是只读硬件标志位,不能通过直接修改CR1寄存器清除,必须通过读取USARTx->DR寄存器来复位该标志。如果未正确读取DR,RXNE会一直置位,阻塞后续接收流程。

2. 检查中断与NVIC配置(若用中断接收)

  • 中断服务函数中必须完整读取DR寄存器,否则中断会持续触发或被内核屏蔽
  • 确认NVIC中UART接收中断的优先级设置合理,避免被高优先级中断抢占导致接收处理不及时

3. 规范接收模式调用逻辑

  • 若使用HAL库的HAL_UART_Receive()或HAL_UART_Receive_IT(),单次接收完成后必须重新启动接收流程,否则UART外设不会主动监听新数据
  • 检查UART句柄的RxState状态,若处于HAL_UART_STATE_BUSY_RX以外的状态,需重新初始化或调用HAL_UART_Receive_IT()恢复接收

4. 硬件与电平验证

  • 用示波器测量接收端RX引脚波形,确认发送端是否持续输出有效数据(而非固定0电平)
  • 复查引脚配置:确保RX/TX引脚已正确配置为UART复用功能,未被误设为普通IO或其他外设引脚
  • 检查电源稳定性:供电波动会导致UART外设工作异常,出现接收数据全0或丢失

5. 寄存器配置复查

你提到的CR1值0x1101(二进制1000100000001),对应STM32L476的USART_CR1:

  • 确认RE位(位2)是否为1:RE=1才会使能接收功能,若RE=0直接导致无法接收
  • 检查CR2的停止位配置,确保收发两端停止位数量一致(如均为1位)
  • 确认OVER8位(位15)配置与发送端一致,过采样模式不匹配会导致数据解析错误

6. 软件逻辑排查

  • 排查是否有其他代码意外修改UART寄存器(如误写USARTx->CR1、USARTx->CR2)
  • 若用DMA接收,检查DMA是否开启循环模式,是否存在DMA传输完成中断未处理导致接收停止

内容的提问来源于stack exchange,提问作者kostas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:16:11