FastLED 3.9.15
Loading...
Searching...
No Matches
fl::Spi Class Reference

Detailed Description

SPI Device - RAII wrapper for multi-lane SPI.

This is the main user-facing class. It wraps device creation, initialization, and provides a simple write() API. Automatically creates and initializes the device on construction.

Lane Support:

  • Hardware (SPI_HW): 1-8 lanes (platform-dependent, uses DMA)
  • Software (SPI_BITBANG): up to 32 lanes (CPU bit-banging, blocking)
  • Software (SPI_ISR): up to 32 lanes (ISR-driven, async)

Example:

int pins[] = {0, 1, 2, 5};
if (!spi.ok()) {
FL_WARN("SPI initialization failed: " << spi.error());
return;
}
spi.write(lane0, lane1, lane2, lane3);
spi.wait(); // Block until transmission completes
int pins[]
Definition Spi.ino:11
SPI Device - RAII wrapper for multi-lane SPI.
Definition spi.h:53
#define FL_WARN(X)
Definition log.h:276
@ SPI_HW
Use DMA-capable hardware (Async or Sync), supports 1/2/4/8 lanes depending on platform.
Definition config.h:27

Definition at line 53 of file spi.h.

#include <spi.h>

+ Collaboration diagram for fl::Spi:

Public Member Functions

 Spi () FL_NOEXCEPT
 Default constructor - creates device in error state.
 
 Spi (const SpiConfig &config)
 Construct from SpiConfig.
 
 Spi (int clock_pin, fl::span< const int > data_pins, spi_output_mode_t output_mode=spi_output_mode_t::SPI_HW, u32 clock_speed_hz=0xffffffff)
 Construct and initialize SPI device.
 
 Spi (Spi &&other) FL_NOEXCEPT
 Move constructor.
 
 ~Spi () FL_NOEXCEPT
 Destructor (defined out-of-line in spi.cpp.hpp to keep MultiLaneDevice destructor out of callers' compilation units)
 
SPIError error () const
 Get error code (only meaningful if !ok())
 
spi::MultiLaneDeviceget ()
 Get access to underlying device (for advanced operations)
 
const spi::MultiLaneDeviceget () const
 
bool ok () const
 Check if device was created and initialized successfully.
 
 operator bool () const
 Explicit conversion to bool for contextual evaluation.
 
Spioperator= (Spi &&other) FL_NOEXCEPT
 Move assignment.
 
bool wait (u32 timeout_ms=0xFFFFFFFF)
 Wait for async write operation to complete.
 
template<typename... Spans>
WriteResult write (Spans &&... lanes)
 Write multiple lanes in parallel (variadic template)
 

Private Attributes

fl::unique_ptr< spi::MultiLaneDevicedevice
 
SPIError error_code
 
bool is_ok
 

The documentation for this class was generated from the following files: