关于树莓派Zero的串口

栏目: 服务器 · 发布时间: 6年前

内容简介:没错,还是关于树莓派的文章。今天整串口的时候发现,ttl 板子连到 GPIO 14 和 15 上没有输出,但内核参数已经有了于是去在

没错,还是关于树莓派的文章。今天整串口的时候发现,ttl 板子连到 GPIO 14 和 15 上没有输出,但内核参数已经有了 console=ttyAMA0 相关的设置,这就令人不解了。

于是去 raspberrypi.org 上找了一下关于串口的资料。

https://www.raspberrypi.org/documentation/configuration/uart.md 这里可以看到树莓派的 SoC 有两个内建的 UART, 一个叫做 PL011 , 一个叫做 mini UART

Linux 中, PL011 的串口是 /dev/ttyAMA0 设备, 而 mini UART 则是 /dev/ttyS0 设备。

同时有 wifi与蓝牙模块的设备上,比如 pi 3 和 zero, PL011ttyAMA0 默认是和蓝牙模块连接着的, 在这种情况下, ttyS0 则是默认被禁用状态的,在 /dev 下是不会出现 ttyS0 设备的,并且板子上的 GPIO 14 和 15 实际上应该算是空置状态的

ttyS0 禁用的原因是, mini UART 的波特率是和 VPU 有关系的,由于动态频率的原因,波特率也会随着变化的,因此默认情况下这个 UART 实际上是没什么多大用处的。

而在没有蓝牙的设备上, ttyS0 则会出现在 /dev 设备上,但 GPIO 14 和 15 是连接到 ttyS0 还是 ttyAMA0 上由于手上没有设备,暂时无法确定。不过根据文档推算应该是 ttyAMA0 连接到了 14 和 15 接口上。

回到开头的问题上,由于我用的是给树莓派1代用的系统,我们知道1代是没有蓝牙的,因此一代的 ttyAMA0 是连接到 14 和 15上的,这样配置 console 参数并没有问题,然而这个镜像用在 zero 上就有问题了。 ttyS0 默认关闭, ttyAMA0 又是连接了蓝牙。那么有什么办法解决呢?

在文档里面还提到了一个 enable_uart 参数,通过在 /boot/config.txt 里设置这个参数为1, 我们可以启用 ttyS0 串口, 并且将这个串口连接到 GPIO 上. 并且将内核参数 console 改到 ttyS0 上. 但这样做将会导致CPU核心被限制, 无法进行动态睿频. 这显然不是我们想要的结果.

继续往下翻可以看到, 我们还可以通过加载不同的 device tree 来改变蓝牙和串口的功能. 提供了两张解决方案.

pi3-disable-bt:

在这种方案下, 将完全禁用板载的蓝牙功能, 作为回报, ttyAMA0 将会被释放出来, 并且会连接到 GPIO 14 和 15上

pi3-miniuart-bt:

这种方案则是将蓝牙连接到 mini UART 上, 同时释放 ttyAMA0 , 并且会把 ttyAMA0 连接到 GPIO 14 和 15上.

似乎看起来既能让 CPU 不被限制频率, 还能有蓝牙, 还能有串口的方案就只有 pi3-miniuart-bt 了. 通过添加 dtoverlay=pi3-miniuart-btconfig.txt 里面就可以启用这个功能了.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换