ESP32 新增硬體序列串口 2 範例
by Richard · 2024 年 4 月 1 日
https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/
ESP32上有3 個串列埠,分別為U0UXD、U1UXD 和 U2UXD ,皆工作在 3.3V TTL 電平。 ESP32 上有三個硬體支援的串行接口,稱為 UART0、UART1 和 UART2。與所有周邊一樣,UART 的引腳可以在邏輯上對應到 ESP32 上的任何可用引腳。然而,UART 也可以直接訪問,從而略微提高效能。此硬體輔助的引腳映射表如下。
串口 | 接收輸入輸出 | 發送IO | CTS | 即時傳輸系統 |
---|---|---|---|---|
串口0 | GPIO3 | GPIO1 | 不適用 | 不適用 |
串口1 | GPIO9 | GPIO10 | GPIO6 | GPIO11 |
串口2 | GPIO16 | GPIO17 | GPIO8 | GPIO7 |
話雖如此,我建議使用的 UART 驅動程式沒有內建這種級別的優化,因此,您幾乎可以自由地使用您選擇的任何引腳。
串口簡介
UART 代表通用非同步接收器/發送器。它不是像 SPI 和 I2C 這樣的通訊協議,而是微控制器中的物理電路,或獨立的 IC。 UART 的主要用途是傳送和接收串列資料。 UART 通訊簡介 UART 通訊是兩個 UART 直接相互通訊。發送UART將來自CPU等控制設備的並行資料轉換為串行形式,將其串行發送到接收UART,然後接收UART將串行數據轉換回並行數據以供接收設備使用。只需兩根線即可在兩個 UART 之間傳輸資料。資料從發送 UART 的 Tx 引腳流向接收 UART 的 Rx 引腳。
UART 非同步傳輸數據,這意味著沒有時脈訊號來同步發送 UART 的位元輸出和接收 UART 的位元取樣。發送 UART 向正在傳輸的資料包添加起始位元和停止位,而不是時脈訊號。這些位元定義封包的開始和結束,以便接收 UART 知道何時開始讀取這些位元。當接收 UART 偵測到起始位元時,它開始以稱為波特率的特定頻率讀取傳入位元。波特率是資料傳輸速度的量測,以每秒位數 (bps) 表示。
兩個 UART 必須以大致相同的波特率運作。在位元時序相差太遠之前,發送和接收 UART 之間的波特率只能相差約 3%。兩個 UART 還必須配置為發送和接收相同的資料包結構。
ESP32 串口接腳排列
ESP32 Hardware Serial2 Arduino Example Code
/* * There are three serial ports on the ESP known as U0UXD, U1UXD and U2UXD. * * U0UXD is used to communicate with the ESP32 for programming and during reset/boot. * U1UXD is unused and can be used for your projects. Some boards use this port for SPI Flash access though * U2UXD is unused and can be used for your projects. * */ #define RXD2 16 #define TXD2 17 void setup() { // Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin); Serial.begin(115200); //Serial1.begin(9600, SERIAL_8N1, RXD2, TXD2); Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2); Serial.println("Serial Txd is on pin: "+String(TX)); Serial.println("Serial Rxd is on pin: "+String(RX)); } void loop() { //Choose Serial1 or Serial2 as required while (Serial2.available()) { Serial.print(char(Serial2.read())); } }
This program reads data from serial2 and sends to serial0 i.e. programming serial. Multiple serial is useful when using GPS and GSM systems together.