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

树莓派3重新映射UART0至GPIO36/37后串口通信故障排查求助

解决树莓派3 UART0映射到GPIO36/37后无法通信的问题

首先看你给出的dtoverlay配置,发现了一个明显的拼写错误——这大概率是导致通信失败的核心原因:

  • 你写的txd0_pin36格式错误,正确参数应该是txd0_pin=36
  • 还有rxdo_pin=37里的rxdo是笔误,正确应为rxd0_pin=37

先修正这个配置,再按以下步骤排查和调整:

1. 修正config.txt中的UART覆盖配置

打开/boot/config.txt(树莓派OS Bullseye及之后版本路径为/boot/firmware/config.txt),替换原有配置为:

dtoverlay=uart0,txd0_pin=36,rxd0_pin=37,pin_func=7

这里pin_func=7对应ALT3功能,树莓派3的GPIO36和37的ALT3确实是TXD0和RXD0,这个参数是正确的。

2. 禁用串口控制台(关键步骤)

默认情况下,树莓派的UART0可能被绑定到系统控制台,即使重新映射了引脚,控制台占用也会导致串口无法正常用于数据通信。需要禁用该功能:

  • 打开/boot/cmdline.txt,移除所有包含console=serial0,115200或console=ttyAMA0,115200的内容
  • 保存文件后重启系统

3. 优化rc.local的引脚配置

你在rc.local里设置GPIO14和15为输入是合理的,还可以补充对GPIO36/37的功能确认,确保配置生效:
在rc.local的exit 0之前添加:

raspi-gpio set 36 a3 pu
raspi-gpio set 37 a3 pu
raspi-gpio set 14 ip
raspi-gpio set 15 ip

其中a3表示设置为ALT3功能,pu是启用上拉电阻,避免引脚浮空带来的干扰。

4. 验证串口映射和状态

重启后执行raspi-gpio get,确认:

  • GPIO36显示TXD0(功能为ALT3)
  • GPIO37显示RXD0(功能为ALT3)
  • GPIO14和15显示INPUT

再执行ls -l /dev/serial*,确认/dev/serial0链接到/dev/ttyAMA0(树莓派3中UART0对应ttyAMA0,蓝牙模块占用了ttyS0)。

5. 测试串口通信

可以用以下命令测试收发功能:

  • 发送测试:echo "test" > /dev/serial0
  • 接收测试:先让外部设备发送数据,再执行cat /dev/serial0查看是否能接收到内容

如果还是无法通信,检查硬件连接:

  • 确保GPIO36(TXD0)连接到外部设备的RX引脚,GPIO37(RXD0)连接到外部设备的TX引脚
  • 确认电平匹配(树莓派为3.3V,不要连接5V设备)
  • 检查地线是否连接牢固

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:59:13