激活树莓派3B串口通信能力

0x00 前言

首先介绍RPI3中的两个串口

  1. /dev/ttyAMA0:
    RPI3配备了蓝牙,为了保证蓝牙的正确使用,/dev/ttyAMA0则不再为GPIO串口服务,而是为蓝牙模块服务。

  2. /dev/ttyS0:
    被称为"mini uart",此串口代表了"Physical pin 8|10 BCM pin 14|15Wiring Pi pin 15|16".
    但是由于次串口波特率收到cpu频率影响,并不稳定,所以实际上无法被用来串口通信。

workaround思路:将ttyAMA0和ttyS0互换,那么gpio tx\rx串口映射给ttyAMA0,ttyS0则映射给蓝牙设备。
这样gpio 14、15串口就拥有了稳定,强大的通信功能。
而蓝牙串口则无法正常使用。

0x01 激活串口功能

$ sudo nano /boot/config.txt

改变使得:enable_uart=1.
若无此参数,则在最后一行添加:enable_uart=1.
重启设备。

0x02 查看串口别名

ls -l /dev

会发现:
lrwxrwxrwx 1 root root 7 Aug 28 07:41 serial0 -> ttyS0
lrwxrwxrwx 1 root root 5 Aug 28 07:41 serial1 -> ttyAMA0

0x02 禁用/dev/ttyS0的console功能

$ sudo systemctl stop [email protected]
$ sudo systemctl disable [email protected]

并且修改cmdline.txt文件

$ sudo nano /boot/cmdline.txt

删除“console=serial0,115200”,保存并重启

0x03 交换串口

$ sudo nano /boot/config.txt

在最下面添加:dtoverlay=pi3-miniuart-bt
保存并重启。
此时查看串口别名则发现:
lrwxrwxrwx 1 root root 7 Aug 28 07:41 serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Aug 28 07:41 serial1 -> ttyS0
此时,ttyAMA0串口可以正常用于串口通信,ttyS0则无法被用于串口通信,蓝牙功能失效。

参考:

https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3/#History

你可能感兴趣的:(激活树莓派3B串口通信能力)