极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20465|回复: 2

树莓派Raspberry Pi 3b中串口设置成外接控制器

[复制链接]
发表于 2016-6-28 19:51:11 | 显示全部楼层 |阅读模式
本帖最后由 luxxsys 于 2016-6-29 17:35 编辑

总结了一下RPi3中串口的状态和设置方法。分享一下。附件为格式化文字,更可读。
前面部分是讲解,不想看的直接跳到最后两节照着做就行。

1. 串口
1.1. Rpi3中串口的用途
在RPi3中,有两个串口:
从RPi2继承过来的高性能串口是ttyAMA0,在RPi3中默认分配给蓝牙模块;

另一个是外接的低性能串口,ttyS0,默认情况下,ttyS0给Linux调用,用来串口登录设备。

两个串口的用途、名称及映射关系总结如下:
/dev/ttyAMA0 -> Bluetooth
/dev/ttyS0 -> GPIO serial port



基于以上,两个串口在默认情况下都不能用于设备控制。

1.2. Rpi3中串口的初始状态
ttyAMA0是分配给蓝牙模块使用的,也是默认开启的。如果想让蓝牙正常工作,这个串口不要动,使用ttyS0来进行设备控制就可以。如果不使用蓝牙模块,想使用高性能串口进行设备控制,也有办法,放在最后。
ttyS0的开启/关闭状态,可以通过
sudo raspi-config ->Advanced Options ->Serial
来设置,对应的配置文件内容是:
cat /boot/config.txt | grep uart
enable_uart=1
图形和命令两种方式是等效的。如果想使用ttyS0进行设备控制,必须先开启它。重启系统生效。

1.3. 设置ttyS0
默认ttyS0是分配给Linux做console的。要改为设备控制,就要先改掉原来的用途。
Linux Console是通过getty进程与ttyS0关联的,所以先停掉getyy,解除系统占用:
sudo systemctl stop [email protected]
sudo systemctl disable [email protected]
再把内容定位关掉:
sudo vi /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
其中的console=serial0,115200,就是内容定位,删掉剩下:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
重启之后,ttyS0就被彻底释放了。此时可以通过python或串口调试工具对ttyS0进行测试。
1.1节中介绍了在RPi3中,ttyS0有个alias name叫serial0,所以在代码中,一律使用serial0更好。

1.4. 总结一下
想用ttyS0做设备控制,只需如下三步:
开启ttyS0:raspi-config或config.txt中enable_uart=1均可;
释放ttyS0:停掉getty服务systemctl disable [email protected],然后从/boot/cmdline.txt中删掉console=serial0,115200;
代码中统一使用名称为serial0。



1.5. 串口调换
如果想用高性能串口做设备控制,把低性能串口留给蓝牙或干脆不用,可以这样做:
sudo vi /boot/config.txt
增加一行:
dtoverlay=pi3-disable-bt
重启生效。此时:


与1.1节中命名已经对调,在代码中使用serial0则为高性能串口ttyAMA0。

注意将串口改作他用,首先要先从系统中把串口释放出来,例如停掉蓝牙、getty。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-6-29 09:19:46 | 显示全部楼层
手里只用2B,如果硬件上多几个串口就好了。
回复 支持 反对

使用道具 举报

发表于 2016-7-1 18:33:11 | 显示全部楼层
多谢分享哦,好好试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 20:14 , Processed in 0.042499 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表