树莓派串口通信配置、测试(全程)

一、树莓派串口配置修改

1.将树莓派的硬件串口与mini串口默认映射对换

简单来说:硬件串口由硬件实现,有单独波特率时钟源,性能高,可靠,而mini串口要依附CPU内核提供时钟。因此我们要用硬件串口,但是树莓派3b的硬件串口默认连接的是蓝牙,所以我们要改一下,把蓝牙映射到mini串口上,而释放硬件串口

2.查看并修改串口映射关系

输入命令
查看

 ls -l /dev

我们要做的是吧,红框中的映射对调

在这里插入图片描述
输入命令
修改

sudo vim /boot/config.txt

在该文件中加一行代码 dtoverlay=pi3-miniuart-bt
在这里插入图片描述
保存退出重启!
然后我们再次查看 命令行 ls -l /dev 此时两个都有了并且对调了

在这里插入图片描述
可以看出,硬件串口(ttyAMA0)映射到了GPIO Tx(14) Rx(15) 引脚上。

3.禁用串口的控制台功能。

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

两个命令

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

然后命令

sudo vim /boot/cmdline.txt

删除语句 console=serial0,115200

然后重启树莓派,
至此,串口配置相关内容结束

二、下载安装wiringPi库

1、wiringPi简介

wiringPi,安装好这个库后可以直接调用函数配置和控制GPIO功能

在这里插入图片描述
在这里插入图片描述

二、wiringPi安装

网上有好多种方法,不过试了试好多现在用不了
最后终于找到一种方法

有个前提
需要安装这几个库: i2c-tools,libi2c-dev ,python-smbus
不然后面编译过程会报错
执行命令 sudo apt-get install libi2c-dev ,会自动安装这三个

sudo apt-get install libi2c-dev

继续执行

mkdir temp
cd temp
wget http://project-downloads.drogon.net/files/wiringPi.tgz
tar xf wiringPi.tgz
cd wiringPi/wiringPi/
make
make install

测试

gpio -v

在这里插入图片描述
出现这个就是安装成功了

三、串口通信测试

需要准备一个usb转TTL

usb转TTL的RXD接到树莓派的TXD
usb转TTL的TXD接到树莓派的RXD

建立一个chuankou.c文件

#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 chuankou.c -o chuankou -lwiringPi
./chuankou

树莓派端
在这里插入图片描述
PC端的串口助手
在这里插入图片描述
成功!!!!!

若报错
报错 找不到wiringpi.h文件
1、进入wiringPi/wiringPi 目录 , 即安装的文件夹内

2、# ls //查看文件 你会发现有一个 wiringPi.h 的头文件

3、#sudo cp wiringPi.h /usr/include //拷贝头文件

注意! 源文件的头文件名为 wiringPi.h 而 代码中包含的头文件名为 wiringpi.h ,虽然只是一个大小写区别,但是测试发现还是找不到!

内容参考以下博主:
https://blog.csdn.net/qq_33140565/article/details/78146366

https://www.jianshu.com/p/4797309f3f94

https://blog.csdn.net/scottly1/article/details/26881571?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://blog.csdn.net/qq_36326623/article/details/79780061?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158959569619725211916423%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57693%2522%257D&request_id=158959569619725211916423&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-1-79780061.nonecase&utm_term=%E6%A0%91%E8%8E%93%E6%B4%BE%E4%B8%8E%E7%94%B5%E8%84%91%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1

https://blog.csdn.net/zz531987464/article/details/83188189?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%A0%91%E8%8E%93%E6%B4%BE%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-83188189

wiringPi的函数
https://www.cnblogs.com/lulipro/p/5992172.html

wiringPi的串口通信程序
https://www.cnblogs.com/regan-gao/articles/9780690.html

猜你喜欢

转载自blog.csdn.net/qq_43765237/article/details/106158843