36 #include <libopencmsis/core_cm3.h> 37 #include <libopencm3/stm32/rcc.h> 38 #include <libopencm3/stm32/gpio.h> 39 #include <libopencm3/stm32/spi.h> 40 #include <libopencm3/stm32/timer.h> 48 #define LED_MAX7219_LOAD_PORT B 49 #define LED_MAX7219_LOAD_PIN 12 55 #define LED_MAX7219_SPI 2 61 static const uint8_t ascii_7segments[] = { 175 if (0xff==display || i==(display+1)) {
201 rcc_periph_clock_enable(RCC_AFIO);
204 spi_init_master(
SPI(
LED_MAX7219_SPI), SPI_CR1_BAUDRATE_FPCLK_DIV_8, SPI_CR1_CPOL_CLK_TO_0_WHEN_IDLE, SPI_CR1_CPHA_CLK_TRANSITION_1, SPI_CR1_DFF_16BIT, SPI_CR1_MSBFIRST);
233 if (digits<1 || digits>8) {
242 for (uint8_t i=0; i<8; i++) {
248 for (uint8_t i=0; i<8; i++) {
257 for (uint8_t digit=0; digit<8; digit++) {
259 led_max7219_write(((digit+1)<<8) + (number%10) + (((dots>>digit)&0x01)<<7), display);
260 }
else if (0==number) {
263 led_max7219_write(((digit+1)<<8) + (number%10) + (((dots>>digit)&0x01)<<7), display);
#define SPI_MOSI_PORT(x)
get SPI port for MOSI signal based on SPI identifier
#define RCC_GPIO(x)
get RCC for GPIO based on GPIO identifier
uint8_t lex_max7219_displays
number of display in the chain
void led_max7219_setup(uint8_t displays)
setup communication with MAX7219 IC
bool led_max7219_text(char *text, uint8_t display)
display text
#define SPI_MOSI_PIN(x)
get SPI pin for MOSI signal based on SPI identifier
global definitions and methods (API)
#define GPIO(x)
get GPIO based on GPIO identifier
#define RCC_SPI_MOSI_PORT(x)
get RCC for GPIO port for SPI MOSI signals
#define RCC_SPI(x)
get RCC for SPI based on SPI identifier
void led_max7219_test(bool test, uint8_t display)
switch display in test or normal operation mode
#define SPI_SCK_PORT(x)
get SPI port for SCK signal based on SPI identifier
void led_max7219_on(uint8_t display)
switch display on
void led_max7219_number(uint32_t number, uint8_t dots, uint8_t display)
display number
static void led_max7219_write(uint16_t data, uint8_t display)
write data on SPI bus and handle load signal
void led_max7219_off(uint8_t display)
switch display off
#define SPI(x)
get SPI based on SPI identifier
#define RCC_SPI_SCK_PORT(x)
get RCC for GPIO port for SPI SCK signals
void led_max7219_intensity(uint8_t intensity, uint8_t digits, uint8_t display)
set display intensity
static const uint8_t ascii_7segments[]
ASCII characters encoded for the 7 segments digit block.
library to communicate with a Maxim MAX7219 IC attached to a 8-digit 7-segment (API) ...
#define LENGTH(x)
get the length of an array
#define LED_MAX7219_SPI
SPI to send data.
#define LED_MAX7219_LOAD_PIN
pin for load line
#define LED_MAX7219_LOAD_PORT
port for load line
#define SPI_SCK_PIN(x)
get SPI pin for SCK signal based on SPI identifier