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
+
+
+
+