sudo nano /boot/cmdline.txt
刪除 console=ttyama0,115200 kgdboc=ttyama0,115200
sudo nano /boot/config.txt
最後增加下面兩句話:
dtoverlay=pi3-miniuart-bt
enable_uart=1
sudo apt-get install minicom
minicom -b 9600 -o -d /dev/ttyama0
-b 表示波特率 -d 表示埠號 -o 未知,也可以去掉
int uart_open(int fd,const char *pathname)
/*設定串列埠非阻塞,因為這裡是以非阻塞形式開啟的,所以第三個引數為0*/
if(fcntl(fd,f_setfl,0) < 0)
return fd;
}
// 115200,0,8,'n',1
int uart_set(int fd,int baude,int c_flow,int bits,char parity,int stop)
/*配置波特率*/
switch(baude)
/*設定控制模式*/
options.c_cflag |= clocal;//保證程式不占用串列埠
options.c_cflag |= cread;//保證程式可以從串列埠中讀取資料
/*設定資料流控制*/
switch(c_flow)
/*設定資料位*/
switch(bits)
/*設定校驗位*/
switch(parity)
/*設定停止位*/
switch(stop)
/*設定輸出模式為原始輸出*/
options.c_oflag &= ~opost;//opost:若設定則按定義的輸出處理,否則所有c_oflag失效
/*設定本地模式為原始模式*/
options.c_lflag &= ~(icanon | echo | echoe | isig);
/**icanon:允許規範模式進行輸入處理
*echo:允許輸入字型的本地回顯
*echoe:在接收epase時執行backspace,space,backspace組合
*isig:允許訊號
*//*設定等待時間和最小接收字元*/
options.c_cc[vtime] = 0;
options.c_cc[vmin] = 1;//最少讀取乙個字元
/*如果資料溢位,值接受資料,但是不進行讀操作*/
tcflush(fd,tciflush);
options.c_iflag = 0;
options.c_oflag = 0;
options.c_lflag = 0;
/*配置啟用*/
if(tcsetattr(fd,tcsanow,&options) < 0)
return 0;
}
樹莓派接收配置完成後,如果沒有 options.c_iflag = 0; options.c_oflag = 0; options.c_lflag = 0;這三行**,會導致資料接收不穩定
int uart_close(int fd)
使用linux介面函式read和write函式就可以實現串列埠的讀寫 樹莓派串列埠配置及除錯
修改cinfig.txt檔案 sudo vim boot config.txt 確保enable uart 1 串列埠使用ttys0 dtoverlay pi4 miniuart bt 失能串列埠dtoverlay pi3 disable bt 檢視串列埠對映關係 ls l dev 可以看到串列埠s...
樹莓派3 串列埠設定指令碼
專案中使用樹莓派 3b 外加 zigbee 晶元實現裝置與裝置之間的通訊,但是最初使用的時候,樹莓派的串列埠總顯示通訊異常。樹莓派3的藍芽與串列埠是衝突的,只能二選一,系統預設選擇的藍芽,現在需要關閉藍芽 參考 樹莓派3 uart 串列埠 不可用的解決方法 4.後將解決方法及專案所需環境設定寫成 b...
樹莓派 串列埠使用
本文參考了 具體步驟如下 1 購買usb 轉ttl串列埠小板和杜邦線,3 sd卡根目錄下overlays 目錄下有乙個 pi3 miniuart bt.dtbo 檔案,參閱 overlays 目錄下 的readme,可以檢視該檔案的資訊。提示我們 gpio 14 15 被藍芽占用了。修改 根目錄下的...