diff --git a/CubeKeil Example/Core/Src/main.c b/CubeKeil Example/Core/Src/main.c index fcbfe9e..e6aae0b 100644 --- a/CubeKeil Example/Core/Src/main.c +++ b/CubeKeil Example/Core/Src/main.c @@ -56,10 +56,10 @@ void SystemClock_Config(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ -W25_HandleTypeDef hw25; -HAL_StatusTypeDef W25_RES; -W25_WriteInitTypeDef writeInit; -W25_WriteInitTypeDef MCUFlashToExternalFlashInit; +MEMSPI_HandleTypeDef hmemspi; +HAL_StatusTypeDef MEMSPI_RES; +MEMSPI_WriteInitTypeDef writeInit; +MEMSPI_WriteInitTypeDef MCUFlashToExternalFlashInit; uint8_t read_buff[20] = {0}; uint8_t write_buff[20] = {0x14,0x13,0x12,0x11,0x10, @@ -99,18 +99,18 @@ int main(void) MX_CRC_Init(); MX_RNG_Init(); /* USER CODE BEGIN 2 */ - // FLASH W25 INIT - hw25.hspi.Instance = SPI2; - hw25.hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128; - hw25.GPIOs.CS_GPIOx = GPIOA; - hw25.GPIOs.CLK_GPIOx = GPIOB; - hw25.GPIOs.MISO_GPIOx = GPIOC; - hw25.GPIOs.MOSI_GPIOx = GPIOC; - hw25.GPIOs.CS_PIN = GPIO_PIN_4; - hw25.GPIOs.CLK_PIN = GPIO_PIN_13; - hw25.GPIOs.MISO_PIN = GPIO_PIN_2; - hw25.GPIOs.MOSI_PIN = GPIO_PIN_3; - W25_Base_Init(&hw25); + // FLASH MEMSPI INIT + hmemspi.hspi.Instance = SPI2; + hmemspi.hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128; + hmemspi.GPIOs.CS_GPIOx = GPIOA; + hmemspi.GPIOs.CS_PIN = GPIO_PIN_4; + hmemspi.GPIOs.CLK_GPIOx = GPIOB; + hmemspi.GPIOs.CLK_PIN = GPIO_PIN_13; + hmemspi.GPIOs.MISO_GPIOx = GPIOC; + hmemspi.GPIOs.MISO_PIN = GPIO_PIN_2; + hmemspi.GPIOs.MOSI_GPIOx = GPIOC; + hmemspi.GPIOs.MOSI_PIN = GPIO_PIN_3; + MEMSPI_Base_Init(&hmemspi); // Example for FLASH: write area functions init // writting on two pages: // writing 15 bytes at 0xf9 - its writting 7 bytes at first page, and 8 bytes at second page @@ -125,30 +125,43 @@ int main(void) /* Infinite loop */ /* USER CODE BEGIN WHILE */ - // Example for FLASH: using manufactire info CMD - uint32_t w25_ID = W25_CMD_Read_JEDEC_ID(&hw25); - uint64_t w25_unique_ID = W25_CMD_Read_Device_ID(&hw25); + // Example for FLASH/EPROM: using manufactire info CMD + uint32_t memspi_ID = MEMSPI_CMD_Read_JEDEC_ID(&hmemspi, 100); + uint64_t memspi_unique_ID = MEMSPI_CMD_Read_Device_ID(&hmemspi, 100); +#ifdef EXT_FLASH // Example fpr FLASH: writting MCU Program to external FLASH MCUFlashToExternalFlashInit.pDataPtr = (uint8_t *)FLASH_BASE; MCUFlashToExternalFlashInit.Data_Address = 0; MCUFlashToExternalFlashInit.Data_Size = 0x2000; MCUFlashToExternalFlashInit.Sector_Address = 0; MCUFlashToExternalFlashInit.Sector_Size = 0x2000; - W25_RES = W25_FLASH_Write(&hw25, &MCUFlashToExternalFlashInit, 5000); + MEMSPI_RES = MEMSPI_FLASH_Write(&hmemspi, &MCUFlashToExternalFlashInit, 5000); uint32_t FLASH_shift = 0; - W25_RES = W25_FLASH_Read(&hw25, 0x0000+FLASH_shift, read_buff, 15, 100); + MEMSPI_RES = MEMSPI_Read_Memory(&hmemspi, 0x0000+FLASH_shift, read_buff, 15, 100); // Example for FLASH: erase/program/read functions - W25_RES = W25_FLASH_Erase(&hw25, 0, 1, 1000); - W25_RES = W25_FLASH_Program(&hw25, 0xf9, write_buff, 15, 100); - W25_RES = W25_FLASH_Read(&hw25, 0xf9, read_buff, 15, 100); + MEMSPI_RES = MEMSPI_FLASH_Erase(&hmemspi, 0, 1, 1000); + MEMSPI_RES = MEMSPI_FLASH_Program(&hmemspi, 0xf9, write_buff, 15, 100); + MEMSPI_RES = MEMSPI_Read_Memory(&hmemspi, 0xf9, read_buff, 15, 100); +#endif +#ifdef EXT_EEPROM + // Example for EEPROM: writting MCU Program to external EEPROM + MEMSPI_RES = MEMSPI_EEPROM_Write(&hmemspi, 0, (uint8_t *)FLASH_BASE, 0x2000, 2000); + MEMSPI_RES = MEMSPI_Read_Memory(&hmemspi, 0, read_buff, 15, 100); +#endif while (1) { - +#ifdef EXT_FLASH // Example for FLASH: write area functions - W25_RES = W25_FLASH_Write(&hw25, &writeInit, 1000); - W25_RES = W25_FLASH_Read(&hw25, 0xf9, read_buff, 15, 100); + MEMSPI_RES = MEMSPI_FLASH_Write(&hmemspi, &writeInit, 1000); + MEMSPI_RES = MEMSPI_Read_Memory(&hmemspi, 0xf9, read_buff, 15, 100); +#endif +#ifdef EXT_EEPROM + // Example for EEPROM: write/read functions + MEMSPI_RES = MEMSPI_EEPROM_Write(&hmemspi, 0xf9, write_buff, 15, 100); + MEMSPI_RES = MEMSPI_Read_Memory(&hmemspi, 0xf9, read_buff, 15, 100); +#endif /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ diff --git a/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx b/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx index 22383cf..e8522a7 100644 --- a/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx +++ b/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx @@ -152,41 +152,9 @@ 0 0 - 140 - 1 -
134230654
- 0 - 0 - 0 - 0 - 0 - 1 - ../Core/Src/main.c - - \\flash_eeprom_Example\../Core/Src/main.c\140 -
- - 1 - 0 - 138 - 1 -
134230628
- 0 - 0 - 0 - 0 - 0 - 1 - ../Core/Src/main.c - - \\flash_eeprom_Example\../Core/Src/main.c\138 -
- - 2 - 0 150 1 -
134230760
+
134229430
0 0 0 @@ -198,79 +166,47 @@ \\flash_eeprom_Example\../Core/Src/main.c\150
- 3 + 1 0 - 198 + 153 1 -
134229880
+
134229626
0 0 0 0 0 1 - ..\..\spi_flash\spi_flash.c + ../Core/Src/main.c - \\flash_eeprom_Example\../../spi_flash/spi_flash.c\198 -
- - 4 - 0 - 151 - 1 -
0
- 0 - 0 - 0 - 0 - 0 - 0 - ..\..\spi_flash\spi_flash.c - - -
- - 5 - 0 - 171 - 1 -
0
- 0 - 0 - 0 - 0 - 0 - 0 - ..\..\spi_flash\spi_flash.c - - + \\flash_eeprom_Example\../Core/Src/main.c\153
0 1 - hw25 + hmemspi 1 1 - W25_RES + memspi_ID 2 1 - read_buff + MEMSPI_RES 3 1 - write_buff + read_buff 4 1 - sector_buff + write_buff 5 @@ -282,6 +218,21 @@ 1 writebuff + + 7 + 1 + Timeout + + + 8 + 1 + tickstart + + + 9 + 1 + tickstart+Timeout + @@ -374,6 +325,18 @@ + + System Viewer\GPIOA + 35903 + + + System Viewer\GPIOB + 35902 + + + System Viewer\GPIOC + 35904 + System Viewer\SPI2 35905 diff --git a/CubeKeil Example/MDK-ARM/flash eeprom Example.uvprojx b/CubeKeil Example/MDK-ARM/flash eeprom Example.uvprojx index 445a7e9..fa5beee 100644 --- a/CubeKeil Example/MDK-ARM/flash eeprom Example.uvprojx +++ b/CubeKeil Example/MDK-ARM/flash eeprom Example.uvprojx @@ -643,4 +643,13 @@ + + + + flash eeprom Example + 1 + + + +