|
@@ -16,7 +16,7 @@
|
|
|
#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)
|
|
|
+#define SPI_PINS (SPI_SCK|SPI_MOSI)
|
|
|
|
|
|
void MAX7219_Init(void) {
|
|
|
SPI_DeInit(SPI1);
|
|
@@ -24,10 +24,12 @@ void MAX7219_Init(void) {
|
|
|
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);
|
|
|
+ /* Configure Lock pin */
|
|
|
+ GPIO_Init(SPI_PORT, SPI_NSS, GPIO_Mode_Out_PP_High_Fast);
|
|
|
+ GPIO_SetBits(SPI_PORT, SPI_NSS);
|
|
|
/* 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_CPOL_High, SPI_CPHA_2Edge, SPI_Direction_1Line_Tx, SPI_NSS_Soft, 0x00);
|
|
|
/* SPI Enable */
|
|
|
SPI_Cmd(SPI1, ENABLE);
|
|
|
|
|
@@ -35,23 +37,31 @@ void MAX7219_Init(void) {
|
|
|
MAX7219_WriteData(DecodeMode, 0x00); // все без BCD декодирования
|
|
|
MAX7219_WriteData(ScanLimit, MAX7219_DIGITS); // сколько цифр используем
|
|
|
MAX7219_WriteData(Intensity, MAX7219_BRIGHT); // яркость из 16
|
|
|
- MAX7219_WriteData(Power,MAX7219_ON); // включили питание
|
|
|
+ MAX7219_WriteData(Power, MAX7219_ON); // включили питание
|
|
|
|
|
|
}
|
|
|
|
|
|
void MAX7219_WriteData(max7219_reg_t reg, uint8_t data)
|
|
|
{
|
|
|
-// SPI_NSSInternalSoftwareCmd(ENABLE);
|
|
|
+ /*!< Wait wait until the completion of the transfer. */
|
|
|
+ while (SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET) {}
|
|
|
+ /* Down LOCK pin */
|
|
|
+ GPIO_ReseBits(SPI_PORT, SPI_NSS);
|
|
|
|
|
|
/*!< 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);
|
|
|
+ //SPI_SendData(SPI1, reg);
|
|
|
+ SPI1->DR = reg; /* Write in the DR register the data to be sent*/
|
|
|
|
|
|
/*!< 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_SendData(SPI1, data);
|
|
|
+ SPI1->DR = data; /* Write in the DR register the data to be sent*/
|
|
|
|
|
|
-// SPI_NSSInternalSoftwareCmd(DISABLE);
|
|
|
+ /*!< Wait wait until the completion of the transfer. */
|
|
|
+ while (SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET) {}
|
|
|
+ /* Up LOCK pin */
|
|
|
+ GPIO_SetBits(SPI_PORT, SPI_NSS);
|
|
|
}
|