樹莓派的串列埠問題

2021-09-13 14:09:16 字數 1596 閱讀 1438

樹莓派的串列埠使用之前需要做一些工作。因為樹莓派本身是有兩個串列埠的,乙個是硬體串列埠,裝置名字叫做:/dev/ttyama0  還有乙個叫mini串列埠,這是個比較雞肋的東西,它的時鐘源是受核心的頻率的影響的,因此如果拿他來做通訊,那很容易就會波特率不一致而出錯。所以一般就得用硬體串列埠ttyama0。

而樹莓派的初始設定是將ttyama0用於了板載藍芽上,跟藍芽連一起了,而迷你串列埠對映到了gpio14/15也就是咱們現在外部能連的tx/rx,並且呢,這個tx/rx是預設用於console的,是通過串列埠來控制樹莓派的,因此這裡在使用樹莓派通訊前還必須把這個

console

給關掉,不然的話也是要亂碼的。

綜上,我們需要做兩個工作,將硬體串列埠對映到rx/tx也即gpio14/15引腳,然後關掉串列埠控制功能,然後關掉藍芽功能。

先做第一件事情,交換對映 在這裡簡單理解為serial0就是gpio對應的串列埠,serial1就是mini串列埠

使用命令ls –l | grep serial 檢視對映關係 會發現

serial0->ttys0

serial1->ttyama0

而我們的目標就是要把這兩個對映關係給換過來

修改配置檔案/boot/config.txt

在最底部新增:

dtoverlay=pi3-miniuart-b

儲存退出。重啟樹莓派。

再用命令ls –l | grep serial

看到對映關係為:

serial0->ttyama0

serial1->ttys0

然後第二步  禁用串列埠的控制台功能

通過以下兩條命令來停止和禁用串列埠的控制台功能

sudo systemctl stop [email protected]

sudo systemctl disable [email protected]

然後修改cmdline.txt檔案

sudo vim /boot/cmdline.txt

看到如下內容:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

刪掉console=serial0,115200

重啟樹莓派,修改生效。

cmdline.txt

檔案:

console

console的裝置和選項,如:console=tty0 console=ttys0

debug

enable kernel debugging 啟動中的所有debug資訊都會列印到console上

quiet

disable all log messages 將kernel log level設定為kern_warning,在啟動中只非常嚴重的資訊

loglevel

設定預設的console日誌級別,如:loglevel=7 (0~7的數字分別為:kern_emerg,..,kern_debug)

time

設定在每條kernel log資訊前加乙個時間戳

樹莓派串列埠

串列埠使用例程及說明 pyserial api sudo apt get install python serial python m serial.tools.list ports 此命令可以檢視裝置的檔案節點。class serial.serial init port none,baudrate...

樹莓派串列埠通訊python 樹莓派串列埠通訊設定

實驗環境樹莓派 3b 開發板 2018 06 27 raspbian stretch 樹莓派作業系統 使用 windows 10 通過網線連線遠端登陸訪問方式控制樹莓派 實驗目的 為了將樹莓派構建成乙個智慧型家居的資料中心,我們需要在樹莓派上連線 zigbee 無線通訊模組,實現與感測器的一對多通訊...

樹莓派 pypi UART串列埠

樹莓派在linux上層支援通用的串列埠介面,用linux上通用的串列埠程式設計即可操作。樹莓派3b的板載串列埠被藍芽占用,但可以方便地使用usb串列埠模組。樹莓派的板載串列埠是給系統登入使用的,我們要先把這個功能關掉。sudo raspi config advanced options serial...