关于树莓派Zero的串口

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

内容简介:没错,还是关于树莓派的文章。今天整串口的时候发现,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 里面就可以启用这个功能了.


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

查看所有标签

猜你喜欢:

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

Advanced Web Metrics with Google Analytics

Advanced Web Metrics with Google Analytics

Brian Clifton / Sybex / 2008 / USD 39.99

Are you getting the most out of your website? Google insider and web metrics expert Brian Clifton reveals the information you need to get a true picture of your site's impact and stay competitive usin......一起来看看 《Advanced Web Metrics with Google Analytics》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具