树莓派CM4六路串口设置及使用

最近在做公司项目的时候使用了CM4核心板,与底板相对应的是野芯科技的5G底板。有一个需求是调用串口接收GPS模块信息,在配置串口时候绕了好大一圈,现在准备总结下。

树莓派包含两个串口

1.硬件串口(/dev/ttyAMA0),硬件串口由硬件实现,有单独的波特率时钟源,性能高,可靠。一般优先选择这个使用。

2.mini串口(/dev/ttyS0),mini串口时钟源是由CPU内核时钟提供,波特率受到内核时钟的影响,不稳定。
树莓派CM4六路串口设置及使用_第1张图片
3.将树莓派的硬件串口与mini串口默认映射对换
输入命令
修改

sudo vim /boot/config.txt

在该文件中加一行代码 dtoverlay=pi3-miniuart-bt
可以看出,硬件串口(ttyAMA0)映射到了GPIO Tx(14) Rx(15) 引脚上。

4.前面步骤已经交换了硬件串口与mini串口的映射关系,但是,现在还不能使用树莓派串口模块与电脑进行通信,因为,树莓派io口引出串口默认是用来做控制台使用的,即是为了用串口控制树莓派,而不是通信。所以我们要禁用此默认设置。

sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

然后命令 sudo vim /boot/cmdline.txt
删除语句 console=serial0,115200

然后重启树莓派,
至此,串口配置相关内容结束

以上是普通树莓派 3b 3b+的使用 ,但是我需要调用CM4的第6个串口
树莓派CM4六路串口设置及使用_第2张图片

首先我们要在config.txt下加入如下代码:
dtoverlay=uart0
dtoverlay=uart3,txd3_pin=4,rxd3_pin=5
dtoverlay=uart4,txd4_pin=8,rxd4_pin=9
dtoverlay=uart5,txd5_pin=12,rxd5_pin=13
此处由于UART0是默认为GPIO14和GPIO15的,所以我们只需要写dtoverlay=uart0便可,config.txt大家可以使用任意方式修改,这边在系统下使用vim修改

添加完成后保存退出,此处需要重启系统,但是我们本身就需要接线,为了防止带电操作,我们将系统断电,先将UART0复用的GPIO14和GPIO15用USB转TTl的设备与电脑连接,连接完成后上电,等待系统启动,系统启动后,我们打开终端,输入dmesg | grep tty,查看系统tty相关的log
树莓派CM4六路串口设置及使用_第3张图片

重启后就可以看见 ls /dev/
多出了 ttyAMA0 ttyAMA1 ttyAMA2 ttyAMA3
然后直接调用就可以了

你可能感兴趣的:(服务器,运维,linux)