Helper library for programming a MAX7219 via SPI with STM32 HAL.
/* Project setup example */
#define SPI1_CS_Pin GPIO_PIN_4
#define SPI1_CS_GPIO_Port GPIOA
SPI_HandleTypeDef hspi1;
/* Configuration */
max7219_config_t max7219_config;
max7219_config.hspi = &hspi1;
max7219_config.port_cs = SPI1_CS_GPIO_Port;
max7219_config.pin_cs = SPI1_CS_Pin;
max7219_config.intensity = 5;
max7219_config.digits = 3;
max7219_init(&max7219_config);
/* Use */
max7219_show_decimal(&max7219_config, 42);
The MAX7219 is a common-cathode display driver that can drive up to 8 7-segment LEDs or 64 individual LEDs. See the datasheet for details.
Note that peak current is set with an external resistor on pin 18. The
datasheet has a section on how to select the correct resistor value. Note that
you need to do this whether or not you use the intensity
configuration,
because the MAX7219 will power up into a test mode with all LEDs blazing
before your configurations takes effect. You could probably burn out your
nice display by accident this way.
For just one IC; not daisy-chaining them.
Pin 1 DATA: Data loaded on CLK's rising edge.
Pin 12 NCS: Data is loaded into the shift register when this is low.
Pin 13 CLK.
Pins 2, 3, 5, 6, 7, 8, 10, and 11 (the DIG pins) are pulled high when switched off.
Pins 14, 15, 16, 17, 20, 21, 22, and 22 (the SEG and DP pins) are pulled low when switched off.