2024-05-09 12:19 AM
in stm32h743
1----> Im trying to write only one byte in this address 0x8100000 . but it is writing 32 bytes in the memory . so why not support to write only one byte in internal flash memory.
2-----> And im trying to start writing some data from these addresess ..ex . (0x8100000 or 0x8100020 , 0x8100040,0x8100060....... (theses addresess are base addreses where im start to writing ) ) like multiple of 32 . so my data is susccessfully writing in the internal flash memeory . But if i try to start the writing on not multiple of 32 addresess ..ex (0x8100001, 0x8100002, 0x8100002A, 0x8100210......... ( similarly theses addresess are base addreses where im start to writing ) ) . so my data is not writing in the memory and all the byte are become 0xFF in that sector .
------ > this is the function im using for write data into internal flash memory
HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAddress);
And i request to give me some solutions on this problem , thanks ..
Solved! Go to Solution.
2024-05-09 01:15 AM
Please read the Reference Manual for your stm32.
The section on Embedded FLASH memory makes it clear that programming is done in units of 256 bits, i.e. 32 bytes, as you have observed.
This is a "design compromise" ST have chosen to do.
Their options were:
You might ask why not do error-correction-coding on a byte level. The problem then is that you'd need about 4 error-correction-bits per 8 bits for 8 bits of the byte. Which in total is many more error-correction bits, pushing the price up almost as much as if they just made each cell larger.
2024-05-09 01:15 AM
Please read the Reference Manual for your stm32.
The section on Embedded FLASH memory makes it clear that programming is done in units of 256 bits, i.e. 32 bytes, as you have observed.
This is a "design compromise" ST have chosen to do.
Their options were:
You might ask why not do error-correction-coding on a byte level. The problem then is that you'd need about 4 error-correction-bits per 8 bits for 8 bits of the byte. Which in total is many more error-correction bits, pushing the price up almost as much as if they just made each cell larger.