Files
GD32_BOOT/Robot_V2/sys/flash.h
T
2025-12-27 19:20:23 +08:00

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 */