树莓派上UART0: 对应GPIO 14和GPIO 15怎么使用来接收数据
时间: 2025-06-01 11:25:27 浏览: 21
### 树莓派 UART0 使用 GPIO 14 和 GPIO 15 接收数据教程
#### 配置方法
为了使树莓派能够通过 UART0(对应 GPIO 14 和 GPIO 15)接收数据,需要完成以下几个方面的设置:
1. **禁用串口登录功能并启用硬件串口**
进入 Raspberry Pi 的配置界面,找到 `Interfacing Options` -> `Serial` 设置项。按照以下方式操作:
- 将串口登录功能禁用(即第一个选项选择 No)。这一步是为了防止系统占用串口用于命令行登录[^5]。
- 启用串口硬件功能(即第二个选项选择 Yes),从而允许硬件串口被程序控制。
2. **修改蓝牙模块的串口分配**
在树莓派3及其后续版本中,默认情况下硬件串口 (PL011 UART) 被分配给蓝牙模块使用,而 GPIO 14 和 GPIO 15 则连接到迷你串口 (mini-UART)[^4]。这种设计会导致波特率不稳等问题。要解决此问题,可以通过加载特定 dt-blob 文件来切换串口分配,即将硬件串口恢复至 GPIO 14 和 GPIO 15 上。具体方法可参考 README 文档中的描述[^3]。
3. **安装必要的库和支持工具**
安装 Python 中支持串口通信的相关库,例如 PySerial 库:
```bash
sudo apt-get update
sudo apt-get install python3-serial
```
#### 示例代码
以下是基于 Python 编写的简单示例代码,展示如何通过 UART0 接收数据:
```python
import serial
import time
# 初始化串口对象
ser = serial.Serial(
port='/dev/ttyAMA0', # 设定串口号为 ttyAMA0
baudrate=9600, # 波特率为 9600 bps
parity=serial.PARITY_NONE, # 奇偶校验位无
stopbits=serial.STOPBITS_ONE, # 停止位为 1
bytesize=serial.EIGHTBITS # 数据位为 8 位
)
if ser.isOpen():
print("串口已打开")
try:
while True:
if ser.in_waiting > 0: # 如果有接收到的数据
data = ser.readline().decode('utf-8').rstrip() # 读取一行数据并解码
print(f"接收到的数据: {data}") # 打印接收到的内容
except KeyboardInterrupt:
ser.close()
print("\n串口已关闭")
```
上述代码实现了基本的串口监听逻辑,当检测到来自外部设备发送过来的信息时会自动打印出来[^1]。
#### 注意事项
- 确保 `/boot/config.txt` 文件中有如下配置以激活硬件串口:
```
enable_uart=1
dtoverlay=pi3-disable-bt
```
此外还需要重启树莓派让更改生效。
- 测试前确认目标设备已经正确连接到了树莓派上的 TXD0/RXD0 引脚,并且双方设定一致的通信参数比如相同的波特率等。
阅读全文
相关推荐

















