FastLED 3.10.6
Loading...
Searching...
No Matches
pio_geometry.h File Reference

Detailed Description

Sampler geometry of the RP PIO RX capture.

These numbers are the contract between the capture device and anything that has to predict whether a frame will fit in it, and they bound a capture in two independent ways (FastLED#4371):

  • kRpPioRxEdgeCapacity is a pool of signal phases, two per bit.
  • the DMA word count derived from it is a fixed quantity of wall clock, because each word holds kRpPioRxSamplesPerDmaWord pin samples taken at kRpPioRxClockHz.

They live here, portable and free of the RP build guard, so the device, the bound in fl/channels/validation.h and the host tests all read the same definitions instead of copies that can drift apart.

Definition in file pio_geometry.h.

#include "fl/stl/int.h"
+ Include dependency graph for pio_geometry.h:

Go to the source code of this file.

Namespaces

namespace  fl
 Base definition for an LED controller.
 

Variables

constexpr u32 fl::kRpPioRxClockHz = 20000000u
 After synchronizing to the first rising edge the PIO runs one IN PINS instruction per cycle, so 20 MHz gives 50 ns samples – enough to separate WS2812 timing phases without losing the first phase to counter setup.
 
constexpr size_t fl::kRpPioRxDmaTailWords = 64u
 Reset-tail words appended to the DMA transfer.
 
constexpr size_t fl::kRpPioRxEdgeCapacity = 100u * 3u * 16u + 1u
 Phase slots in the shared capture pool.
 
constexpr u32 fl::kRpPioRxSamplesPerDmaWord = 32u
 Pin samples packed into each 32-bit DMA word.