一、介紹
對于樹莓派 3B+來說,他的UART功能有三種:1、內部藍牙使用;2、控制終端使用;3、與其他設備進行串口通信。
在樹莓派USB TO TTL模塊實驗中學習了通過串口對樹莓派進行控制臺控制,讓串口作為控制終端調試口即 serial console,但是在項目中常常會使用串口同其他傳感器、單片機等設備進行通用串口通信。
本實驗中設置樹莓派的串口為通用串口與PC電腦的串口調試工具進行通信。
二、組件
★Raspberry Pi 3 B+主板*1?快速購買
★樹莓派電源*1
★USB TO TTL模塊*1
★面包板*1(可選)
★40P軟排線*1
★跳線若干
三、實驗原理
(一)樹莓派的串口
樹莓派從大的方向來說一共出了3代,每一代的CPU外設基本相同,但內核不同,外設里面一共包含兩個串口,一個稱之為硬件串口(/dev/ttyAMA0),一個稱之為mini串口(/dev/ttyS0)。
硬件串口由硬件實現,有單獨的波特率時鐘源,性能高、可靠,mini串口性能低,功能也簡單,并且沒有波特率專用的時鐘源而是由CPU內核時鐘提供,因此mini串口有個致命的弱點是:波特率受到內核時鐘的影響。內核若在智能調整功耗降低主頻時,相應的這個mini串口的波特率便受到牽連了,雖然你可以固定內核的時鐘頻率,但這顯然不符合低碳、節能的口號。
在所有的樹莓派板卡中都通過排針將一個串口引出來了,目前除了樹莓派3代以外 ?,引出的串口默認是CPU的那個硬件串口。而在樹莓派3代中,由于板載藍牙模塊,因此這個硬件串口被默認分配給與藍牙模塊通信了,而把那個mini串口默認分配給了排針引出的GPIO ?Tx Rx。
樹莓派的串口默認為串口終端調試使用,如要正常使用串口則需要修改樹莓派設置。關閉串口終端調試功能后則不能再通過串口登陸訪問樹莓派,只能通過ssh或者遠程桌面連接樹莓派后進行控制。
上圖紅框中就是引出的串口IO(GPIO ?14/15),如果我們需要通過UART外接模塊,默認情況下必須得使用性能很低的mini串口了,而且隨著內核主頻的變化,還會造成波特率的變化導致通信的失敗,幾乎很難使用。所以我們一般要恢復硬件串口(/dev/ttyAMA0)與GPIO ?14/15的映射關系,使得我們能夠通過GPIO使用高性能的硬件串口來連接我們的串口設備。
恢復映射關系前先看下默認的映射關系:
serial0是GPIO引腳對應的串口,serial1是藍牙對應的串口。如圖所示,serial0(GPIO串口)默認使用的是ttyS0(mini串口),serial1(藍牙)使用的是ttyAMA0(硬件串口)。
四、實驗步驟
第1步:連接電路。使用USB TO TTL模塊連接好樹莓派的串口和PC電腦的USB接口。
樹莓派(name) | T型轉接板(BCM) | USB TO TTL模塊 |
---|---|---|
TXD | TXO | RXD |
RXD | RXI | TXD |
GND | GND | GND |
下圖中的USB要插到筆記本電腦上哈,為方便拍照就沒插上。連線很簡單,電路圖就沒畫了。
第2步:首先我們先嘗試使用默認的ttyS0(mini串口)來進行通用串口通信。
(1)設置樹莓派,在Raspberry Pi Configuration中將Serial Port設置為Enable,但是Serial Console都要Disable,即關閉串口控制臺功能,然后必須重啟樹莓派生效。
(2)PC電腦上運行串口調試工具,串口驅動的安裝請參考樹莓派基礎實驗35:USB TO TTL模塊實驗中的內容。如下圖設置好參數,點擊“打開串口”。
(3)樹莓派上安裝minicom,啟動時配置參數串口為/dev/ttyS0,波特率(9600)。在樹莓派上輸入信息,在PC上的串口調試工具就會收到該信息。
sudo?apt-get?install?minicom??????#安裝minicomsudo?minicom?-D?/dev/ttyS0?-b9600???#啟動minicom
(4)PC上的串口調試工具發送字符信息,樹莓派上也會顯示該信息,證明兩者的UART雙向通信成功。
(5)這里要注意的是:進入minicom工具,按提示按CTAL -A,然后按Z后會顯示幫助信息。若再按O可以進入Minicom配置界面。
進入Minicom配置界面,再選擇Serial port setup,可以對樹莓派的串口進行設置。
進入串口設置,可以設置樹莓派串口的設備、波特率等:
第3步: 為了在樹莓派3中通過GPIO使用高性能的硬件串口,我們必須將分配給藍牙使用的硬件串口與分配給IO排針的mini串口進行對換,這必然會使得藍牙模塊的功能受到影響,不過這里我們不使用藍牙。
(1)在/boot/overlays文件內有兩個文件,README 和pi3-miniuart-bt.dtbo,首先查看有沒有相關文件。
(2)README文件中說明了此文件的功能,是將樹莓派3的藍牙切換到mini串口(ttyS0),并且恢復硬件串口(ttyAMA0)到GPIO14&15引腳中。
(3)修改配置文件
sudo?vim?/boot/config.txt
在該文件中加一行代碼
dtoverlay=pi3-miniuart-bt
保存后重啟樹莓派,再查看映射關系已經改變:
(4)進入minicom,發送信息給PC串口調試工具。與第2步不同的是:啟動時配置參數串口必須為/dev/ttyAMA0,波特率可以更改為其它的,這里設置為115200。
pi@raspberrypi:~?$?sudo?minicom?-D?/dev/ttyAMA0?-b115200
經過測試,雙向通信成功!這里要注意,第2步里面關閉串口控制臺功能的設置不能變,即Serial Console要Disable。
補充: 前面步驟當中的部分設置使用的是圖形界面配置,在不能使用圖形界面時,也可以直接修改配置文件。
(1)上面串口的開啟的步驟中,是在Raspberry Pi Configuration 界面中,將Serial Port選項ENable,也可以直接修改/boot/config.txt文件。
sudo?vim?/boot/config.txt
enable_uart=1即為Serial Port Enable串口開啟,enable_uart=0即為Serial Port Disable串口關閉。
(2)上面關閉串口控制臺功能,是在Raspberry Pi Configuration 界面中,將Serial Console選項Disable,可以直接修改/boot/cmdline.txt文件。
sudo?vim?/boot/cmdline.txt
修改前:
修改后:
去掉了“console=serial0,115200”,即Disable了串口控制臺功能。
樹莓派3B/3B+心動購買
精彩回顧
點擊文字即可閱讀全文?【教程】樹莓派上安裝Domoticz,控制家中各種設備?額溫槍實戰方案開發板,使用手冊+全套資料??ROS機器人操作系統如何安裝使用?快來了解!??技能get√丨用樹莓派4制作交通標志識別機器人??【教程】教你用Arduino制作PM2.5測量儀(使用GP2Y1010AU0F灰塵傳感器)???技能get√丨用樹莓派打造家庭自動化???【教程】不說廢話!教你在樹莓派上安裝OpenCV??【K210火炎焱燚】K210產品大集合必須火火火火火火~