Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
Référence du fichier drv_leds_addr.c

Driver pour LEDs adressables (type WS2812B) — sortie sur port GPIOD.3. Plus de détails...

#include "drv_leds_addr.h"

Macros

#define LED_PORT   GPIOD
 
#define LED_PIN   3
 

Fonctions

void drv_leds_addr_init (void)
 Initialise la ligne de sortie et réinitialise les LEDs.
 
void drv_leds_addr_update (void)
 Envoie le contenu du buffer vers les LEDs (protocole GRB 800 kHz).
 
void drv_leds_addr_set_rgb (int index, uint8_t r, uint8_t g, uint8_t b)
 Définit la couleur d’une LED en composantes RGB.
 
void drv_leds_addr_clear (void)
 Éteint toutes les LEDs (buffer uniquement, sans envoi).
 
void drv_leds_addr_set_color (int index, led_color_t color)
 Définit la couleur d’une LED via une structure led_color_t.
 
void drv_leds_addr_set (int index, led_color_t color, led_mode_t mode)
 Définit l’état logique d’une LED (couleur + mode).
 
void drv_leds_addr_render (void)
 Rendu de l’état logique vers le buffer physique.
 

Variables

CCM_DATA led_state_t drv_leds_addr_state [NUM_ADRESS_LEDS]
 État logique global de chaque LED.
 

Description détaillée

Driver pour LEDs adressables (type WS2812B) — sortie sur port GPIOD.3.

Implémente une génération logicielle du protocole WS2812B à 800 kHz via instructions ARM inline ASM calibrées pour une fréquence CPU de 168 MHz.

Fonctionnalités :

  • Transmission sérielle des données RGB (GRB order)
  • Gestion d’un buffer mémoire led_buffer[]
  • Modes d’affichage logiques : ON / OFF / BLINK / PLAYHEAD
  • Contrôle de la luminosité globale (LED_BRIGHTNESS)
Note
Nécessite interruptions désactivées pendant l’envoi (chSysLock).

Documentation des macros

◆ LED_PIN

#define LED_PIN   3

◆ LED_PORT

#define LED_PORT   GPIOD

Documentation des fonctions

◆ drv_leds_addr_clear()

void drv_leds_addr_clear ( void  )

Éteint toutes les LEDs (buffer uniquement, sans envoi).

◆ drv_leds_addr_init()

void drv_leds_addr_init ( void  )

Initialise la ligne de sortie et réinitialise les LEDs.

◆ drv_leds_addr_render()

void drv_leds_addr_render ( void  )

Rendu de l’état logique vers le buffer physique.

Met à jour le buffer physique selon les états logiques (drv_leds_addr_state[]).

Gère les effets visuels simples :

  • LED_MODE_ON → Couleur constante
  • LED_MODE_OFF → LED éteinte
  • LED_MODE_BLINK → Clignotement 2 Hz
  • LED_MODE_PLAYHEAD→ Effet pulsé

◆ drv_leds_addr_set()

void drv_leds_addr_set ( int  index,
led_color_t  color,
led_mode_t  mode 
)

Définit l’état logique d’une LED (couleur + mode).

◆ drv_leds_addr_set_color()

void drv_leds_addr_set_color ( int  index,
led_color_t  color 
)

Définit la couleur d’une LED via une structure led_color_t.

◆ drv_leds_addr_set_rgb()

void drv_leds_addr_set_rgb ( int  index,
uint8_t  r,
uint8_t  g,
uint8_t  b 
)

Définit la couleur d’une LED en composantes RGB.

Paramètres
indexIndice de la LED [0–NUM_ADRESS_LEDS-1]
rRouge (0–255)
gVert (0–255)
bBleu (0–255)

◆ drv_leds_addr_update()

void drv_leds_addr_update ( void  )

Envoie le contenu du buffer vers les LEDs (protocole GRB 800 kHz).

Documentation des variables

◆ drv_leds_addr_state

CCM_DATA led_state_t drv_leds_addr_state[NUM_ADRESS_LEDS]

État logique global de chaque LED.