Ring Oscillators

This page collects ring oscillator timing tests for embedded systems (the prior page is here).

GPIO

The GPIO test measures how quickly pins can communicate with a processor core; this is relevant for implementing real-time algorithms that are not supported by processor peripherals. In this, two pins are connected; a bit is output on one, read on the other, inverted in software, and the loop repeated, with the frequency of the resulting oscillation reported. Twice this frequency is the rate of reading, modifying, and writing to pins (plus the loop overhead).

RPi.GPIO https://pypi.org/project/RPi.GPIO/ works 345 kHz gpiozero https://gpiozero.readthedocs.io/en/stable/ works, slow 29 kHz
frequency (MHz) processor description date
16.66 PocketBeagle C, PRU March 2019
4.616 ATSAME54 C, SRAM (aligned) January 2021
4.000 ATxmega8E5 C, VPORT October 2015
3.810 ESP32-WROOM C, GPIO December 2020
3.737 ATSAMD51 C, PORT November 2018
3.067 Raspberry Pi 4 C, bcm2835, Buster December 2020
2.817 Raspberry Pi Zero C, bcm2835, Buster December 2020
2.528 ATSAMD11C C, IOBUS November 2020
2.172 AVR128DB32 C, VPORT December 2020
1.808 ATtiny412 Arduino, DigitalReadFast/WriteFast March 2021
1.808 ATtiny412 C, VPORT November 2020
1.171 ATSAMD11C C, PORT November 2020
1.056 ATtiny412 C, PORT November 2020
0.345 Raspberry Pi 4 Python, RPi.GPIO, Buster March 2021
0.331 ATtiny412 Arduino, digitalRead/Write November 2020
0.153 Raspberry Pi 4 C, libgpiod, Buster December 2020
0.153 Raspberry Pi 4 C, gpiolib, Buster December 2020
0.029 Raspberry Pi 4 Python, gpiozero, Buster March 2021