ESP32-C3 MCU에 대한 연산 처리 성능을 측정해봤습니다.
| 구분 |
항목
|
내용 |
| 일반 | 칩 명칭 | ESP32-C3 |
| 제조사 | Espressif Systems | |
| 아키텍처 | 32-bit RISC-V (RV32IMC) | |
| 코어 수 | 1 (Single Core) | |
| 클럭 속도 | 최대 160 MHz | |
| 명령어 세트 | RISC-V base ISA + MUL/DIV + compressed instruction set | |
| FPU (부동소수점 유닛) | ❌ 없음 (소프트웨어 처리) | |
| ULP 코어 | ❌ 없음 (ESP32-C3에는 저전력 코어 미탑재) | |
| 메모리 / 저장장치 |
SRAM | 400 KB (사용자용 약 384 KB) |
| ROM | 384 KB (부트로더 및 Wi-Fi/BLE 스택 일부 포함) | |
| 외부 플래시 | SPI/QSPI Flash 최대 16 MB (보드에 따라 4~8 MB 기본 탑재) | |
| 외부 PSRAM | ❌ 미지원 (ESP32-S3/ESP32만 지원) | |
| 캐시 | 명령/데이터 캐시 각 8 KB | |
| 무선 기능 | Wi-Fi | IEEE 802.11 b/g/n (2.4 GHz, 20 MHz 대역폭) |
| 속도 | 최대 150 Mbps (HT20) | |
| 모드 | Station / SoftAP / SoftAP+Station | |
| 보안 | WPA/WPA2/WPA3-Personal | |
| BLE | Bluetooth 5.0 Low Energy (LE), LE 2 Mbps / LE Coded PHY / Advertising Extensions 지원 | |
| 안테나 | 온보드 PCB 안테나 or IPEX 커넥터 (보드별) | |
| 주변 장치 | GPIO | 최대 22개 (보드마다 일부 제한) |
| UART | 3개 (UART0, UART1, UART2) | |
| SPI | 2개 | |
| I²C | 2개 | |
| I²S | 1개 (오디오 인터페이스) | |
| PWM (LEDC) | 6채널 | |
| ADC | 6채널, 12-bit, 0~3.3V 입력 | |
| DAC | ❌ 없음 | |
| RMT (Remote Control) | 2채널 (IR 송수신 등 타이밍 제어용) | |
| Timers | 4개 (64-bit General Purpose) | |
| Watchdog | 타이머, RTC, Task WDT 포함 | |
| RTC | Real-Time Clock, Deep Sleep 모드 유지 가능 | |
| Touch Sensor | ❌ 없음 | |
| USB | ✅ Full-Speed USB 2.0 OTG (CDC, DFU 등 직접 연결 가능, UART 칩 불필요) | |
| 보안 기능 | Secure Boot | ✅ 지원 (1차, 2차 부트로더 보호) |
| Flash Encryption | ✅ 지원 (AES-XTS 256-bit) | |
| Crypto Engine | ✅ AES, SHA, RSA, ECC, HMAC, RNG | |
| eFuse | ✅ 암호키, 칩 식별, Flash Encryption Key 저장 | |
| TRNG (True RNG) | ✅ 내장 | |
| JTAG Protection | ✅ eFuse로 비활성화 가능 | |
| 전원 / 전력 소모 |
동작 전압 | 3.0V ~ 3.6V (권장 3.3V) |
| 동작 전류 (Active Wi-Fi) | 약 80 ~ 100 mA | |
| Deep Sleep 전류 | 약 5 µA | |
| 전원 레귤레이터 내장 여부 | ❌ (외부 LDO 필요) | |
| 전원 핀 | 3V3 / GND / EN (CH340 대신 USB 전원 직결 가능) |

1. GPIO 토글 주기
1-1. 함수 명령과 레지스터 제어 와의 성능 차이를 측정해봤고, 레지스터 제어 방식이 약 15배 빠릅니다.
| 함수 호출 | 레지스터 제어 |
| void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); } |
void setup() { pinMode(13, OUTPUT); } void loop() { REG_WRITE(GPIO_OUT_W1TS_REG, (1 << 0)); // GPIO0 Set REG_WRITE(GPIO_OUT_W1TC_REG, (1 << 0)); // GPIO0 Clear
|
*신호 분석: Logic Analyzer(LA2016) 200MHz Sampling
| 함수 호출 | ![]() |
| 레지스터 제어 | ![]() |
일반적인 Arduino 모델과는 비교가 되지 않는 높은 성능을 나타냅니다. 동작 클럭 만 보아도 Arduino Uno 16MHz 와 ESP32-C3 160MHz 는 10배 차이가 나고 RISC-V 아키텍처의 성능이 월등히 뛰어납니다.
2. 연산 처리 능력
약 1초 간 루프 문 안에서 반복적으로 카운트(덧셈)하는 연산으로 시험인데, PC 에서 Serial 출력을 받기 위해서는 USB CDC on Boot 옵션을 Enable 로 설정해야 합니다.
unsigned long start, end;
volatile unsigned long count = 0;
void setup() {
Serial.begin(9600);
start = micros();
while (micros() - start < 1000000) { // 1초 동안
count++;
}
end = micros();
Serial.print("Count per second: ");
Serial.println(count);
}
void loop() {}
결과는 1,152,194회 로 Arduino Uno(203,905회)대비 약 5.6배의 성능입니다.
'하드웨어 > 테스트' 카테고리의 다른 글
| 릴레이(Relay)는 얼마나 빠를까? 고속 신호 반응 테스트 (0) | 2025.10.16 |
|---|---|
| Raspberry Pi Pico 성능 측정 (0) | 2025.10.13 |
| ESP8266 NodeMCU 성능 측정 (0) | 2025.10.13 |
| Arduino 3종 성능 측정 (0) | 2025.10.09 |
| [RPi-1] GPIO 최소 출력 주기와 실제 속도 한계 측정 (0) | 2025.10.03 |

