1. 程式人生 > >樹莓派3串列埠(UART)使用問題的解決方法!

樹莓派3串列埠(UART)使用問題的解決方法!

根據官方的反饋和回覆,我們瞭解到樹莓派3上使用者目前無法正常是使用GPIO中的UART串列埠(GPIO14&GPIO15),也就是說使用者無論是想用串列埠來除錯樹莓派,還是想用GPIO中的串列埠來連線GPS,藍芽,XBEE等等串列埠外設目前都是有問題的。

原因是樹莓派CPU內部有兩個串列埠,一個是硬體串列埠(官方稱為PL011 UART),一個是迷你串列埠(官方成為mini-uart)。在樹莓派2B/B+這些老版樹莓派上,官方設計時都是將“硬體串列埠”分配給GPIO中的UART(GPIO14&GPIO15),因此可以獨立調整串列埠的速率和模式。而樹莓派3的設計上,官方在設計時將硬體串列埠分配給了新增的藍芽模組上,而將一個沒有時鐘源,必須由核心提供時鐘參考源的“迷你串列埠

”分配給了GPIO的串列埠,這樣以來由於核心的頻率本身是變化的,就會導致“迷你串列埠”的速率不穩定,這樣就出現了無法正常使用的情況。

目前解決方法就是,關閉藍芽對硬體串列埠的使用,將硬體串列埠重新恢復給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

QQ圖片20160310002624

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”

QQ圖片20160310003124

儲存退出

3.更新並重啟

sudo apt-get update
sudo apt-get upgrade
sudo reboot

樹莓派3B高清俯檢視