树莓派3B+ 串口使用大全(实现串口通信功能)

2023-05-16

1.树莓派串口控制台功能

在2018-10-09-raspbian-stretch.img镜像中,要使用串口来调试设备,需要修改conig.txt文件。

1. sudo systemctl disable hciuart 禁用蓝牙设备

2.sudo nano /boot/config.txt

   在该最后加上一行

   dtoverlay=pi3-miniuart-bt

3.sudo raspi-config,将系统启动设置为串口自动登录 启动方式

4.sudo reboot 即可使用串口了

树莓派3B+的硬件电路图如下:

我们将串口模块的TX、RX、GND连接到树莓派的UART0 RX、UART0 TX、GND,电源不用接,即可使用串口进行控制

 

2.如何让树莓派与其他设备使用串口进行通信呢?

配置这个功能可以让我们的树莓派与其他设备例如stm32进行数据的交互和通信,实现两者之间的互相控制功能,这个还是非常实用的!

使用以下步骤即可:

树莓派包含两个串口

1.硬件串口(/dev/ttyAMA0),硬件串口由硬件实现,有单独的波特率时钟源,性能高,可靠一般优先选择这个使用

2.mini串口(/dev/ttyS0),mini串口时钟源是由CPU内核时钟提供,波特率受到内核时钟的影响,不稳定。

想要通过树莓派的GPIO引脚进行稳定的串口通信,需要修改串口的映射关系。

serial0是GPIO引脚对应的串口,serial1是蓝牙对应的串口,可以使用 ls -l /dev/serial*  查看当前的映射关系

1.sudo raspi-config

Interfacing Options -> P6 Serial, 第一个选项(would you like a login shell to be accessible  over serial?)选择NO,第二个选项(would you like the serial port hardware to be enabled?)选择 YES

然后我们可以通过使用ls -l /dev/serial* 查看串口映射关系发现

serial0(GPIO串口)默认使用的是ttyS0(mini串口),serial1(蓝牙)使用的是ttyAMA0(硬件串口)

如果想使用稳定可靠的硬件串口,就要将树莓派3的硬件串口与mini串口默认映射对换。而这个需求官方也考虑到了,在系统中放了一个实现这个功能的文件---stretch版本系统中的文件为/boot/overlays/pi3-miniuart-bt.dtbo。使用该文件发挥功能只需在/boot/config.txt文件末尾添加一行代码
sudo nano /boot/config.txt

在文件最后面添加一行:dtoverlay=pi3-miniuart-bt

修改完成后 sudo reboot 重启树莓派后使用 ls -l /dev/serial* 查看映射如下:

如上图所示,serial0(GPIO串口)使用的是ttyAMA0(硬件串口),而serial1(蓝牙)使用的是ttys0(mini串口)

2.禁用串口的控制台功能

前面步骤已经交换了硬件串口与mini串口的映射关系,但是,现在还不能使用树莓派串口模块与电脑进行通信,因为,树莓派io口引出串口默认是用来做控制台使用的,即是为了用串口控制树莓派,而不是通信。所以我们要禁用此默认设置。

首先执行命令如下:

sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

然后执行命令行:

sudo nano /boot/cmdline.txt

删除语句 console=serial0,115200  (没有的话就不需要此步骤)

保存之后其内容如下:

接下来再次重启树莓派即可。

最终的/boot/config.txt文件内容如下:

3.测试验证串口功能

代码如下:

#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
 
int main()
{
	int fd;
	if(wiringPiSetup()<0) {
        return 1;
    }

	if((fd=serialOpen("/dev/ttyAMA0",115200))<0) {
        return 1;
    }

	printf("serial test start ...\n");
	serialPrintf(fd,"hello world!!\n");

	serialClose(fd);
	return 0;
}

编译命令:

gcc test.c -o test -lwiringPi

代码中使用到wiringPi库,具体该库的下载和使用可以参考官网:http://wiringpi.com/,里面描述了如何使用该库,这里不做介绍

执行:./test  

我们可以将串口模块通过杜邦线插到树莓派的UART0 TX RX接入到PC机,在PC机上打开串口调试助手查看 执行上面命令后会打印 hello world 的字符串,说明通信成功。

同理,我们可以在树莓派上安装minicom,配置好 /dev/ttyAMA0 后在串口调试助手上发送字符串,树莓派minicom串口也能收到对应的字符串,说明两者通信成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派3B+ 串口使用大全(实现串口通信功能) 的相关文章

