树莓派3启动串口功能

本文介绍树莓派3代的两种串口——硬件串口和软件串口的区别及特性,并提供详细的步骤来帮助读者禁用蓝牙并启用硬件串口,确保与其他硬件稳定通信。

树莓派3代提供了两个串口PL011 UARTmini UART,这里我根据性能把他们简称为硬件串口和软件串口。

硬件串口:具有串口设备的完整特性,很不走运的是树莓派默认板载蓝牙和硬件串口连接,也就是原来的ttyAMA0不能直接使用。

软件串口:默认情况下只有这个软件串口可以使用,对应的设备号为ttyS0,之所以称为软件,因为并不支持串口的全部功能。

软件串口的一些特性
  • 数据位支持7-8位
  • 1个起始位和1个停止位
  • 波特率依照系统时钟
  • 不支持奇偶校验位

软件串口的一些缺点诸如不支持奇偶校验位,传输量有限,还有读取系统时钟作为波特率,因为系统时钟的速率可能不停的变化,这导致软件串口的实际性能非常烂。

不过操作命令行使用软件串口还是可以的,但树莓派和其他硬件的通信为了传输可靠就必须关闭蓝牙使用硬件串口了。

启用树莓派硬件串口
开启串口

新版系统默认关闭了串口服务。

1 启动raspiconfig

sudo raspi-config

选择Optional->Serial->回车->选择yes->finish->重启

2 禁用蓝牙
sudo gedit /boot/config.txt加上 dtoverlay=pi3-disable-bt以后需要启用蓝牙时去掉这一行。

3 禁用串行控制台(可做可不做)

串行控制台就是从串口登录树莓派,打开/boot/cmdline.txt

console=tty1 修改为这个
# dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consolesdwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

启用串行控制台就保留console=serial0,115200,禁用就删除这一段

4 sudo minicom -s
将 “ttyAMA0”修改为“ttyS0”

### 树莓派3B串口登录失败的原因分析与解决方案 #### 1. 原因分析 树莓派3B的串口登录失败可能涉及多个方面,主要包括以下几个原因: - **硬件冲突**:在树莓派3B中,默认情况下硬件串口 `/dev/ttyAMA0` 被分配用于蓝牙通信[^2]。这意味着如果尝试通过该串口进行其他用途(如调试或登录),可能会遇到冲突。 - **波特率不匹配**:树莓派的 mini 串口 `/dev/ttyS0` 的波特率受 CPU 主频影响,在动态调整功耗时可能导致波特率不稳定。 - **配置错误**:如果没有正确禁用蓝牙并重新映射串口到 GPIO 接口,则无法正常访问串口设备。 - **启动参数未修改**:树莓派的引导文件 `config.txt` 和命令行配置文件 `cmdline.txt` 中可能存在默认设置,这些设置会阻止串口作为控制台使用。 --- #### 2. 解决方案 以下是针对上述问题的具体解决措施: ##### (1) 修改树莓派的配置文件以启用串口 编辑树莓派根目录下的 `config.txt` 文件,添加或修改以下内容: ```bash dtoverlay=pi3-disable-bt enable_uart=1 ``` 其中,`dtoverlay=pi3-disable-bt` 是用来禁用蓝牙模块占用硬件串口功能;`enable_uart=1` 则确保 UART 功能被激活。 完成此操作后重启树莓派: ```bash sudo reboot ``` ##### (2) 更新命令行启动参数 打开 `boot/cmdline.txt` 文件,移除其中提到的 `console=serial0,115200` 参数。这是为了防止系统试图将日志输出重定向至串口而导致登录界面不可见。 注意:编辑 `cmdline.txt` 文件时需小心,因为它是单行文本格式,任何多余的空格都会引起启动异常。 ##### (3) 测试串口连接 确认串口已成功释放后,可以利用 Python 或者终端工具测试其工作状态。例如,使用 `minicom` 工具检测串口数据传输情况: ```bash sudo apt-get install minicom sudo minicom -b 115200 -o -D /dev/serial0 ``` 此处 `-b 115200` 表示设定波特率为 115200bps,`/dev/serial0` 对应的是实际使用的串口路径。 对于编程需求,可采用如下 Python 示例验证串口读写能力: ```python import serial ser = serial.Serial('/dev/serial0', baudrate=9600, timeout=1) if ser.isOpen(): print("Serial port is open.") else: print("Failed to open the serial port.") try: while True: data = ser.readline() if data: print(data.decode('utf-8')) except KeyboardInterrupt: ser.close() ``` ##### (4) 处理潜在的网络服务干扰 有时即使完成了以上步骤仍可能出现登录失败的情况,这可能是由于某些后台进程占用了串口资源所致。可以通过查看当前运行的服务列表排查此类隐患: ```bash ps aux | grep tty ``` 必要时停止不必要的程序实例。 --- #### 3. 总结 综上所述,树莓派3B串口登录失败的主要原因是硬件串口被蓝牙模块占据以及相关配置不当引起的。按照前述方法逐一排除这些问题即可恢复正常使用功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值