树莓派4B串口配置

环境:

树莓派4B,ubuntu mate20

1.外设串口简介

1.1 硬件串口(/dev/ttyAMA0)

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

1.2 mini串口(/dev/ttyS0)

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

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

1.3 外设串口的默认分配和改进方案

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

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

1.4 补充

树莓派IO引出的串口默认是用来做控制台使用的(使用串口登录树莓派,类似SSH登录那种),
它的初衷是为了在没有网络接口时,通过串口对树莓派进行相关的配置。

2. 串口配置步骤

运行以下命令可以查看到默认的串口分配方式:

ls /dev -al

在这里插入图片描述

 由于硬件串口分配给板载蓝牙使用,所以我们要释放掉,并且设置硬件串口分配给GPIO串口。

2.1 修改串口配置

sudo raspi-config

进入树莓派系统配置界面,选择第五个Interfacing Options

进入P6 Serial

选择关闭串口登录功能,打开硬件串口调试功能。

终端键入:

sudo reboot

 2.2 设置硬件串口为GPIO串口(调换serial0和serial1的映射)

尝试了很多教程都没有成功,直到看到了这位大佬的文章:树莓派4B没有serial0或ttyS0,serial0没有映射到ttyS0,serial0和serial1调换映射_红衰绿老的博客-优快云博客_ttys0 树莓派

如果各位是树莓派4B的话,我自己反正是/boot下没有overlays文件夹的,手动创建然后下载dtb文件改config也没用,只有用以下方法才成功!

编辑: (注意是firmware里的config不是boot下的)

cd /boot/firmware
sudo gedit config.txt

在config.txt的结尾加上

dtoverlay=disable-bt

 保存,在终端输入以下命令禁用掉和蓝牙有关的开机启动项

sudo systemctl disable bluetooth

 重启树莓派,应该没有蓝牙标志了,serial0和serial1也调换为:

3. minicom串口助手测试

3.1 安装minicom

sudo apt-get install minicom

3.2 安装完成后启动minicom

minicom -D /dev/ttyAMA0 -b 115200

其中-D表示选择串口**/dev/ttyAMA0**,-b 设置波特率为115200,此参数可以不用设置,默认115200。

但是提示报错permission denied:

解决方法:使用命令

sudo chmod 777 /dev/ttyAMA0

然后重新调用命令,不会报错:

 3.3 电脑发送数据给树莓派

<think>好的,我现在需要帮用户解决在Ubuntu 22系统上配置树莓派4B的串口的问题。首先,我得回忆一下树莓派4B的串口配置相关知识。树莓派4B的串口有多个,默认情况下,mini UART用于蓝牙,而PL011 UART通常分配给GPIO引脚。用户可能需要通过配置来启用串口并切换其用途。 接下来,用户提到的是Ubuntu 22系统,这可能指的是Ubuntu 20.04或者22.04,但假设是22.04。我需要确认在树莓派上运行的Ubuntu系统如何配置串口。根据之前的引用内容,比如引用[2]提到串口默认波特率是115200,引用[3]提到蓝牙使用mini UART,串口使用PL011 UART。所以可能需要修改设备树覆盖文件,禁用蓝牙,将PL011 UART释放出来给用户使用。 步骤可能包括:编辑/boot/firmware/config.txt文件,添加相关配置,比如dtoverlay=disable-bt,关闭蓝牙,这样PL011就可以用于串口通信。同时,需要禁用串口控制台,因为如果控制台占用了串口,用户程序就无法访问。这可以通过修改cmdline.txt文件,删除console=serial0,115200的部分。 然后,安装必要的串口工具,比如minicom,配置串口权限,可能需要将用户加入dialout组。最后测试串口通信,使用echo命令发送数据,或者用minicom接收。 还需要注意权限问题,用户可能遇到无法访问/dev/ttyAMA0的情况,这时候需要正确设置权限。另外,检查系统服务是否占用了串口,比如串口控制台服务,需要确保其被禁用。 用户的问题可能还涉及硬件连接,比如正确连接GPIO引脚到USB转TTL模块,但用户可能已经完成了硬件部分,所以重点在软件配置。根据引用[3],PC端用串口软件查看日志,所以用户可能需要配置Ubuntu系统上的串口软件,比如minicom或screen,设置正确的波特率(115200)和其他参数。 总结步骤大致是:1. 修改config.txt和cmdline.txt;2. 重启;3. 安装工具和设置权限;4. 测试通信。同时要参考引用中的信息,比如波特率设置和蓝牙与串口的关系。</think>### Ubuntu 22 系统中配置树莓派4B串口的步骤 #### 1. **硬件准备与连接** - 使用 USB 转 TTL 模块连接树莓派 GPIO 的 **TX (GPIO14)** 和 **RX (GPIO15)** 引脚,确保共地(GND)连接[^3]。 - 检查硬件连接稳定性,避免接触不良。 #### 2. **系统配置修改** - **步骤1:禁用蓝牙释放 PL011 UART** 编辑 `/boot/firmware/config.txt` 文件,添加以下内容: ``` dtoverlay=disable-bt enable_uart=1 ``` 此操作将禁用蓝牙并将 PL011 UART 分配给 GPIO 串口[^3][^4]。 - **步骤2:关闭串口控制台** 编辑 `/boot/firmware/cmdline.txt`,删除 `console=serial0,115200` 参数,避免系统控制台占用串口[^4]。 - **步骤3:重启生效** ```bash sudo reboot ``` #### 3. **安装串口工具与权限设置** - 安装 `minicom` 或 `screen` 工具: ```bash sudo apt install minicom screen ``` - 将当前用户加入 `dialout` 组以获取串口访问权限: ```bash sudo usermod -aG dialout $USER ``` 注销后重新登录生效。 #### 4. **验证与测试** - **检查串口设备** 重启后确认设备 `/dev/ttyAMA0` 存在: ```bash ls -l /dev/ttyAMA0 ``` 输出应类似:`crw-rw---- 1 root dialout 204, 64 ...` - **发送测试数据** 使用 `echo` 命令向串口发送数据: ```bash echo "hello" > /dev/ttyAMA0 ``` 通过 PC 端串口调试工具(如 `minicom` 或 PuTTY)查看是否接收到数据[^3]。 - **接收数据测试** 使用 `minicom` 监听串口: ```bash minicom -b 115200 -D /dev/ttyAMA0 ``` #### 5. **常见问题解决** - **无数据/黑屏**:检查波特率是否设置为 `115200`,重新插拔电源确保硬件复位[^2]。 - **权限不足**:确认用户已加入 `dialout` 组,或临时使用 `sudo` 执行命令。 - **内核版本兼容性**:若使用自定义内核编译,需确保串口驱动已正确配置[^1]。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值