0. 实验准备以及原理
0.1 实验准备
安装树莓派官方系统的树莓派 4B,有 python 环境,安装了 serial
库
杜邦线若干
屏幕或者可以使用 VNC 进入到树莓派的图形界面
0.2 原理
树莓派 4B 有 UART0(PL011)、UART1(mini UART)和 4 个 PL011 串口共计有 6 个 UART
1. 硬件串口配置
可以将硬件串口(例如 /dev/ttyAMA0
)配置为普通的串口设备,以便与其他设备进行串口通信
确保树莓派的引脚上的串口功能没有被占用。默认情况下,树莓派的 GPIO 引脚会使用串口功能。可以通过编辑 /boot/config.txt
文件来禁用串口功能。在文件的末尾添加或修改以下行,保存文件后重启树莓派(可以使用vi来编辑此文件,vi 的使用可以查看这一篇文章):
enable_uart=1
在终端中运行以下命令可以确认驱动是否已经加载:
ls -l /dev/ttyAMA0
能看到下面的输出就代表驱动是正常的
默认情况下,树莓派会将 /dev/ttyAMA0
用作终端串口,而不是普通的串口设备。可以通过编辑 /boot/cmdline.txt
文件来禁用终端串口。找到以 console=serial0
开头的行,并将其修改为 console=tty1
,如下图所示
确保你的用户被添加到 dialout
组中,以便具有串口访问权限。运行以下命令将当前用户添加到 dialout
组:
sudo usermod -a -G dialout $USER
在添加到 dialout 组后,需要注销并重新登录才能使更改生效,到这里硬件串口就配置完成了,不需要看其他的可以直接跳到最后一节进行验证
2. 其他串口配置
2.1 展示所有串口命令
输出下面的命令可以看到所有的串口
dtoverlay -a | grep uart
2.2 查看特定串口信息
使用下面的命令会展示串口的配置信息
dtoverlay -h uart3
2.3 配置开启串口 UART2-5
在/boot/config.txt
的末尾添加如下的代码,保存重启树莓派
dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
dtoverlay=uart5
查看是否生效
ls /dev/ttyAMA*
结果如下图
到这里就打开了所有的串口了
3. 验证结果
各 UART 串口与 GPIO 对应关系:
GPIO14 = TXD0 -> ttyAMA0
GPIO0 = TXD2 -> ttyAMA1
GPIO4 = TXD3 -> ttyAMA2
GPIO8 = TXD4 -> ttyAMA3
GPIO12 = TXD5 -> ttyAMA4
GPIO15 = RXD0 -> ttyAMA0
GPIO1 = RXD2 -> ttyAMA1
GPIO5 = RXD3 -> ttyAMA2
GPIO9 = RXD4 -> ttyAMA3
GPIO13 = RXD5 -> ttyAMA4
这里进行两个验证:UART2的自环测试,UART2和3的串口间通信
3.1 UART2的自环测试
杜邦线短接 GPIO4 和 GPIO5
编写下面的 python 程序
import serial
ser1 = serial.Serial(port='/dev/ttyAMA2',baudrate=115200)
ser1.write(b'Hello, World!\n')
data = ser1.readline()
print(data)
执行结果如下图