ESP32 新增硬體序列串口 2 範例

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 也可以直接訪問,從而略微提高效能。此硬體輔助的引腳映射表如下。

串口接收輸入輸出發送IOCTS即時傳輸系統
串口0GPIO3GPIO1不適用不適用
串口1GPIO9GPIO10GPIO6GPIO11
串口2GPIO16GPIO17GPIO8GPIO7

話雖如此,我建議使用的 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.

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *