2025-02-26 09:59:15 +00:00
|
|
|
|
/*
|
|
|
|
|
* Flash.c
|
|
|
|
|
*
|
|
|
|
|
* Created on: 2024<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD>16<EFBFBD><EFBFBD>
|
|
|
|
|
* Author: 34509
|
|
|
|
|
*/
|
|
|
|
|
#include "HD_Flash.h"
|
|
|
|
|
#include "pDebug.h"
|
|
|
|
|
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
uint8_t readFlash(uint32_t* pBuffer,uint32_t ReadAddr,uint16_t dataLen)
|
2025-02-26 09:59:15 +00:00
|
|
|
|
{
|
2025-04-02 10:02:25 +00:00
|
|
|
|
for (int i = 0; i < dataLen; i++) {
|
|
|
|
|
*(pBuffer + i) = *(uint32_t*)(ReadAddr + 4 * i);
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
return 1;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
/*
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>flash<EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD>WriteAddr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊij<EFBFBD><EFBFBD>ҳ<EFBFBD>Ŀ<EFBFBD>ͷ
|
|
|
|
|
* @param pBuffer Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
WriteAddr Ҫд<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|
|
|
|
NumByteToWrite Ҫд<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @retval
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
uint8_t writeFlash(uint32_t* pBuffer,uint32_t WriteAddr, uint16_t NumByteToWrite)
|
2025-02-26 09:59:15 +00:00
|
|
|
|
{
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
/* <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ */
|
|
|
|
|
int ret = FLASH_ROM_ERASE(WriteAddr, 256);
|
|
|
|
|
if (ret != FLASH_COMPLETE) {
|
|
|
|
|
return 0;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
uint32_t buf[64] = {0};
|
|
|
|
|
memcpy(buf, pBuffer, (NumByteToWrite / 4));
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
ret = FLASH_ROM_WRITE(WriteAddr, buf, 256);
|
|
|
|
|
if (ret != FLASH_COMPLETE) {
|
|
|
|
|
return 0;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
// FLASH_Unlock();
|
|
|
|
|
// for (int i = 0; i < NumByteToWrite; i++) {
|
|
|
|
|
// ret = FLASH_ProgramOptionByteData((uint32_t)((uint8_t *)WriteAddr + 1), *(pBuffer + i));
|
|
|
|
|
// if (ret != FLASH_COMPLETE) {
|
|
|
|
|
// FLASH_Lock();
|
|
|
|
|
// return 0;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// FLASH_Lock();
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
return 1;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|