본문 바로가기

ESPRESSIF/ESP32-C3

ESP32-C3 3채널 UART 사용하기

ESP32-C3는 2개의 하드웨어 UART가 있고 USB CDC를 사용하면 3채널의 UART를 사용 할 수 있다.

PC에서 UART로 제어 하면서 외부 UART 2채널을 사용할 수 있는 것이다.

 

 

ESP NOW를 이욯하면 무선 UART 전송장치를 만들기에 딱 좋은 솔루션이 될 수 있다.

 


UART0는 주로 디버깅용 및 다운로드용으로 많이 사용한다.

 Arduino 의 디폴트 핀정의는 아래와 같다.

static const uint8_t TX = 21;
static const uint8_t RX = 20;

 

디버깅 메시지는 부팅시 GPIO8의 설정 상태에 따라 선택 할 수 있다.

 

 


UART1는 ESP32의 Any IO 타입으로 PIN MUX에 의해 원하는 핀에 할당해서 사용 할 수 있다.

Arduino Code는 아래와 같이 설정해서 사용 할 수 있다.

void setup() {
  //UART2
  Serial1.begin(115200,SERIAL_8N1, 8,9); //int8_t rxPin=8, int8_t txPin=9
}


void loop() {
  Serial1.println("Serial 1");
  delay(100);
}

 


USB를 이용하여 USB CDC를 사용한다면 Arduino 툴에서 옵션으로 설정할 수 있다.

이경우 UART0는 Serial0로 정의되고 USB CDC는 Serial로 정의 된다.

 

 

#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL) 
#if ARDUINO_USB_CDC_ON_BOOT //Serial used for USB CDC 
HardwareSerial Serial0(0); 
#elif ARDUINO_HW_CDC_ON_BOOT 
HardwareSerial Serial0(0); 
#else 
HardwareSerial Serial(0); 
#endif

 

 

ESP32-C3 3채널 UART 사용 테스트 예제코드

void setup() {
  //CDC BOOT ON -> USB 
  Serial.begin(115200);

  //UART1
  Serial0.begin(115200);

  //UART2
  Serial1.begin(115200,SERIAL_8N1, 8,9); //int8_t rxPin=8, int8_t txPin=9
}

void loop() {
  Serial.println("USB Serial");
  Serial0.println("Serial 0");
  Serial1.println("Serial 1");
  delay(100);
}
반응형