[Raspberry Pi] 啟用Raspberry Pi 3B+ 序列埠功能
Introduction
對於Raspberry Pi 3B+來說,它的UART有三種功能:- 供內部藍牙使用
- 控制終端使用(serial console)
- 與其他設備進行序列通訊(serial communication)
Raspberry Pi 3B+有兩個UART(Universal Asynchronous Receiver/Transmitter,Universal是指可以自定義傳輸格式與baud rate,Asynchronous是指不依賴CPU時鐘),分別為PL011 UART與mini UART,PL011使用獨立的硬體(ARM PrimeCell PL011)去控制傳輸的baud rate,所以傳輸的性能與穩定度都很好,但是mini UART的baud rate是使用系統核心時脈計算出來的,只能算半軟體的URAT,就算設定到115200bps實際上只有72000bps左右而已,相較之下效能與穩定度都不足。
PL011 UART在系統中是/dev/ttyAMA0,mini UART是/dev/ttys0,Raspberry Pi 3B+有兩個序列埠口為serial0與serial1,serial0是GPIO埠口,使用GPIO 14(pin 8)與GPIO 15(pin 15),serial1是藍芽;在系統預設中,serial0是關閉的,serial1是指向/dev/ttyAMA0,所以無論是想用序列埠口作為serial console或者與其他設備做serial communication,首先要做的是啟用serial0這個序列埠口。
Enable Serial Port
本篇使用的硬體為Raspberry Pi 3B+,映像檔版本為2018-11-13-raspbian-stretch-lite;要啟用serial0可以使用raspi-config或者修改/boot/config.txt兩種方式。使用raspi-config
- 進入Raspberry Pi Software Configuration Tool
sudo raspi-config
- 選擇5 Interfacing Options並按下Enter鍵。
- 選擇P6 Serial並按下Enter鍵。
- 預設啟動serial interface會做為serial console使用,選擇Yes並按下Enter鍵;若要將serial interface作為通訊用則選擇No。
- 最後會提示serial interface已啟動,重新啟動Raspberry Pi 3B+便可啟動serial interface。
修改/boot/config.txt
- 開啟/boot/config.txt檔
sudo vi /boot/config.txt
- 文件最後加上enable_uart=1,儲存文件後重新啟動Raspberry Pi 3B+便可啟動serial interface。
上述兩種方法任一種執行完後,在/dev中可以看到serial0啟用了並指向/dev/ttyS0,此時就可以使用,此時就可以從GPIO埠口以serial的方式登入Raspberry Pi 3B+,預設的baud rate是115200。
Use PL011 For Serial Communication
如果進一步希望serial0可以使用PL011(/dev/ttyAMA0)來確保穩定的傳輸,可以編輯/boot/config.txt,加上dtoverlay=pi3-miniuart-bt,若希望進一步停用藍芽可再加上dtoverlay=pi3-disable-bt。重啟系統後再觀察/dev中的內容,就會發現serial0是指向/dev/ttyAMA0了。
留言
張貼留言