随机推荐

  • ROS机器人应用(6)—— 激光雷达建图和导航

    文章目录 一 激光雷达建图二 建图算法切换及其优缺点三 自主导航四 多点导航 一 激光雷达建图 小车开机 xff0c 连接WIFI xff0c 密码 xff1a dongguan 启动激光建图 xff08 服务端 xff09 span cl
  • 学习记录(一)

    ionic起步 首先 xff0c 网络上扒拉教程安装ionic xff1a https blog csdn net weixin 38299362 article details 79626812 如果是配合angular使用 xff0c
  • 嵌入式软件开发之Linux下C编程

    目录 前沿 Hello World xff01 编写代码 编译代码 GCC编译器 gcc 命令 编译错误警告 编译流程 Makefile 基础 何为 Makefile Makefile 的引入 前沿 在 Windows 下我们可以使用各种各
  • 信息加密(简单的字母转换)

    题目 在传递信息的过程中 xff0c 为了加密 xff0c 有时需要按一定规则将文本转换成密文发送出去 有一种加密规则是这样的 xff1a 1 对于字母字符 xff0c 将其转换成其后的第3个字母 例如 xff1a A D xff0c a
  • TCP协议与UDP协议详解

    TCP协议 TCP xff0c 即Transmission Control Protocol xff0c 传输控制协议 人如其名 xff0c 要对数据的传输进行一个详细的控制 TCP协议的特点 xff1a 有连接 xff0c 可靠传输 xf
  • C语言头文件相互包含的问题

    我深知前路风雨 xff0c 但我依然微笑前行 头文件相互包含的问题 问题 xff1a 头文件交叉包含是否会导致递归包含 xff0c 导致编译出错 xff1f 如果不会因为递归包含出错 xff0c 那么交叉包含是不是完全没问题 xff1f 1
  • 【51单片机STC89C52】DHT11温湿度传感器的使用

    目录 一 DHT11概述 数据传送逻辑 数据格式 通讯过程时序图 二 检测模块是否存在 时序逻辑分析 代码实现 三 读取温湿度数据 DHT11传输0的时序分析 DHT11传输1的时序分析 代码实现 四 串口打印 一 DHT11概述 数据传送
  • Hadoop MapReduce自关联(单表关联)-案例

    案例 xff1a 获取孙子和祖父母的列表 单表关联 txt child parent Tom Lucy Tom Jack Jone Lucy Jone Jack Lucy Mary Lucy Ben Jack Alice Jack Jess
  • Oracle-Grouping sets

    Oracle Grouping sets span class token comment 创建一个雇员表 span span class token keyword CREATE span span class token keyword
  • Udacity深度学习-深度神经网络-assignment3

    六层深度神经网络 43 SGD 43 L2正则项 43 dropout xff0c TensorFlow实现 NN with SGD L2 batch size 61 128 layer cnt 61 6 层数 graph 61 tf Gr
  • 【基于STM32的串口通信----用软件模拟】

    注 xff1a 这是我上班第一次学习串口通信 xff0c 此文章基于STM32F4系列单片机 一 xff1a 什么是软件模拟串口通信 xff1a 1 平常所用串口通信都是用的单片机外设 xff0c 是单片机内部自带的模块 xff0c 只需要
  • 关于单片机内存详解

    引言 xff1a 内存是单片机的重要组成部分 xff0c 那么如何操作 分配内存对于一个嵌入式软件工程师来说便是极为重要的 一 存储器的定义 xff1a 存储器单元实际上是时序逻辑电路 的一种 按存储器的使用类型可分为只读存储器 xff08
  • Keil编译报错--IAP\IAP.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.

    之前在用CUBE生成文件时发生了这样的报错 xff1a IAP IAP sct 7 error L6236E No section matches selector no section to be FIRST LAST 发生这样的报错是因
  • Keil编程环境背景颜色--护眼色

    在Edit中选择Configuration 选择Colors amp Fonts 点击下载那个按钮 按照这个参数输入自定义颜色并添加 xff0c 就保存为一个护眼的绿色啦
  • win10下MissionPlanner地面站的安装

    win10下MissionPlanner地面站的安装 编辑器 xff1a Viaual Studio2019社区版 安装时工作负荷和单个组件的选择如下图所示 xff0c 然后自定义安装位置进行安装 安装完成后启动MP地面站 启动Visual
  • git fatal: The remote end hung up unexpectedly 错误

    使用git将本地项目添加到远程仓库报以下错误 git push u origin master Counting objects 2053 done Delta compression using up to 2 threads Compr
  • git submodule update --init --recursive

    转自https blog csdn net wangjia55 article details 24400501 转自http webfrogs me 2013 03 20 git submodule 开发过程中 xff0c 经常会有一些通
  • C++简介( C++ Primer Plus)

    C 43 43 历史 xff1a 1980年 xff0c 贝尔实验室的 Bjarne Stroustrup 本贾尼 斯特劳斯 开始对C进行改进和扩充 1983年正式命名为C 43 43 支持3钟不同的程序设计 过程化程序设计 数据 43 算
  • 树莓派3B+ 引脚图说明

    如上图所示 xff0c 我们可以很清楚的看到各个引脚的功能 例如我们想使用pwm引脚来控制舵机 xff0c 则我们可以考虑使用其中的 BCM18 PWM0 和 BCM13 PWM1 在使用wiringPi库时 xff0c 我们定义的引脚即B
  • 树莓派3B+ 串口使用大全(实现串口通信功能)

    1 树莓派串口控制台功能 在2018 10 09 raspbian stretch img镜像中 xff0c 要使用串口来调试设备 xff0c 需要修改conig txt文件 1 sudo systemctl disable hciuart