IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 树莓派3B+:串口通讯 -> 正文阅读

[嵌入式]树莓派3B+:串口通讯


背景

树莓派控制信号源,信号源使用的是RS232串口通讯,因此需要打开树莓派的串口。


一、树莓派串口通讯是什么?

指令:

gpio readall

树莓派串口通讯使用的是树莓派的8、10针(GPIO15、16),一发一收引脚。
在这里插入图片描述

官网介绍:GPIO引脚


二、使用步骤

1.树莓派串口知识

树莓派包含两个串口:ttyAMA0、ttyS0
ttyAMA0:硬件串口,由硬件实现,稳定性高,有单独的波特率时钟源,一般与其他硬件的串口通讯使用ttyAMA0
ttyS0:mini串口,时钟源是由CPU内核时钟提供的,因此当CPU使用率高时,其波特率不稳定。
在这里插入图片描述
serial0GPIO引脚对应的串口,主串口
serial1是蓝牙bt对应的串口,辅助串口
在这里插入图片描述


2.查看当前的串口使用及映射关系

ls -l /dev/serial* 

在这里插入图片描述
当前开放串口只有蓝牙串口serial1,连接的是ttyAMA0


3.释放串口ttyAMA0

官方在树莓派/boot/overlays/README中明确写到:

Name:   disable-bt
Info:   Disable onboard Bluetooth on Pi 3B, 3B+, 3A+, 4B and Zero W, restoring     UART0/ttyAMA0 over GPIOs 14 & 15.
N.B. To disable the systemd service that initialises the modem so it  doesn't use the UART, use 'sudo systemctl disable hciuart'.
Load:   dtoverlay=disable-bt
Params: <None>

即,通过使用 dtoverlay=disable-bt 可以禁用 Pi 3B、3B+、3A+、4B和零W上的板载蓝牙,通过 GPIO 14 和 15 恢复 UART0 /ttyAMA0。
同时,要禁用初始化调制解调器的 systemd 服务,使其不使用 UART,请使用

sudo systemctl disable hciuart

现在我们按照操作来逐步进行设置:

第一步:在树莓派/boot/config.txt中最后一行添加

dtoverlay=disable-bt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重启后会发现蓝牙不再开启,但是提示以下内容:
在这里插入图片描述
解决方法:设置串口可以进行通信,但是禁止串口的控制台功能。
在这里插入图片描述
立即重启

第二步:输入如下指令,关闭服务。

sudo systemctl disable hciuart

在这里插入图片描述
此时再重新查看下串口使用及映射关系
在这里插入图片描述
对比下最初的串口使用:
在这里插入图片描述
可以看出:ttyAMA0已经重新分配给主串口,可以通过引脚进行通讯

3.代码控制串口,验证是否可用

直接使用树莓派自带的python3来编写代码

python3
import serial
ser = serial.Serial('/dev/ttyAMA0',115200)

此时会直接报错:串口ttyAMA0访问被拒绝
在这里插入图片描述
此时,修改ttyAMA0权限

sudo chmod 777 /dev/ttyAMA0

重新打开串口会发现成功。

在这里插入图片描述
至此,树莓派串口ttyAMA0的使用结束


三、minicom串口回环测试

1.安装minicom

sudo apt-get install minicom

2.配置minicom

sudo minicom –s

在这里插入图片描述
进入到“Serial port setup”,设置A和F
在这里插入图片描述
键盘控制输入A,更改后回车,键盘控制输入F,回车,再回车
在这里插入图片描述
保存当前配置为默认配置
在这里插入图片描述

退出,选择Exit from Minicom

3.回环测试

第一步:用杜邦线连接Pin8(TxD)和Pin10(RxD)引脚。
第二步:运行 sudo minicom
在这里插入图片描述
可以看到打开的是ttyAMA0
第三步:Ctrl+A 按下E选择回显。
第四步:输入信息hello,显示为hheelllloo
在这里插入图片描述
YES!至此从软件(python3的Serial)和硬件(minicom串口回显)都验证了串口ttyAMA0已经可以正常使用。

4.minicom其他常用指令

Ctrl+A W:当显示的内容超过一行之后自动换行

Ctrl+A C:清屏

Ctrl+A X:退出minicom


补充

PS:本方式适用于禁止使用蓝牙,如果依然需要使用蓝牙通讯,请在/boot/config.txt中使用dtoverlay=miniuart-bt,并按照下列内容进行其他更改;

Name:   miniuart-bt
Info:   Switch the onboard Bluetooth function on Pi 3B, 3B+, 3A+, 4B and Zero W to use the mini-UART (ttyS0) and restore UART0/ttyAMA0 over GPIOs 14 & 15. 
Note that this may reduce the maximum usable baudrate.
N.B. It is also necessary to edit /lib/systemd/system/hciuart.service and replace ttyAMA0 with ttyS0, unless using Raspbian or another  distribution with udev rules that create /dev/serial0 and /dev/serial1,   in which case use /dev/serial1 instead because it will always be  correct. Furthermore, you must also set core_freq and core_freq_min to   the same value in config.txt  or the miniuart will not work.
Load:   dtoverlay=miniuart-bt,<param>=<val>
Params: krnbt    Set to "on" to enable autoprobing of Bluetooth   driver without need of hciattach/btattach
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:55:20  更:2022-04-26 11:57:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:39:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码