123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* MAX7219 Interaction Code
- * ---------------------------
- * For more information see
- * http://www.adnbr.co.uk/articles/max7219-and-7-segment-displays
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <shilow@ukr.net> wrote this file. As long as you retain this notice you
- * can do whatever you want with this stuff. If we meet some day, and you think
- * this stuff is worth it, you can buy me a beer in return. Shilov V.N.
- * ----------------------------------------------------------------------------
- */
- #include "max7219.h"
- #define SPI_PORT GPIOB
- #define SPI_NSS GPIO_Pin_4
- #define SPI_SCK GPIO_Pin_5
- #define SPI_MOSI GPIO_Pin_6
- #define SPI_PINS (SPI_NSS|SPI_SCK|SPI_MOSI)
- void MAX7219_Init(void) {
- SPI_DeInit(SPI1);
- /* Enable clock for SPI */
- CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);
- /* Set the MOSI,MISO and SCK at high level */
- GPIO_ExternalPullUpConfig(SPI_PORT, SPI_PINS, ENABLE);
- // GPIO_Init(SPI_PORT, SPI_PINS, GPIO_Mode_Out_PP_High_Fast);
- /* Init SPI */
- SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_2, SPI_Mode_Master,
- SPI_CPOL_High, SPI_CPHA_2Edge, SPI_Direction_1Line_Tx, SPI_NSS_Hard, 0x00);
- /* SPI Enable */
- SPI_Cmd(SPI1, ENABLE);
- /* Настройка MAX71219 */
- MAX7219_WriteData(DecodeMode, 0x00); // все без BCD декодирования
- MAX7219_WriteData(ScanLimit, MAX7219_DIGITS); // сколько цифр используем
- MAX7219_WriteData(Intensity, MAX7219_BRIGHT); // яркость из 16
- MAX7219_WriteData(Power,MAX7219_ON); // включили питание
- }
- void MAX7219_WriteData(max7219_reg_t reg, uint8_t data)
- {
- // SPI_NSSInternalSoftwareCmd(ENABLE);
- /*!< Wait until the transmit buffer is empty */
- while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET) {}
- /* Send the register where the data will be stored */
- SPI_SendData(SPI1, reg);
- /*!< Wait until the transmit buffer is empty */
- while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET) {}
- /* Send the data to be stored */
- SPI_SendData(SPI1, data);
- // SPI_NSSInternalSoftwareCmd(DISABLE);
- }
|