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

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

#include "drv_display.h"
#include "ch.h"
#include "hal.h"
#include "brick_config.h"
#include <string.h>

Fonctions

uint8_t * drv_display_get_buffer (void)
 Retourne un pointeur sur le framebuffer interne.
 
void drv_display_init (void)
 Initialise l’écran OLED et configure le SSD1309.
 
void drv_display_clear (void)
 Efface complètement le framebuffer.
 
void drv_display_update (void)
 Transfère le contenu du framebuffer vers l’écran OLED.
 
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 à une position donnée.
 
void drv_display_draw_text (uint8_t x, uint8_t y, const char *txt)
 Dessine une chaîne de caractères à partir d’une position.
 
void drv_display_draw_text_with_font (const font_t *font, uint8_t x, uint8_t y, const char *txt)
 Dessine une chaîne en utilisant une police spécifique.
 
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.
 
void drv_display_draw_number (uint8_t x, uint8_t y, int num)
 Affiche un entier décimal à la position donnée.
 
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.
 
void drv_display_start (void)
 Démarre le thread d’affichage automatique.
 

Description détaillée

Driver OLED SPI SSD1309 (128×64) pour Brick.

Ce module implémente le pilotage complet d’un écran OLED monochrome via l’interface SPI1 du STM32.

Fonctions principales :

  • Initialisation matérielle du contrôleur SSD1309.
  • Gestion d’un framebuffer local en RAM.
  • Routines de dessin (texte, pixels, caractères).
  • Thread de rafraîchissement périodique (~30 FPS).
Note
Communication SPI :
  • CS : PB4
  • D/C : PB5
  • MOSI/SCK configurés par halconf.h

Documentation des fonctions

◆ drv_display_clear()

void drv_display_clear ( void  )

Efface complètement le 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 à une position donnée.

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 entier décimal à la position donnée.

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 
)

Dessine une chaîne de caractères à partir d’une position.

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.

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 une chaîne en utilisant une police spécifique.

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 sur le framebuffer interne.

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

◆ drv_display_init()

void drv_display_init ( void  )

Initialise l’écran OLED et configure le SSD1309.

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.

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é.