1/3
2/3
3/3
树莓派UART的配置过程
薯扑篮球
2019年07月17日 23:08
收录于文集
共115篇

网上的教程都年代久远,而我用的是2019-04-08版的精简版树莓派官方系统,因此参照远古教程绕了一些弯路,现在作此记录。当然,对于2019-04-08版之后的系统,下述方法不一定有效。

此处再交代一下为什么要配置串口:

树莓派3B有两路串口,一类是GPIO,另一类是miniUART,但是miniUART性能上有所不足,具体原因如下:

硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了                                         ——https://blog.csdn.net/tang_chuanlin/article/details/92847343

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

下面只列出重要的参考链接,因为网上大多是没有用的:

https://blog.csdn.net/qq_40602000/article/details/93802106

https://blog.csdn.net/tang_chuanlin/article/details/92847343

步骤如下:

1、

    终端键入此命令,查看你的串口映射:

我们可以认为serial0代表的就是我们想要的硬中断,但是它现在被树莓派的板载低功耗蓝牙设备占据着。(当然,你输入这个命令时,可能只会显示一个串口号,问题不大,继续下面的步骤就可以看到两个串口映射了)

我们要做的事就是交换串口映射。

2、sudo raspi-config

终端键入此命令,修改你的串口配置,具体流程如下:

终端键入sudo reboot重启。

3、

终端键入上述命令,修改配置。

末尾加入一行:

“ctrl+o”回车保存退出,重启保存配置。

再次查看映射关系,可以看出已经交换成功,理论上已经可以进行串口的收发了。

为什么加这么一行呢,文件pi3-miniuart-bt-overlay.dtb 或者是 pi3-miniuart-bt.dtb又或者是pi3-miniuart-bt.dtbo(功能一致)在README中的描述如下:

此文件的功能是将树莓派3的蓝牙切换到mini串口(ttyS0),并且恢复硬件串口(ttyAMA0)到GPIO14&15引脚中。

4、More

如果进行完上述步骤还是不能使用串口呢?

前面的步骤已经交换了硬件串口与mini串口的映射关系,但现在想使用树莓派外接串口模块进行通信还不行,因为树莓派IO引出的串口默认是用来做控制台使用的,它的初衷是为了在没有网络接口时,通过串口对树莓派进行相关的配置。因此需要禁用这个默认功能,使得串口为我们自由使用。  ——https://blog.csdn.net/tang_chuanlin/article/details/92847343

通过如下两个命令停止和禁用串口的控制台功能:

然后修改配置:

内容如下:

(root部分一般不同)

删除语句:

删除后的内容如下:

重启,使生效。

5、配置结束!