当前位置:   article > 正文

ubuntu树莓派3/4B+的GPIO硬件串口通信_树莓派4b安装ubuntu怎么使用主串口通信

树莓派4b安装ubuntu怎么使用主串口通信

一、概要

树莓派3/4B+
melodic ROS+Ubuntu18.04
特别指出,不想要禁用蓝牙功能的树莓派4b请参考树莓派4b专用配置;因个人需求,混用3B和4B的树莓派,所以统一按照下方流程进行配置。

二、树莓派硬件常识

树莓派引脚图
上图是最常见的树莓派通用40pin引脚图,对于树莓派1、2、3、4有以下共同特征:
树莓派外设串口分为两类:

  1. 硬件串口(PL011 UART0)serial1(/dev/ttyAMA0)
    该串口由硬件实现,有单独的波特率时钟源,可靠性高。
  2. mini串口(mini UART1)serial0(/dev/ttyS0)
    该串口没有波特率专用的时钟源,而由CPU内核时钟提供。波特率容易受到内核时钟的影响,性能低,功能简单。
树莓派板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。
  • 1

对于树莓派4B,在上述两个串口基础上,新增了4个PL011串口:

UART2:  TXD2-->GPIO0       RXD2-->GPIO1
UART3:  TXD3-->GPIO4       RXD3-->GPIO5
UART4:  TXD4-->GPIO8       RXD4-->GPIO9
UART5:  TXD5-->GPIO12      RXD5-->GPIO13
  • 1
  • 2
  • 3
  • 4

(此处引用自博主TEDxPY【树莓派 4 UART 多串口配置通信】一文

总的来说,我们需要将想要用的GPIO14/15口从原有的ttyS0作出如下映射关系转变:
UART0: TXD0 -> GPIO14 RXD0 -> GPIO15 - ttyAMA0
UART1: ttyS0
接线图如下:
在这里插入图片描述

三、交换硬件串口和mini串口映射关系

目的是将硬件串口设置为GPIO的串口,将ttyS0设置为mini串口。

3.1 查看原始映射

打开终端,输入:

ls /dev/tty* -al
  • 1

我的不知道为什么我的一直看不了别人的类似serial*->tty*的对应关系,但是可以看到ttyS0在ttyAMA0上方,显示如下:
初始串口配置

3.2 编辑config文件,置换硬件映射

不同于树莓派3,树莓派4B有一个firmware文件

sudo nano /boot/firmware/config.txt
  • 1

打开文件后,找到enable_uart=0这行,用#注释掉。然后在下面加上:

#enable_uart=0
enable_uart=1
dtoverlay=disable-bt //看自己的文件下蓝牙硬件串口失能文件是哪个
  • 1
  • 2
  • 3

许多教程中多是使用pi3-disable-btpi3-miniuart-bt-overlay.dtb,这是将蓝牙串口更换到mini串口,而将硬件串口换给GPIO14/15的配置文件,但是我的firmware下并没有这个文件,而是一个叫disable-bt的文件。

3.3 禁用蓝牙

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

sudo systemctl disable bluetooth
  • 1

完成后,reboot一下,蓝牙标志应该变灰或者直接没有,再重新查看映射关系:
新的映射
此时我的还是显示不了对应serial几,但是AMA0已经和S0交换位置了。
至此,硬件映射更换完成。

四、串口功能配置

树莓派GPIO的串口默认是用来做控制台使用的,连接PC后用串口助手可以看到开机信息,并能输入账户和密码,进入系统。如果想使用GPIO串口用于通信,控制台功能就会干扰数据传输。所以必须对串口功能进行设置。

4.1 编辑cmdline文件

sudo nano /boot/firmware/cmdline.txt
  • 1

如果config.txt文件中没有对cmdline文件进行操作,那么直接根据下面的步骤编辑。
特别的,4B刷ubuntu后config文件中有语句cmdline=nobtcmd.txt,此时真正的关于串口控制台的配置在后面这个名称的文件里面。
console=ttyAMA0(或者serial0),115200的语句删除。该文档将变成以下这样:

dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
  • 1

4.2 禁用蓝牙

sudo systemctl disable bluetooth
  • 1

在终端输入以上命令禁用掉和蓝牙有关的开机启动。 重启树莓派后应该没有蓝牙标志了。

4.3 串口功能配置

sudo raspi-config
  • 1

进入树莓派系统配置界面,选择5 Interfacing Options
5
进入6 Serial
6
选择<No>,关闭串口登录功能
no
选择<Yes>,打开硬件串口调试功能
在这里插入图片描述
最终会提示:串口登陆功能失能,串口调试功能使能。
在这里插入图片描述
完成后,重启树莓派更新配置。

五、连接测试

5.1 安装minicom

sudo apt-get install minicom
  • 1

5.2 与PC联调

根据二中的接线图用usb转ttl模块连接树莓派的gpio与PC,打开串口助手,设置好串口参数。

5.3 启动minicom

minicom -D /dev/ttyAMA0 -b 115200
  • 1

此时,如果出现提示:

minicom:cannot open /dev/ttyAMA0:permission denied
  • 1

是权限不够导致的,在终端输入以下命令后重新按照3启动即可。

sudo chmod 777 /dev/ttyAMA0
  • 1

5.4 minicom的基本操作

首先Ctrl+A 进入功能界面,随后选择
Z键:进入设置菜单
X键:退出minicom

5.5 连接成功

树莓派和PC能互发字符消息。
在这里插入图片描述

六、错误排查

4.3中完成了串口控制台功能的禁用,但是如果没有将4.1 cmdline文件编辑好,那么即使已经可以用硬件串口传输数据了,也会从串口十六进制接收到乱码,字符串显示可以看到是树莓派的开机和登录信息,这些信息会出现在数据传输中,随时中断数据传输。如下图所示:
在这里插入图片描述
在这里插入图片描述
如果出现这种情况,需要根据四中所讲,将所有的cmdline.txt文件或nobtcmd.txt文件中consloe与AMA0相关的都删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/411386
推荐阅读
相关标签
  

闽ICP备14008679号