树莓派4B串口配置

树莓派环境

硬件:树莓派4B
系统:ubuntu22.04

串口信息

树莓派4B一共有6个串口,之前的版本只有2个串口。这6个串口中,有5个时硬件串口,还有个mini串口,这5个硬件串口在我们需要使用外设时。但是,默认情况下,5个默认串口只有1个被启用了,剩下4个都是禁用的。我们要实现树莓派和外设通信,首先必须启用所有串口,接下来就介绍启用串口的方法:

1.打开终端,输入:dtoverlay -a | grep uart,查看树莓派的所有串口资源;

2.可以输入:dtoverlay -h 串口名。来查看特定串口的信息;

3.在终端输入:cd /boot/firmware可进入新的文件路径;

4.在上面路径下输入:sudo gedit config.txt打开txt文件;

5.在文件的末尾加上:

    dtoverlay = uart2

    dtoverlay = uart3

    dtoverlay = uart4

    dtoverlay = uart5

    如果没有enable_uart = 1这行代码,也要加上,并且如果有enable_uart = 0这行代码,需要注释掉;

6.重启树莓派;

7.之后打开终端,输入:ls /dev/ttyAMA*

 若出现以下一行内容,则说明配置成功:

  /dev/ttyAMA0         /dev/ttyAMA1          /dev/ttyAMA2          /dev/ttyAMA3        /dev/ttyAMA4

硬件串口(/dev/ttyAMA0)

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

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

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 Port
在这里插入图片描述

再选择 ,禁用串口登录功能,将串口用于通信。
在这里插入图片描述

再选择 ,启动串口硬件。
在这里插入图片描述
再选择OK确认
在这里插入图片描述
最后选择finish完成
在这里插入图片描述

然后执行以下步骤

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模块即可进行测试

sudo apt-get install python3-serial
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
sudo 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
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
树莓派4B串口调试助手是minicom。为了验证树莓派串口是否正常工作,可以通过安装minicom来进行验证。安装minicom的步骤如下: 1. 打开终端,输入命令:sudo apt-get install minicom,回车等待下载和安装。 2. 安装完成后,将USB转TTL连接到树莓派,并打开电脑的串口调试助手,连接到CH340,波特率设置为9600,数据位为8位,停止位为1。 3. 同时打开树莓派串口助手,在终端输入命令:minicom -D /dev/ttyAMA0 -b 9600,回车进入串口助手。 4. 在电脑端输入abcd,点击发送,可以在树莓派上看到相应的显示,表示串口已成功开启。 5. 退出minicom的步骤为:首先按下Ctrl+A,然后按下Z,再按下X,选择是即可退出。 请注意,如果需要使用串口登录树莓派功能,可以选择不启用串口登录树莓派。当被提示是否打开串口时,选择是,并选择Finish->是来重启树莓派。在终端中再次输入命令ls -l /dev,可以看到serial0映射到了mini串口上,表示mini串口已成功开启。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [树莓派4B学习笔记(11)—— 串口配置与基础用法](https://blog.csdn.net/weixin_44415639/article/details/115004935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [树莓派4B学习笔记——IO通信篇(UART)](https://blog.csdn.net/qq_41954556/article/details/122945322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值