赞
踩
树莓派4共有6个串口,1个是mini UART(UART1)及其他5个PL011 UARTs (UART0, UART2, UART3, UART4 &UART5),其中mini UART没有单独的时钟芯片,受CPU运行情况的影响,会有不稳定现象,建议使用其他串口。
1、树莓派的串口管脚定义
UART0 GPIO14 GPIO15 这个是硬件串口,默认当成串口控制台使用
UART1:mini UART 不建议使用
其他可以使用的就是UART2,UART3,UART4,UART5了
树莓派4的GPIO部分管脚定义如下图
引用树莓派实验室的一张图,根据BCMP编码(即GPIO)找到对应的物理管脚
然后就可以用杜邦线将物理管脚引出去做串口对接了。
2、串口设置
首先查看系统中所有的串口
dtoverlay -a | grep uart
3、配置开启串口2~5
编辑配置文件
sudo vim /boot/firmware/config.txt
在文件末尾添加
- dtoverlay=uart2
- dtoverlay=uart3
- dtoverlay=uart4
- dtoverlay=uart5
保存退出,重启生效
4、查看设置
ls /dev/ttyAMA*
UART 串口与 GPIO(BCM编码) 对应关系
UART0: GPIO14 = TXD0 -> ttyAMA0 GPIO15 = RXD0 -> ttyAMA0
UART2: GPIO0 = TXD2 -> ttyAMA1 GPIO1 = RXD2 -> ttyAMA1
UART3: GPIO4 = TXD3 -> ttyAMA2 GPIO5 = RXD3 -> ttyAMA2
UART4: GPIO8 = TXD4 -> ttyAMA3 GPIO9 = RXD4 -> ttyAMA3
UART5: GPIO12 = TXD5 -> ttyAMA4 GPIO13 = RXD5 -> ttyAMA4
5、测试
首先拿UART2进行环回测试:
- rpi@ubuntu:~$ python3
- Python 3.9.7 (default, Sep 10 2021, 14:59:43)
- [GCC 11.2.0] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import serial
- >>> uart2 = serial.Serial(port="/dev/ttyAMA1", baudrate=9600)
- >>> uart2.write("Hello World".encode("gbk"))
- 11
- >>> uart2.read(11)
- b'Hello World'
- >>>
还可以把UART2和UART3串接测试,将 TXD2 连接 RXD3 即 GPIO0 与 GPIO5 相连;将 TXD3 与 RXD2 连接即 GPIO4 与 GPIO1 相连。
- GPIO0 = TXD2 -> ttyAMA1
- GPIO4 = TXD3 -> ttyAMA2
-
- GPIO1 = RXD2 -> ttyAMA1
- GPIO5 = RXD3 -> ttyAMA2
打开一个python的命令行窗口,输入下面语句测试:
- import serial
- uart2 = serial.Serial(port="/dev/ttyAMA1", baudrate=115200)
- uart3 = serial.Serial(port="/dev/ttyAMA2", baudrate=115200)
- uart2.write("send Msg from UART2...".encode("gbk"))
-
- uart3.read(22)
-
- uart3.write("send Msg from UART3...".encode("gbk"))
-
- uart2.read(22)
成功之后,将UART2和UART3之间的线断开,再运行以上命令,已经无法接受发送数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。