玩转树莓派串口

玩转树莓派串口

2024年2月:WiringPi已弃用,新版本系统上已经不能通过 gpio readall 来查看GPIO信息


树莓派 2 代和 3 代有两个 UART,分别是 UART0 和 UART1。树莓派 4 有四个额外的 UART 接口,但只有 UART0 和 UART1 是默认启用的(GPIO 引脚 14 和 15)。其他的 UART 可以通过修改设备描述树启用。

展示所有串口

命令:

1
$ dtoverlay -a | grep uart

输出如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
neolux@Neoluxa:~ $ dtoverlay -a | grep uart
midi-uart0
midi-uart0-pi5
midi-uart1
midi-uart1-pi5
midi-uart2
midi-uart2-pi5
midi-uart3
midi-uart3-pi5
midi-uart4
midi-uart4-pi5
midi-uart5
miniuart-bt
qca7000-uart0
uart0
uart0-pi5
uart1
uart1-pi5
uart2
uart2-pi5
uart3
uart3-pi5
uart4
uart4-pi5
uart5
neolux@Neoluxa:~ $
  • 由于使用的是 树莓派 4b,所以不能使用带有 pi5 字样的串口

查看特定串口信息

命令:

1
$ dtoverlay -h uart2

输出如下:

1
2
3
4
5
6
7
8
9
10
neolux@Neoluxa:~ $ dtoverlay -h uart2
Name: uart2

Info: Enable uart 2 on GPIOs 0-3. BCM2711 only.

Usage: dtoverlay=uart2,<param>

Params: ctsrts Enable CTS/RTS on GPIOs 2-3 (default off)

neolux@Neoluxa:~ $

该命令会展现 GPIO 与 UART 串口的分配:GPIO 0-3 对应 UART2

其中,GPIO2,3是CTS/RTS口,而GPIO0,1是TX,RX

方便记忆,序号小的两个GPIO中,小的是TX,大的是RX

启用串口2~5

使用 vim 编辑 /boot/config.txt

@2024/02/05 /boot/config.txt 文件被移动到了 /boot/firmware/config.txt

1
$ sudo vim /boot/config.txt

在文件结尾添加以下内容

1
2
3
4
dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
dtoverlay=uart5

保存退出后重启

重新启动后,检查 /dev 目录下,查看是否生效

1
$ ls /dev/ttyAMA*

结果显示如下:

1
2
neolux@Neoluxa:~ $ ls /dev/ttyAMA*
/dev/ttyAMA2 /dev/ttyAMA3 /dev/ttyAMA4 /dev/ttyAMA5

测试串口

通过上述命令查看串口对应的 GPIO,以串口2为例

1
2
GPIO0 -> TXD2 -> /dev/ttyAMA2
GPIO1 -> RXD2 -> /dev/ttyAMA2

如果不知道针脚和GPIO编号的对应关系,可以输入 pinout 命令查看

image-20240205205838181

自接收测试

连接同一个串口的 TX和RX后,运行 Python

输入以下参考测试代码

1
2
3
4
from serial import Serial
s2 = Serial("/dev/ttyAMA2", baudrate=9600)
s2.write("Hello World".encode("gbk"))
s2.read(11)

运行结果如下

1
2
3
4
5
6
>>> from serial import Serial
>>> s2 = Serial("/dev/ttyAMA2", baudrate=9600)
>>> s2.write("Hello World".encode("gbk"))
11
>>> s2.read(11)
b'Hello World'

连接电脑测试

使用USB转TTL连接电脑后,树莓派运行Python,测试发送和接收

测试发送

测试接收

串口终端登录

串口1 可以作为串口TTY用于连接

raspi-config 中设置 Interface Options > Serial Port 设置成 Yes ,然后重启

使用 USB转TTL 连接电脑与树莓派的串口1(P14-TX,P15-RX),之后在设备管理器中找到树莓派连接的串口(本次使用COM5)

image-20240205211816644

在SSH软件中设置好之后就可以连接了

image-20240205211915622

image-20240205211955118