一、树莓派串口配置修改
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