ESP32 - UART 관련 참고 사항 - UART 사용시 주의 사항

ESPRESSIF|2021. 8. 25. 13:45

ESP32의 UART 

 

ESP32의 Hardware UART는 총 3개를 지원하며, 각 UART는 독립적으로 구성이 가능합니다. 

 

UART0 : debug 포트로 사용, firmware 다운로드 기본 포트, 유져 정의로 사용 가능

UART1 : 유져 정의

UART2 : 유져 정의

 

UART에 대한 기본 내용은 아래에서 참고 가능합니다. 

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/uart.html
 

UART - ESP32 - — ESP-IDF Programming Guide latest documentation

If the GPIO number configured for a UART signal matches one of the IOMUX signals for that GPIO, the signal will be connected directly via the IOMUX. Otherwise the GPIO and signal will be connected via the GPIO Matrix. For example, if on an ESP32 the call u

docs.espressif.com

UART 핀 변경 

 

UART1 과 UART2 의 경우, GPIO중에서 아무 핀이나 할당하여 사용 가능합니다. 즉, Pin이 고정된게 아니고, IO Mux+GPIO Matrix를 통하여 유져가 원하는 Pin으로 할당 가능합니다. 

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/uart.html#_CPPv412uart_set_pin11uart_port_tiiii

// Set UART pins(TX: IO4, RX: IO5, RTS: IO18, CTS: IO19)
ESP_ERROR_CHECK(uart_set_pin(UART_NUM_2, 4, 5, 18, 19));

** IO Mux / GPIO Matrix에 대하여는 아래 Technical reference의 Chapter 4 를 참조 하시기 바랍니다. 

https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf

 

여러개의 UART 사용시 주의 사항 (중요!)

Technical reference manual 의 UART편을 보면 아래와 같이 UART2는 reset 레지스터가 없다고 나옵니다. 

즉, UART1을 reset이 UART2의 기능에 영향을 미친다고 나옵니다.

시험결과, UART1과 UART2가 동시에 Data전송을 하는 도중에, UART1을 reset하면, UART2도 reset이 되는 것과 같이 데이터 밀림 현상이 발생 합니다. 

https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf

 

UART 관련 예제 코드 

 

ESP-IDF, Master branch의 UART 관련 예제 코드 입니다. 

https://github.com/espressif/esp-idf/tree/master/examples/peripherals/uart

 

Software Serial 예제

 

정규 IDF에는 software serial 예제가 없고, 아래는 아두이노용 software serial 예제입니다.

https://github.com/plerup/espsoftwareserial
https://github.com/paulvha/ESP32/tree/master/softserial