一脓杉、介紹
??對于樹莓派 3B+來說,他的UART功能有三種: 1简逮、內部藍牙使用球散; 2、控制終端使用散庶; 3蕉堰、與其他設備進行串口通信。
??在樹莓派基礎實驗35: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)煤蚌。
硬件串口由硬件實現(xiàn)耕挨,有單獨的波特率時鐘源细卧,性能高、可靠筒占,mini串口性能低贪庙,功能也簡單,并且沒有波特率專用的時鐘源而是由CPU內核時鐘提供翰苫,因此mini串口有個致命的弱點是:波特率受到內核時鐘的影響止邮。內核若在智能調整功耗降低主頻時,相應的這個mini串口的波特率便受到牽連了奏窑,雖然你可以固定內核的時鐘頻率导披,但這顯然不符合低碳、節(jié)能的口號埃唯。
在所有的樹莓派板卡中都通過排針將一個串口引出來了撩匕,目前除了樹莓派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步: 連接電路俏竞。與樹莓派基礎實驗35:USB TO TTL模塊實驗一樣绸硕,使用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模塊實驗中的內容丸升。如下圖設置好參數(shù),點擊“打開串口”牺氨。
(3)樹莓派上安裝minicom狡耻,啟動時配置參數(shù)串口為/dev/ttyS0,波特率(9600)猴凹。在樹莓派上輸入信息夷狰,在PC上的串口調試工具就會收到該信息。
sudo apt-get install minicom #安裝minicom
sudo minicom -D /dev/ttyS0 -b9600 #啟動minicom
(4)PC上的串口調試工具發(fā)送字符信息郊霎,樹莓派上也會顯示該信息沼头,證明兩者的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
保存后重啟樹莓派站粟,再查看映射關系已經(jīng)改變:
(4)進入minicom黍图,發(fā)送信息給PC串口調試工具。與第2步不同的是:啟動時配置參數(shù)串口必須為/dev/ttyAMA0奴烙,波特率可以更改為其它的助被,這里設置為115200。
pi@raspberrypi:~ $ sudo minicom -D /dev/ttyAMA0 -b115200
經(jīng)過測試切诀,雙向通信成功揩环!這里要注意,第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了串口控制臺功能。