#pio #dma #driver #cpu #rp2040 #zero #overhead

nightly hub75-pio

A HUB75 driver for RP2040. Utilizes PIO and DMA to achieve zero CPU overhead.

1 unstable release

0.1.0 Aug 29, 2022

#9 in #pio

MIT license

26KB
486 lines

hub75-pio-rs

An experimental HUB75 driver for RP2040. Utilizes Programmable I/O (PIO) units in combination with DMA to achieve high refresh rates, true color depth and zero CPU overhead without sacrificing quality.

https://user-images.githubusercontent.com/74944/187094663-2f52e020-ccb2-4103-b69b-af8ee2185dd0.mp4

Features

  • Supports LED matrices up to 64x32 pixels with 1:16 scanline
  • High refresh rate (approx. 2100 Hz with 24 bit color depth on a 64x32 display)
  • Does not utilize CPU for clocking out data to the display – all the work is done by the PIOs and the DMA controller
  • Uses binary color modulation
  • Double buffered
  • Implements embedded-graphics traits

Requirements

The current implementation assumes that the following groups of data outputs are assigned to consecutive pins on the RP2040:

  • R1, G1, B1, R2, G2, B2
  • ADDRA, ADDRB, ADDRC, ADDRD

lib.rs:

hub75-pio

An experimental HUB75 driver for RP2040. Utilizes Programmable I/O (PIO) units in combination with DMA to achieve high refresh rates, true color depth and zero CPU overhead without sacrificing quality.

Features

  • Supports LED matrices up to 64x32 pixels with 1:16 scanline
  • High refresh rate (approx. 2100 Hz with 24 bit color depth on a 64x32 display)
  • Does not utilize CPU for clocking out data to the display – all the work is done by the PIOs and the DMA controller
  • Uses binary color modulation
  • Double buffered
  • Implements embedded-graphics traits

Requirements

The current implementation assumes that the following groups of data outputs are assigned to consecutive pins on the RP2040:

  • R1, G1, B1, R2, G2, B2
  • ADDRA, ADDRB, ADDRC, ADDRD

Dependencies

~13–23MB
~308K SLoC