Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Init_SPI(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure; // GPIO Setup object
- // enable clock for CLK & MISO & MOSI GPIO (CLK: GPIO_PB_13 / MISO: GPIO_PB_14 / MOSI: GPIO_PB_15)
- __HAL_RCC_SPI1_FORCE_RESET( );
- __HAL_RCC_SPI1_RELEASE_RESET( );
- __HAL_RCC_SPI1_CLK_ENABLE( );
- GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; // Set GPIO Alternate function Mode
- GPIO_InitStructure.Pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; // GPIO Pin Number
- GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; // Set the speed for the selected pins
- GPIO_InitStructure.Pull = GPIO_PULLUP; // GPIO Pull-up/pull-down operation
- GPIO_InitStructure.Alternate = GPIO_AF0_SPI1;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
- // configure I2C peripherical
- SPI1_Init.Instance = SPI1;
- SPI1_Init.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
- SPI1_Init.Init.CLKPhase = SPI_PHASE_1EDGE;
- SPI1_Init.Init.CLKPolarity = SPI_POLARITY_LOW;
- SPI1_Init.Init.DataSize = SPI_DATASIZE_8BIT;
- SPI1_Init.Init.Direction = SPI_DIRECTION_2LINES;
- SPI1_Init.Init.FirstBit = SPI_FIRSTBIT_MSB;
- SPI1_Init.Init.Mode = SPI_MODE_MASTER;
- SPI1_Init.Init.NSS = SPI_NSS_HARD_OUTPUT;
- SPI1_Init.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
- // enable I2C peripheral
- HAL_SPI_Init(&SPI1_Init);
- __HAL_SPI_ENABLE(&SPI1_Init); // Enable I2C
- }
- void SPI_Write_Enable()
- {
- uint8_t tx_data[4];
- tx_data[0] = 0x06;
- GpioWrite(&flash_en,0);
- HAL_SPI_Transmit(&SPI1_Init,tx_data,1,1000);
- GpioWrite(&flash_en,1);
- GpioWrite(&flash_en,0);
- tx_data[0] = 0x05;
- HAL_SPI_Transmit(&SPI1_Init,tx_data,1,1000);
- HAL_SPI_Receive(&SPI1_Init,tx_data,1,1000);
- GpioWrite(&flash_en,1);
- if((tx_data[0] >> 1 & 0x01) != 0x01)
- {
- UartPrint("errorrn");
- }
- GpioWrite(&flash_en,0);
- tx_data[0] = 0x01;
- tx_data[1] = 0x02;
- tx_data[2] = 0x40;
- HAL_SPI_Transmit(&SPI1_Init,tx_data,3,1000);
- GpioWrite(&flash_en,1);
- }
- void SPI_Write_Data()
- {
- uint8_t tx_data[20],cmd[2];
- tx_data[0] = 0x52;
- tx_data[1] = 0x00;
- tx_data[2] = 0x00;
- tx_data[3] = 0x00;
- GpioWrite(&flash_en,0);
- HAL_SPI_Transmit(&SPI1_Init,tx_data,14,1000);
- GpioWrite(&flash_en,1);
- Retry1:
- cmd[0] = 0x06;
- GpioWrite(&flash_en,0);
- while(HAL_SPI_Transmit(&SPI1_Init,cmd,1,1000)!= HAL_OK);
- GpioWrite(&flash_en,1);
- DelayMs(100);
- Retry:
- GpioWrite(&flash_en,0);
- tx_data[0] = 0x05;
- while(HAL_SPI_Transmit(&SPI1_Init,tx_data,1,1000)!=HAL_OK);
- while(HAL_SPI_Receive(&SPI1_Init,tx_data,1,1000)!=HAL_OK);
- GpioWrite(&flash_en,1);
- if((tx_data[0] >> 1 & 0x01) != 0x01)
- {
- UartPrint("error_wel_not enablern");
- DelayMs(1000);
- goto Retry1;
- }
- else
- {
- DelayMs(1000);
- UartPrint("wel enabledrn");
- }
- if((tx_data[0] & 0x01) == 0x01)
- {
- UartPrint("BUSYrn");
- goto Retry;
- }
- cmd[0] = 0x06;
- GpioWrite(&flash_en,0);
- while(HAL_SPI_Transmit(&SPI1_Init,cmd,1,1000)!= HAL_OK);
- GpioWrite(&flash_en,1);
- GpioWrite(&flash_en,0);
- tx_data[0] = 0x02;
- tx_data[1] = 0x00;
- tx_data[2] = 0x00;
- tx_data[3] = 0x0A;
- tx_data[4] = 0xAA;
- tx_data[5] = 0xAA;
- tx_data[6] = 0xAA;
- tx_data[7] = 0xAA;
- tx_data[8] = 0xAA;
- tx_data[9] = 0xAA;
- tx_data[10] = 0xAA;
- tx_data[11] = 0xAA;
- tx_data[12] = 0xAA;
- tx_data[13] = 0xAA;
- if(HAL_SPI_Transmit(&SPI1_Init,tx_data,14,5000) != HAL_OK)
- {
- UartPrint("write errorrn");
- }
- GpioWrite(&flash_en,1);
- }
- void SPI_Read_Data(uint8_t *data)
- {
- uint8_t tx_data[20],cmd[2];
- cmd[0] = 0x04;
- GpioWrite(&flash_en,0);
- while(HAL_SPI_Transmit(&SPI1_Init,cmd,1,1000)!= HAL_OK);
- GpioWrite(&flash_en,1);
- GpioWrite(&flash_en,0);
- tx_data[0] = 0x05;
- while(HAL_SPI_Transmit(&SPI1_Init,tx_data,1,1000)!=HAL_OK);
- while(HAL_SPI_Receive(&SPI1_Init,tx_data,1,1000)!=HAL_OK);
- GpioWrite(&flash_en,1);
- if((tx_data[0] >> 1 & 0x01) == 0x01)
- {
- UartPrint(" wel enablern");
- }
- if((tx_data[0] & 0x01) == 0x01)
- {
- UartPrint("BUSYrn");
- }
- tx_data[0] = 0x03;
- tx_data[1] = 0x00;
- tx_data[2] = 0x00;
- tx_data[3] = 0x0A;
- GpioWrite(&flash_en,0);
- HAL_SPI_Transmit(&SPI1_Init,tx_data,4,1000);
- if(HAL_SPI_Receive(&SPI1_Init,data,10,1000)!= HAL_OK)
- {
- UartPrint("error_readrn");
- }
- GpioWrite(&flash_en,1);
- }
- ////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement