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

Interface du driver OLED SPI SSD1309 (128×64) pour Brick. Plus de détails...

#include "ch.h"
#include "brick_config.h"
#include "hal.h"
#include <stdint.h>
#include "font.h"

Aller au code source de ce fichier.

Macros

#define OLED_WIDTH   128
 Largeur en pixels de l’écran OLED.
 
#define OLED_HEIGHT   64
 Hauteur en pixels de l’écran OLED.
 

Fonctions

void drv_display_init (void)
 Initialise le contrôleur OLED et le framebuffer.
 
void drv_display_clear (void)
 Efface tout le contenu du framebuffer.
 
void drv_display_update (void)
 Transfère le contenu du framebuffer vers l’écran OLED.
 
uint8_t * drv_display_get_buffer (void)
 Retourne un pointeur vers le framebuffer local (1 bit/pixel).
 
void drv_display_start (void)
 Démarre le thread d’affichage automatique (~30 FPS).
 
void drv_display_set_font (const font_t *font)
 Définit la police courante utilisée pour le rendu texte.
 
void drv_display_draw_char (uint8_t x, uint8_t y, char c)
 Dessine un caractère ASCII à la position spécifiée.
 
void drv_display_draw_text (uint8_t x, uint8_t y, const char *txt)
 Affiche une chaîne de caractères à partir d’une position donnée.
 
void drv_display_draw_number (uint8_t x, uint8_t y, int num)
 Affiche un nombre entier sous forme décimale.
 
void drv_display_draw_text_with_font (const font_t *font, uint8_t x, uint8_t y, const char *txt)
 Dessine du texte avec une police spécifique sans changer la police globale.
 
void drv_display_draw_text_at_baseline (const font_t *font, uint8_t x, uint8_t baseline_y, const char *txt)
 Dessine du texte aligné sur une ligne de base commune.
 
void drv_display_draw_char_in_box (const font_t *font, uint8_t x, uint8_t y, uint8_t box_w, uint8_t box_h, char c)
 Dessine un caractère centré dans une boîte rectangulaire.
 

Description détaillée

Interface du driver OLED SPI SSD1309 (128×64) pour Brick.

Ce module fournit une API haut niveau pour le rendu graphique sur écran OLED :

  • Initialisation du contrôleur SSD1309 (via SPI1)
  • Gestion d’un framebuffer mémoire local
  • Fonctions de dessin de texte et caractères
  • Support de polices configurables (font_t)
  • Thread optionnel de rafraîchissement automatique (~30 FPS)
Note
Le framebuffer doit être explicitement mis à jour via drv_display_update() si le thread d’affichage n’est pas démarré.

Documentation des macros

◆ OLED_HEIGHT

#define OLED_HEIGHT   64

Hauteur en pixels de l’écran OLED.

◆ OLED_WIDTH

#define OLED_WIDTH   128

Largeur en pixels de l’écran OLED.

Documentation des fonctions

◆ drv_display_clear()

void drv_display_clear ( void  )

Efface tout le contenu du framebuffer.

Efface tout le contenu du framebuffer.

◆ drv_display_draw_char()

void drv_display_draw_char ( uint8_t  x,
uint8_t  y,
char  c 
)

Dessine un caractère ASCII à la position spécifiée.

Paramètres
xPosition horizontale en pixels.
yPosition verticale en pixels.
cCaractère à afficher.

Dessine un caractère ASCII à la position spécifiée.

◆ drv_display_draw_char_in_box()

void drv_display_draw_char_in_box ( const font_t font,
uint8_t  x,
uint8_t  y,
uint8_t  box_w,
uint8_t  box_h,
char  c 
)

Dessine un caractère centré dans une boîte rectangulaire.

Paramètres
fontPolice utilisée.
xCoin supérieur gauche de la boîte (X).
yCoin supérieur gauche de la boîte (Y).
box_wLargeur de la boîte.
box_hHauteur de la boîte.
cCaractère à afficher.

◆ drv_display_draw_number()

void drv_display_draw_number ( uint8_t  x,
uint8_t  y,
int  num 
)

Affiche un nombre entier sous forme décimale.

Paramètres
xCoordonnée X du texte.
yCoordonnée Y du texte.
numValeur entière à afficher.

Affiche un nombre entier sous forme décimale.

◆ drv_display_draw_text()

void drv_display_draw_text ( uint8_t  x,
uint8_t  y,
const char *  txt 
)

Affiche une chaîne de caractères à partir d’une position donnée.

Paramètres
xCoordonnée X du premier caractère.
yCoordonnée Y du texte.
txtPointeur vers la chaîne à afficher (terminée par \0).

Affiche une chaîne de caractères à partir d’une position donnée.

◆ drv_display_draw_text_at_baseline()

void drv_display_draw_text_at_baseline ( const font_t font,
uint8_t  x,
uint8_t  baseline_y,
const char *  txt 
)

Dessine du texte aligné sur une ligne de base commune.

Utile pour aligner verticalement plusieurs polices différentes.

Paramètres
fontPolice à utiliser.
xCoordonnée X de départ.
baseline_yPosition verticale de la ligne de base.
txtTexte à afficher.

Dessine du texte aligné sur une ligne de base commune.

◆ drv_display_draw_text_with_font()

void drv_display_draw_text_with_font ( const font_t font,
uint8_t  x,
uint8_t  y,
const char *  txt 
)

Dessine du texte avec une police spécifique sans changer la police globale.

Paramètres
fontPolice à utiliser pour ce rendu.
xCoordonnée X du texte.
yCoordonnée Y du texte.
txtTexte à afficher.

Dessine du texte avec une police spécifique sans changer la police globale.

◆ drv_display_get_buffer()

uint8_t * drv_display_get_buffer ( void  )

Retourne un pointeur vers le framebuffer local (1 bit/pixel).

Renvoie
Pointeur sur le buffer 128×64 / 8 = 1024 octets.

Retourne un pointeur vers le framebuffer local (1 bit/pixel).

◆ drv_display_init()

void drv_display_init ( void  )

Initialise le contrôleur OLED et le framebuffer.

Configure le bus SPI, le SSD1309 et charge la police par défaut (FONT_5X7).

Initialise le contrôleur OLED et le framebuffer.

◆ drv_display_set_font()

void drv_display_set_font ( const font_t font)

Définit la police courante utilisée pour le rendu texte.

Paramètres
fontPointeur vers la structure de police à utiliser.

◆ drv_display_start()

void drv_display_start ( void  )

Démarre le thread d’affichage automatique (~30 FPS).

Initialise l’écran et lance un thread dédié au rafraîchissement.

Démarre le thread d’affichage automatique (~30 FPS).

◆ drv_display_update()

void drv_display_update ( void  )

Transfère le contenu du framebuffer vers l’écran OLED.

À appeler périodiquement si le thread automatique n’est pas utilisé.