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);
}
반응형