樹莓派串口的使用

陳拓 [email protected] 2020/02/14-2020/02/14

1. 概述

下面的操作要在Putty上進行,如果不熟悉請看《電腦連接樹莓派Zero W》https://blog.csdn.net/chentuo2000/article/details/81051308

本文介紹在Raspberry Pi 3、3+,4和Raspberry Pi Zero W上配置串行端口。

上述的幾種樹莓派包含兩個可用於串行通信的UART控制器,也就是常說的串口:mini UART和PL011 UART。默認情況下,mini UART映射到40引腳GPIO連接器的TXD(GPIO 14)和RXD(GPIO 15)上,PL011 UART用於藍牙模塊​​,但是任何一個模塊都可以映射到GPIO端口。

樹莓派的GPIO引腳有幾套編號方案,不要混淆了,可以用下面的命令查看串口對應的GPIO引腳。

gpio readall命令的使用可以參考《樹莓派GPIO控制》https://blog.csdn.net/chentuo2000/article/details/81051645

pi@raspberrypi:~ $ gpio readall

串口對應的物理引腳是Pin8 - GPIO14(TXD)和Pin10 - GPIO15(RXD)。

要想改變物理引腳的映射關係也是可以的,在《樹莓派Zero W添加音頻輸出》https://blog.csdn.net/chentuo2000/article/details/103432788

一文中有詳細說明。

在Linux中可以使用/dev/ttyS0設備訪問mini UART端口。Mini UART串口的一個問題是其波特率與VPU內核頻率相關,而VPU頻率會隨處理器負載變化,因此UART串口的波特率也會變化,這將引起問題。

另外,mini UART串口的FIFO緩衝區比PL011 UART小,這可能會導致波特率較高時使丟失字符。

PL011 UART串口使硬件實現的未連接到VPU核心頻率,這意味着無論VPU速度如何,波特率都保持不變。PL011 UART串口器還包括mini UART串口不具備的其他功能,例如成幀錯誤檢測,中斷檢測,接收超時中斷和奇偶校驗位支持。

PL011 UART串口默認用於藍牙/無線模塊,在需要數據連接可靠的情況下,可以使用PL011 UART串口,如果同時需要使用藍牙模塊,可以使用mini UART串口。

2. 使用PL011 UART串口通信

2.1啓用樹莓派的mini UART串口

默認情況下mini UART用於登錄連接控制樹莓派,比如用Putty,這時mini UART不能用於通信,所以先要啓用mini UART的通信功能。

  • 查看默認的映射關係

查看設備文件:ls -l /dev

這是mini UART沒打開串口功能的情況,只有serial1(藍牙)默認使用的是PL011 UART (ttyAMA0)硬件串口。

  • 打開mini UART串口

執行sudo raspi-config命令:

選擇Interfacing Options

選擇serial

選擇“否”,禁用串口登錄功能,將串口用於通信。

選擇“是”,啓用串口硬件。

再查看設備文件:

serial0(GPIO串口已啓用)使用的是ttyS0設備(mini串口),serial1(藍牙)使用的是ttyAMA0設備(硬件串口PL011)。

2.2交換映射關係

serial0(mini UART)是GPIO引腳對應的串口,serial1(PL011 UART)是藍牙對應的串口。想要通過樹莓派的GPIO引腳進行穩定的串口通信,需要交換串口的映射關係。

對於2016年3月18日之後的Raspbian Linux版本中,有一個名爲pi3-miniuart-bt的設備樹文件用於交換串口映射。用下面的命令查看:

ls -l /boot/overlays/pi3-miniuart-bt*

隨版本不同有文件/boot/overlays/pi3-miniuart-bt-overlay.dtb或者文件/boot/overlays/pi3-miniuart-bt.dtbo。

啓用該文件只需在/boot/config.txt文件末尾添加一行代碼。

編輯該文件:

sudo  nano  /boot/config.txt

在末尾添加一行代碼:

dtoverlay=pi3-miniuart-bt

修改完以後重啓系統:

sudo reboot

再查看串口映射關係:

已經換過來了。

查看串口對應的GPIO引腳。用下面的命令查看所有引腳的狀態:

pi@raspberrypi:~ $ gpio readall

串口對應的引腳是Pin8(TXD, GPIO14)和Pin10(RXD, GPIO15)。

現在就可以在/dev/ttyAMA0上訪問UART串行端口了。

3. 測試

3.1安裝串口工具minicom

sudo apt-get install minicom

查看版本:

執行以下命令在minicom中對串口進行配置:

sudo minicom –s

在彈出的菜單中選擇“Serial port setup”,將默認設置

改成:

回車:

保存Save setup as df1,退出Exit from Minicom。

3.2串口迴環測試

  1. 用杜邦線連接Pin8(TxD)和Pin10(RxD)引腳
  2. 運行sudo minicom

Ctrl+A 按下E選擇回顯。

輸入Raspberry,可以看到回顯:

成功!

常用命令:

Ctrl+A W:當顯示的內容超過一行之後自動換行

Ctrl+A C:清屏

Ctrl+A X:退出minicom

 

參考文檔:

  1. 樹莓派3B和3B+的串口使用
    https://blog.csdn.net/m0_37509650/article/details/85403217
  2. Raspberry Pi 3, 4 and Zero W Serial Port Usage
    https://www.abelectronics.co.uk/kb/article/1035/raspberry-pi-3--4-and-zero-w-serial-port-usage

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章