43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
#ifndef __FLASH_H
|
|
#define __FLASH_H
|
|
|
|
#include <stdint.h>
|
|
|
|
// EEPROM操作状态
|
|
typedef enum {
|
|
FLASH_EEPROM_OK = 0, // 操作成功
|
|
FLASH_EEPROM_WRITE_ERROR, // 写入错误
|
|
FLASH_EEPROM_READ_ERROR, // 读取错误
|
|
FLASH_EEPROM_ERASE_ERROR, // 擦除错误
|
|
FLASH_EEPROM_INVALID_ADDR, // 无效地址
|
|
FLASH_EEPROM_DATA_NOT_FOUND, // 找不到数据
|
|
FLASH_EEPROM_CRC_ERROR, // CRC错误
|
|
FLASH_EEPROM_ALIGNMENT_ERROR, // 对齐错误
|
|
} FlashEepromStatus;
|
|
|
|
// Flash EEPROM类
|
|
class FlashEEPROM {
|
|
public:
|
|
// EEPROM emulation constants
|
|
static constexpr u32 EEPROM_START_ADDRESS = 0x0801F800; // 第一页(1KB)
|
|
static constexpr u32 EEPROM_DATA_PAGE2_ADDRESS = 0x801FC00; // 第二页(1KB)
|
|
static constexpr u32 EEPROM_END_ADDRESS = 0x08020000; // Flash结束地址
|
|
static constexpr u32 EEPROM_MAX_SIZE = 0x800; // EEPROM最大容量
|
|
static constexpr u32 EEPROM_DATA_START_ADDRESS =
|
|
0x0801F900; // DATA段开始地址
|
|
|
|
u8 EEPROMStatus;
|
|
// 构造函数
|
|
FlashEEPROM();
|
|
|
|
// 初始化Flash EEPROM模拟
|
|
u8 init();
|
|
|
|
// 格式化Flash EEPROM页面
|
|
FlashEepromStatus format();
|
|
FlashEepromStatus writeCRC(u32 CRC_NUM);
|
|
|
|
private:
|
|
};
|
|
|
|
#endif /* __FLASH_H */ |