樹莓派3串列埠(UART)使用問題的解決方法!
阿新 • • 發佈:2019-01-04
根據官方的反饋和回覆,我們瞭解到樹莓派3上使用者目前無法正常是使用GPIO中的UART串列埠(GPIO14&GPIO15),也就是說使用者無論是想用串列埠來除錯樹莓派,還是想用GPIO中的串列埠來連線GPS,藍芽,XBEE等等串列埠外設目前都是有問題的。
原因是樹莓派CPU內部有兩個串列埠,一個是硬體串列埠(官方稱為PL011 UART),一個是迷你串列埠(官方成為mini-uart)。在樹莓派2B/B+這些老版樹莓派上,官方設計時都是將“硬體串列埠”分配給GPIO中的UART(GPIO14&GPIO15),因此可以獨立調整串列埠的速率和模式。而樹莓派3的設計上,官方在設計時將硬體串列埠分配給了新增的藍芽模組上,而將一個沒有時鐘源,必須由核心提供時鐘參考源的“迷你串列埠
目前解決方法就是,關閉藍芽對硬體串列埠的使用,將硬體串列埠重新恢復給GPIO的串列埠使用,也就意味著樹莓派3的板載藍芽和串列埠,現在成了魚和熊掌,兩者無法兼得。
下面我就講講如何恢復硬體串列埠的方法:
1.下載pi3-miniuart-bt-overlay檔案,解壓出pi3-miniuart-bt-overlay.dtb檔案,並將dtb檔案拷貝到/boot/overlays/目錄下
2.編輯/boot目錄下的config.txt檔案
sudo nano /boot/config.txt
新增下面兩行:
dtoverlay=pi3-miniuart-bt-overlay
force_turbo=1
3.編輯/boot目錄下的cmdline.txt檔案
sudo nano /boot/cmdline.txt
參考下面內容修改:
dwc_otg.lpm_enable=0 console=serial1,115200 console=tty1 root=/dev/mmcblk0p2 kgdboc=serial1,115200 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
儲存退出
關閉板載藍芽的方法:
1.SSH登入樹莓派3後,輸入下面命令關閉hciuart使用uart0.
sudo systemctl disable hciuart
2.編輯/lib/systemd/system/hciuart.server 將 “ttyAMA0”修改為“ttyS0”
sudo nano /lib/systemd/system/hciuart.service
將 “ttyAMA0”修改為“ttyS0”
儲存退出
3.更新並重啟
sudo apt-get update
sudo apt-get upgrade
sudo reboot