From 8b91736e1b922a1c8deccbebd34832ccaea11b3a Mon Sep 17 00:00:00 2001 From: alexey Date: Tue, 13 Aug 2024 10:25:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D1=81=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=BE=D0=B9=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B=20=D0=9C=D0=9A=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=BB=D0=B5=D1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CubeKeil Example/Core/Src/main.c | 50 +++++--- .../MDK-ARM/flash eeprom Example.uvoptx | 114 ++++++++++++++++-- 2 files changed, 134 insertions(+), 30 deletions(-) diff --git a/CubeKeil Example/Core/Src/main.c b/CubeKeil Example/Core/Src/main.c index c4cea99..fcbfe9e 100644 --- a/CubeKeil Example/Core/Src/main.c +++ b/CubeKeil Example/Core/Src/main.c @@ -59,6 +59,7 @@ void SystemClock_Config(void); W25_HandleTypeDef hw25; HAL_StatusTypeDef W25_RES; W25_WriteInitTypeDef writeInit; +W25_WriteInitTypeDef MCUFlashToExternalFlashInit; uint8_t read_buff[20] = {0}; uint8_t write_buff[20] = {0x14,0x13,0x12,0x11,0x10, @@ -110,32 +111,44 @@ int main(void) hw25.GPIOs.MISO_PIN = GPIO_PIN_2; hw25.GPIOs.MOSI_PIN = GPIO_PIN_3; W25_Base_Init(&hw25); - /* USER CODE END 2 */ - - /* 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: erase/program/read functions - W25_RES = W25_FLASH_Erase_Sector(&hw25, 0, 1000); - W25_RES = W25_FLASH_Program_Area(&hw25, 0xf9, write_buff, 15, 100); - W25_CMD_Read_Data(&hw25, 0xf9, read_buff, 15); - // 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 + writeInit.fSavePrevoisData = 1; writeInit.pDataPtr = write_buff; writeInit.Data_Address = 0xfb; writeInit.Data_Size = 1; writeInit.Sector_Address = 0xf9; writeInit.Sector_Size = 15; + + /* USER CODE END 2 */ + + /* 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 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); + uint32_t FLASH_shift = 0; + W25_RES = W25_FLASH_Read(&hw25, 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); while (1) - { + { + // Example for FLASH: write area functions - W25_FLASH_Write_Area(&hw25, &writeInit, 1000); - HAL_Delay(10); - W25_CMD_Read_Data(&hw25, 0xf9, read_buff, 15); + W25_RES = W25_FLASH_Write(&hw25, &writeInit, 1000); + W25_RES = W25_FLASH_Read(&hw25, 0xf9, read_buff, 15, 100); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ @@ -144,6 +157,7 @@ int main(void) uint32_t generated_rng; HAL_RNG_GenerateRandomNumber(&hrng, &generated_rng); write_buff[7] = generated_rng&0xFF; + write_buff[0] = (generated_rng>>16)&0xFF; } /* USER CODE END 3 */ } diff --git a/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx b/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx index de0ccbe..22383cf 100644 --- a/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx +++ b/CubeKeil Example/MDK-ARM/flash eeprom Example.uvoptx @@ -152,9 +152,9 @@ 0 0 - 135 + 140 1 -
134230152
+
134230654
0 0 0 @@ -163,12 +163,60 @@ 1 ../Core/Src/main.c - \\flash_eeprom_Example\../Core/Src/main.c\135 + \\flash_eeprom_Example\../Core/Src/main.c\140
1 0 - 136 + 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
+ 0 + 0 + 0 + 0 + 0 + 1 + ../Core/Src/main.c + + \\flash_eeprom_Example\../Core/Src/main.c\150 +
+ + 3 + 0 + 198 + 1 +
134229880
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\..\spi_flash\spi_flash.c + + \\flash_eeprom_Example\../../spi_flash/spi_flash.c\198 +
+ + 4 + 0 + 151 1
0
0 @@ -177,7 +225,23 @@ 0 0 0 - ../Core/Src/main.c + ..\..\spi_flash\spi_flash.c + + +
+ + 5 + 0 + 171 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\spi_flash\spi_flash.c
@@ -186,37 +250,37 @@ 0 1 - w25_ID + hw25 1 1 - w25_unique_ID + W25_RES 2 1 - W25_RES + read_buff 3 1 - read_buff + write_buff 4 1 - write_buff + sector_buff 5 1 - sector_buff + writeInit 6 1 - writeInit + writebuff @@ -240,7 +304,33 @@ 2 endsize + + 4 + 2 + &tickstart + + + 5 + 2 + &0x20000760 + + + + 1 + 0 + 0x08000000 + 0 + + + + + 2 + 0 + 0x20000708 + 0 + + 0