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