NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_neoled.c File Reference

Smart LED Interface (NEOLED) HW driver source file. More...

#include <neorv32.h>

Functions

int neorv32_neoled_available (void)
 
void neorv32_neoled_enable (void)
 
void neorv32_neoled_disable (void)
 
void neorv32_neoled_setup (uint32_t prsc, uint32_t t_total, uint32_t t_high_zero, uint32_t t_high_one)
 
void neorv32_neoled_setup_ws2812 (void)
 
void neorv32_neoled_strobe_blocking (void)
 
void neorv32_neoled_strobe_nonblocking (void)
 
void neorv32_neoled_write32_blocking (uint32_t data)
 
void neorv32_neoled_write32_nonblocking (uint32_t data)
 
void neorv32_neoled_write24_blocking (uint32_t data)
 
void neorv32_neoled_write24_nonblocking (uint32_t data)
 
int neorv32_neoled_get_fifo_depth (void)
 
int neorv32_neoled_fifo_full (void)
 
int neorv32_neoled_fifo_empty (void)
 
int neorv32_neoled_busy (void)
 

Detailed Description

Smart LED Interface (NEOLED) HW driver source file.

Function Documentation

◆ neorv32_neoled_available()

int neorv32_neoled_available ( void )

Check if NEOLED unit was synthesized.

Returns
0 if NEOLED was not synthesized, non-zero if NEOLED is available.

◆ neorv32_neoled_busy()

int neorv32_neoled_busy ( void )

Check if NEOLED is busy (sending stuff).

Returns
0 if NEOLED is idle, non-zero if NEOLED is busy.

◆ neorv32_neoled_disable()

void neorv32_neoled_disable ( void )

Disable NEOLED controller.

◆ neorv32_neoled_enable()

void neorv32_neoled_enable ( void )

Enable NEOLED controller.

◆ neorv32_neoled_fifo_empty()

int neorv32_neoled_fifo_empty ( void )

Check if TX FIFO is empty.

Returns
0 if FIFO is not empty, non-zero if FIFO is empty.

◆ neorv32_neoled_fifo_full()

int neorv32_neoled_fifo_full ( void )

Check if TX FIFO is full.

Returns
0 if FIFO is not full, non-zero if FIFO is full

◆ neorv32_neoled_get_fifo_depth()

int neorv32_neoled_get_fifo_depth ( void )

Get NEOLED hardware buffer size.

Returns
Number of entries in NEOLED TX buffer.

◆ neorv32_neoled_setup()

void neorv32_neoled_setup ( uint32_t prsc,
uint32_t t_total,
uint32_t t_high_zero,
uint32_t t_high_one )

Enable and configure NEOLED controller. The NEOLED control register bits are listed in NEORV32_NEOLED_CTRL_enum. This function performs a "raw" configuration (just configuring the according control register bit).

Parameters
[in]prscClock prescaler select (0..7). See NEORV32_CLOCK_PRSC_enum.
[in]t_totalNumber of pre-scaled clock ticks for total bit period (0..31).
[in]t_high_zeroNumber of pre-scaled clock ticks to generate high-time for sending a '0' (0..31).
[in]t_high_oneNumber of pre-scaled clock ticks to generate high-time for sending a '1' (0..31).

◆ neorv32_neoled_setup_ws2812()

void neorv32_neoled_setup_ws2812 ( void )

Configure NEOLED controller for using WS2812 LEDs (NeoPixel-compatible). This function computes all the required timings and finally calls neorv32_neoled_setup.

Note
WS2812 timing: T_period = 1.2us, T_high_zero = 0.4us, T_high_one = 0.8us. Change the constants if required.
This function uses the SYSINFO_CLK value (from the SYSINFO HW module) to do the timing computations.

◆ neorv32_neoled_strobe_blocking()

void neorv32_neoled_strobe_blocking ( void )

Send strobe command ("RESET") - blocking.

◆ neorv32_neoled_strobe_nonblocking()

void neorv32_neoled_strobe_nonblocking ( void )

Send strobe command ("RESET") - non-blocking.

◆ neorv32_neoled_write24_blocking()

void neorv32_neoled_write24_blocking ( uint32_t data)

Send single RGB data word to NEOLED module (blocking).

Parameters
[in]LSB-aligned24-bit RGBW data

◆ neorv32_neoled_write24_nonblocking()

void neorv32_neoled_write24_nonblocking ( uint32_t data)

Send single RGB data word to NEOLED module (non-blocking).

Parameters
[in]LSB-aligned24-bit RGBW data

◆ neorv32_neoled_write32_blocking()

void neorv32_neoled_write32_blocking ( uint32_t data)

Send single RGBW data word to NEOLED module (blocking).

Parameters
[in]32-bitRGBW data

◆ neorv32_neoled_write32_nonblocking()

void neorv32_neoled_write32_nonblocking ( uint32_t data)

Send single RGBW data word to NEOLED module (non-blocking).

Parameters
[in]32-bitRGBW data