기본 동작은 확인 되었으니 Arduin IDE 개발 환경에서 STM32F4의 성능 테스트를 진행 해 보자.
Arduino에서 제공한 GPIO 함수를 이용하여 토글해 보면 700ns 정도 측정된다. 루프 수행 속도는 560ns 정도 된다.
역시 느리다.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED_BUILTIN, LOW);
}
Raspberry Pi Pico SDK 에서 제공하는 gpio_put() 함수를 사용해 보자
https://raspberrypi.github.io/pico-sdk-doxygen/group__hardware__gpio.html
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
gpio_set_slew_rate(LED_BUILTIN, GPIO_SLEW_RATE_FAST);
}
void loop()
{
//digitalWrite(LED_BUILTIN, HIGH);
//digitalWrite(LED_BUILTIN, LOW);
gpio_put(LED_BUILTIN, 1);
gpio_put(LED_BUILTIN, 0);
}
레지스터 직접 제어로테스트 해도 동일한 결과가 나온다.
sio_hw->gpio_set = 0x01;
sio_hw->gpio_clr = 0x01;
Aruino IDE에서 RP2040 GPIO 토글 속도 측정 결과 펄스 폭 15ns(4Mhz) 정도, 루프 수행시간 230ns 정도로 측정이 된다.
시리얼 포트를 활성화 시키면 24ns로 느려진다.
오버클럭을 사용해 볼까?
300Mhz 까지 가능한 것 같은데... 실제로 테스트 해 보면 250Mhz 까지 가능하다.
반응형