树莓派的串口问题

树莓派的串口使用之前需要做一些工作。因为树莓派本身是有两个串口的,一个是硬件串口,设备名字叫做:/dev/ttyAMA0  还有一个叫mini串口,这是个比较鸡肋的东西,它的时钟源是受内核的频率的影响的,因此如果拿他来做通信,那很容易就会波特率不一致而出错。所以一般就得用硬件串口ttyAMA0。

而树莓派的初始设置是将ttyAMA0用于了板载蓝牙上,跟蓝牙连一起了,而迷你串口映射到了gpio14/15也就是咱们现在外部能连的TX/RX,并且呢,这个TX/RX是默认用于console的,是通过串口来控制树莓派的,因此这里在使用树莓派通信前还必须把这个console给关掉,不然的话也是要乱码的。

综上,我们需要做两个工作,将硬件串口映射到RX/TX也即GPIO14/15引脚,然后关掉串口控制功能,然后关掉蓝牙功能。

先做第一件事情,交换映射 在这里简单理解为serial0就是GPIO对应的串口,serial1就是mini串口

使用命令ls –l | grep serial 查看映射关系 会发现

Serial0->ttyS0

Serial1->ttyAMA0

而我们的目标就是要把这两个映射关系给换过来

修改配置文件/boot/config.txt

在最底部添加:

dtoverlay=pi3-miniuart-b

保存退出。重启树莓派。

再用命令ls –l | grep serial

看到映射关系为:

Serial0->ttyAMA0

Serial1->ttyS0

然后第二步  禁用串口的控制台功能

通过以下两条命令来停止和禁用串口的控制台功能

sudo systemctl stop [email protected]

sudo systemctl disable [email protected]

然后修改cmdline.txt文件

Sudo vim /boot/cmdline.txt

看到如下内容:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

删掉console=serial0,115200

重启树莓派,修改生效。

Cmdline.txt文件:

Console和kernel log相关启动参数:

 

console

console的设备和选项,如:console=tty0 console=ttyS0

 

debug

enable kernel debugging 启动中的所有debug信息都会打印到console上

 

quiet

disable all log messages 将kernel log level设置为KERN_WARNING,在启动中只非常严重的信息

 

loglevel

设置默认的console日志级别,如:loglevel=7 (0~7的数字分别为:KERN_EMERG,..,KERN_DEBUG)

 

time

设置在每条kernel log信息前加一个时间戳

你可能感兴趣的:(Linux)