树莓派4B
ubuntu mate20
该串口由硬件实现,有单独的波特率时钟源,性能高、可靠。
该串口性能低,功能也简单,并且没有波特率专用的时钟源,而是由CPU内核时钟提供。因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。
也就是说,和CPU共用同一时钟,当CPU处理较多任务时,或者低功耗时,你的串口波特率不是稳定的,数据误传、传丢就会成为常态。
注意:树莓派(3/4代)板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。
serial0即GPIO映射的串口(TXD0、RXD0),默认是ttyS0,即mini串口。
serial1即板载蓝牙映射的串口,默认是ttyAMA0,即硬件串口。
我们要做的工作是将两者映射互相交换——serial0映射成ttyAMA0,serial1映射成ttyS0。这样串口就稳定了。
终端输入ls -l /dev,发现只有serial1->ttyAMA0,没有serial0的映射。
执行
sudo raspi-config
如果没有安装raspi-config,按照这里安装
选择Interfacing Options
选择serial
再选择 否,禁用串口登录功能,将串口用于通信。
再选择 是,启动串口硬件。
然后执行以下步骤
cd /boot/firmware
sudo gedit config.txt
注意不是/boot下的config,而是/boot/firmware下的config
打开文件后,找到enable_uart=0这行,把这行用#注释掉。然后在这行下面加一行,enable_uart=1。
然后执行下面的指令
sudo gedit syscfg.txt
将里面的enable_uart=0改成enable_uart=1
然后执行reboot重启
sudo reboot
重启树莓派,再看ls -l /dev , serial0->ttyS0就出现了。
cd /boot/firmware
sudo gedit config.txt
在config.txt的结尾加上dtoverlay=disable-bt
然后在终端输入以下命令禁用掉和蓝牙有关的开机启动项
sudo systemctl disable bluetooth
因为蓝⽛也使⽤硬件串⼝,所以我们在 /boot/config.txt⾥⾯加上 dtoverlay=disable-bt ,ttyAMA0 得以释放,这时候树莓派也⾃动交换了ttyAMA0和ttyS0,把serial0 分配给了 ttyAMA0 。
映射对换的⽬的是将硬件串⼝作⽤在GPIO接⼝的Tx Rx上。我这里没有⽤到蓝⽛通讯,所以禁⽤蓝⽛后也没有再次开启,也没有测试再次开启蓝⽛通讯是否正常,如果你们那里有⽤到蓝⽛通讯,那么进⾏这⼀步的时候要谨慎。
修改系统配置⽂件/boot/config.txt
sudo vi /boot/config.txt
在⽂件中添加:
dtoverlay=disable-bt
这⾥有个坑要注意⼀下:树莓派3的参数值是pi3-disable-bt。在树莓派4B上⽤pi4-disable-bt,是不⾏的,有的人说在4B上依旧写pi3-disable-bt后成功了。具体我没有测试。我这里直接写dtoverlay=disable-bt是成功的。
重启树莓派,应该没有蓝牙标志了,serial0和serial1也调换为:
import serial
uart2 = serial.Serial(port="/dev/ttyAMA0", baudrate=9600)
uart2.write("Msg from UART2...".encode("gbk"))
uart2.read(10)
sudo apt-get update
sudo apt-get install cutecom
sudo cutecom
安装minicom
sudo apt-get update
sudo apt-get install minicom
minicom -D /dev/ttyAMA0 -b 115200
其中-D表示选择串口**/dev/ttyAMA0**,-b 设置波特率为115200,此参数可以不用设置,默认115200。
但是提示报错permission denied:
这是因为权限不够不能打开,因此使用下面的命令提升权限
sudo chmod 777 /dev/ttyAMA0
然后重新调用命令,不会报错:
minicom -D /dev/ttyAMA0 -b 115200
树莓派4B串口配置
树莓派4B没有serial0或ttyS0,serial0没有映射到ttyS0,serial0和serial1调换映射
树莓派4b串口设置教程(适用于新手)
树莓派4B(Ubuntu mate)没有serial0的问题
树莓派4b串口(UART)使用问题的解决方法 - Ubuntu 21.04
树莓派(十一)树莓派4B ubuntu20.04 UART 多串口配置通信
树莓派4BGPIO串口通讯设置(3B+通用)
树莓派开发笔记(六):GPIO口的UART的使用(串口通讯)
树莓派4B UART串口的配置
树莓派软串口设置+完整示例pigpio猪皮库