본문 바로가기

ESPRESSIF/ESP32-C3

ESP32-C3 ESP-IDF SDK에서 GPIO 성능 테스트, Arduino IDE 코드와 비교

ESP-IDF SDK 개발 환경에서 ESP32-C3 성능을 테스트해 보자.  ESP32 Arduino IDE 개발환경에서 성능 테스트 결과 와 비교해 보면 좋을것 같다.

 

우선 SDK에서 제공하는 GPIO제어 예제로 테스트 해보자

#define BLINK_GPIO 0

void app_main(void)
{
    gpio_reset_pin(BLINK_GPIO);
    
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);

    while(1) {
        gpio_set_level(BLINK_GPIO, 1);
        gpio_set_level(BLINK_GPIO, 0);
    }
}

 

ESP32-C3 GPIO 토글 주기가 280ns(1.7Mhz)로 Arduino에서보다는 빠르지만 만족 스럽지는 않다.

 

 

레지스터 제어로 GPIO를 제어 해 보자

#define BLINK_GPIO 0

void app_main(void)
{
    gpio_reset_pin(BLINK_GPIO);
    
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
    
    while(1) {
        //gpio_set_level(BLINK_GPIO, 1);
        //gpio_set_level(BLINK_GPIO, 0);
        
        GPIO.out_w1ts.out_w1ts = (1 << BLINK_GPIO);
        GPIO.out_w1tc.out_w1tc = (1 << BLINK_GPIO);           
    }
}

 

112ns(4Mhz)로 조금 빨라 졌지만... 다른 MCU들과 비교하면 많이 느린것 같다.

GPIO로 제어 하는 어플리케이션은 좀 어려움이 있을 것 같다. 

반응형