This page collects GPIO and communication ring oscillator timing tests for embedded systems (the prior page is here).
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).
frequency (MHz) | processor | description | date |
---|---|---|---|
60.0 | iCE40UP5K | Verilog (notes), 120 MHz, iCEBreaker V1.0e, | September 2021 |
41.7 | RP2040 | PIO, 250 MHz, XIAO, input sync bypass | March 2023 |
25.0 | RP2040 | PIO, 250 MHz, XIAO | December 2022 |
23.1 | IMXRT1062 | Fast, GPIO, 600 MHz, Teensy 4.1, | August 2021 |
16.7 | PocketBeagle | C, PRU | March 2019 |
12.9 | RP2040 | Arduino, SIO, 250 MHz, XIAO | December 2022 |
4.62 | ATSAME54 | C, SRAM (aligned) | January 2021 |
4.00 | ATxmega8E5 | C, VPORT | October 2015 |
3.81 | ESP32-WROOM | C, GPIO | December 2020 |
3.79 | ESP32-C3 | Arduino, GPIO, 160 MHz, XIAO | December 2022 |
3.74 | ATSAMD51 | C, PORT | November 2018 |
3.07 | Raspberry Pi 4 | C, bcm2835, Buster | December 2020 |
2.82 | Raspberry Pi Zero | C, bcm2835, Buster | December 2020 |
2.53 | ATSAMD11C | C, IOBUS | November 2020 |
2.17 | AVR128DB32 | C, VPORT | December 2020 |
1.81 | ATtiny412 | Arduino, DigitalReadFast/WriteFast | March 2021 |
1.81 | ATtiny412 | C, VPORT | November 2020 |
1.17 | ATSAMD11C | C, PORT | November 2020 |
1.11 | RP2040 | Arduino, digitalRead/Write, 250 MHz, XIAO | December 2022 |
1.06 | ATtiny412 | C, PORT | November 2020 |
.736 | ESP32-C3 | Arduino, digitalRead/Write, 160 MHz, XIAO | December 2022 |
.350 | RP2040 | MicroPython, 250 MHz, XIAO | December 2022 |
.345 | Raspberry Pi 4 | Python, RPi.GPIO, Buster | March 2021 |
.331 | ATtiny412 | Arduino, digitalRead/Write | November 2020 |
.153 | Raspberry Pi 4 | C, libgpiod, Buster | December 2020 |
.153 | Raspberry Pi 4 | C, gpiolib, Buster | December 2020 |
.029 | Raspberry Pi 4 | Python, gpiozero, Buster | March 2021 |
The communication test measures how quickly two nodes can exchange messages; this is relevant for implementing real-time and high data-rate algorithms. In this, the "from" node sends a byte to the "to" node, which adds 1 to it and sends it back. This is repeated many times, and the number of round trips is divided by the total time. Twice that frequency is approximately the byte rate in one direction, and 16 times that frequency is approximately the bit rate in one direction.
frequency (MHz) | from | link | to | date |
---|---|---|---|---|
0.250 | iCE40, Verilog (notes) | tx/rx jumpers (3.3V) | iCE40, Verilog | September 2021 |
0.010 | i7-8700T, C, termios | USB 2.1 | ATSAMD11C, Arduino, SerialUSB | April 2021 |
0.007 | i7-8700T, Python, pySerial | USB 2.1 | ATSAMD11C, Arduino, SerialUSB | March 2021 |