• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

树莓派4B串口配置

武飞扬头像
Cloudy_to_sunny
帮助1

树莓派环境

树莓派4B
ubuntu mate20

串口信息

硬件串口(/dev/ttyAMA0)

该串口由硬件实现,有单独的波特率时钟源,性能高、可靠。

mini串口(/dev/ttyS0)

该串口性能低,功能也简单,并且没有波特率专用的时钟源,而是由CPU内核时钟提供。因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。

也就是说,和CPU共用同一时钟,当CPU处理较多任务时,或者低功耗时,你的串口波特率不是稳定的,数据误传、传丢就会成为常态。

注意:树莓派(3/4代)板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。
学新通

serial0即GPIO映射的串口(TXD0、RXD0),默认是ttyS0,即mini串口。
serial1即板载蓝牙映射的串口,默认是ttyAMA0,即硬件串口。
我们要做的工作是将两者映射互相交换——serial0映射成ttyAMA0,serial1映射成ttyS0。这样串口就稳定了。

串口配置

打开serial0

终端输入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就出现了。

调换serial0和serial1的映射

初始是
学新通
执行以下指令

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也调换为:

学新通

测试

使用python的pyserial模块即可进行测试

import serial
uart2 = serial.Serial(port="/dev/ttyAMA0", baudrate=9600)
uart2.write("Msg from UART2...".encode("gbk"))
uart2.read(10)

有界面的可以使用cutecom串口工具进行测试

sudo apt-get update
sudo apt-get install cutecom
sudo cutecom

学新通

没有界面的可以采用minicom进行测试

安装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猪皮库

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgjcfjh
系列文章
更多 icon
同类精品
更多 icon
继续加载