FastLED 3.9.15
Loading...
Searching...
No Matches
fl::SpiEncoder Struct Reference

Detailed Description

SPI encoder configuration for LED protocols.

Unlike clockless protocols (WS2812, SK6812) which use precise nanosecond timing phases, SPI protocols are clock-based with explicit data and clock lines.

This configuration contains only the essential parameters - protocol type determines all encoding details (frame structure, brightness support, byte ordering, etc.).

Native SPI protocols (APA102, SK9822, HD108, WS2801, LPD6803, etc.)

  • True clocked protocols with data + clock pins
  • Direct byte transmission (no bit-pattern encoding)
  • Typical clock rates: 1-40 MHz

Supported chipsets:

  • APA102/DotStar - 4-wire SPI with global brightness per LED (default 6 MHz)
  • SK9822 - Similar to APA102 with different end frame (default 12 MHz)
  • HD108 - High-definition 16-bit SPI chipset (default 25 MHz)
  • WS2801 - 3-wire SPI protocol (default 1 MHz)
  • WS2803 - Variant of WS2801 (default 25 MHz)
  • LPD6803 - Older 16-bit 5-5-5 RGB protocol (default 12 MHz)
  • LPD8806 - 7-bit color depth SPI protocol (default 12 MHz)
  • P9813 - SPI protocol with checksum header (default 10 MHz)

Definition at line 38 of file spi.h.

#include <spi.h>

Public Member Functions

constexpr bool operator!= (const SpiEncoder &other) const FL_NOEXCEPT
 Inequality operator.
 
constexpr bool operator== (const SpiEncoder &other) const FL_NOEXCEPT
 Equality operator (required for hash map key)
 

Static Public Member Functions

static SpiEncoder apa102 (u32 clock_hz=6000000) FL_NOEXCEPT
 Create APA102 encoder configuration.
 
static SpiEncoder apa102HD (u32 clock_hz=6000000) FL_NOEXCEPT
 Create APA102HD encoder configuration (per-LED brightness via HD gamma)
 
static SpiEncoder dotstar (u32 clock_hz=6000000) FL_NOEXCEPT
 Create DOTSTAR encoder configuration (alias for APA102)
 
static SpiEncoder dotstarHD (u32 clock_hz=6000000) FL_NOEXCEPT
 Create DOTSTARHD encoder configuration (alias for APA102HD)
 
static SpiEncoder hd107 (u32 clock_hz=40000000) FL_NOEXCEPT
 Create HD107 encoder configuration.
 
static SpiEncoder hd107HD (u32 clock_hz=40000000) FL_NOEXCEPT
 Create HD107HD encoder configuration.
 
static SpiEncoder hd108 (u32 clock_hz=25000000) FL_NOEXCEPT
 Create HD108 encoder configuration.
 
static SpiEncoder lpd6803 (u32 clock_hz=12000000) FL_NOEXCEPT
 Create LPD6803 encoder configuration.
 
static SpiEncoder lpd8806 (u32 clock_hz=12000000) FL_NOEXCEPT
 Create LPD8806 encoder configuration.
 
static SpiEncoder p9813 (u32 clock_hz=10000000) FL_NOEXCEPT
 Create P9813 encoder configuration.
 
static SpiEncoder sk9822 (u32 clock_hz=12000000) FL_NOEXCEPT
 Create SK9822 encoder configuration.
 
static SpiEncoder sk9822HD (u32 clock_hz=12000000) FL_NOEXCEPT
 Create SK9822HD encoder configuration.
 
static SpiEncoder sm16716 (u32 clock_hz=16000000) FL_NOEXCEPT
 Create SM16716 encoder configuration.
 
static SpiEncoder spiEncoderForChipset (SpiChipset chipset, u32 speed_hz_override=0) FL_NOEXCEPT
 Look up the default SpiEncoder for a given chipset.
 
static SpiEncoder ws2801 (u32 clock_hz=1000000) FL_NOEXCEPT
 Create WS2801 encoder configuration.
 
static SpiEncoder ws2803 (u32 clock_hz=25000000) FL_NOEXCEPT
 Create WS2803 encoder configuration.
 

Public Attributes

SpiChipset chipset
 LED chipset type (determines all encoding behavior)
 
u32 clock_hz
 SPI clock frequency in Hz (e.g., 6000000 for 6MHz)
 

The documentation for this struct was generated from the following file: