#ifndef __MEMORY_H__ #define __MEMORY_H__ #include "stm32f10x.h" #define DEVICE_ALRD 0x01 //设备信息是否写入eeprom标志 //读芯片内部信息地址 #define GD32F10X_ID_ADDR 0x1FFFF7E8 #define GD32F30X_ID_ADDR 0x1FFFF7E8 #define GD32F10X_TYPE_ADDR 0xE0042000 //eeprom存储的共有数据 typedef enum { /*第一次上电(0X55)*/ EECFG_FIRST_INIT0 = 0x0000, /*第一次上电(0XAA)*/ EECFG_FIRST_INIT1 = 0x0001, /*EEPROM版本*/ EECFG_VER = 0x0002, /*复位次数*/ EECFG_RST_TIME0 = 0x0003, /*复位次数*/ EECFG_RST_TIME1 = 0x0004, /*复位次数*/ EECFG_RST_TIME2 = 0x0005, /*复位次数*/ EECFG_RST_TIME3 = 0x0006, /*升级标志(本体)*/ EECFG_UPDATE_FLAG0 = 0x0007, /*升级标志(掩码)*/ EECFG_UPDATE_FLAG1 = 0x0008, /*升级状态(本体)*/ EECFG_UPDATE_STATE0 = 0x0009, /*升级状态(掩码)*/ EECFG_UPDATE_STATE1 = 0x000A, /*预留*/ EECFG_RESERVE0 = 0x000B, /*预留*/ EECFG_RESERVE1 = 0x000C, /*出厂信息是否被初始化过*/ EECFG_INFO_ALRD_INIT = 0x000D, /*设备SN*/ EECFG_SN0 = 0x000E, /*设备SN*/ EECFG_SN1 = 0x000F, /*设备SN*/ EECFG_SN2 = 0x0010, /*设备SN*/ EECFG_SN3 = 0x0011, /*设备类型*/ EECFG_DEV_TYPE0 = 0x0012, /*设备类型*/ EECFG_DEV_TYPE1 = 0x0013, /*生产厂家*/ EECFG_MFRS0 = 0x0014, /*生产厂家*/ EECFG_MFRS1 = 0x0015, /*批次号*/ EECFG_BN0 = 0x0016, /*批次号*/ EECFG_BN1 = 0x0017, /*生产日期*/ EECFG_PD0 = 0x0018, /*生产日期*/ EECFG_PD1 = 0x0019, /*生产日期*/ EECFG_PD2 = 0x001A, /*生产日期*/ EECFG_PD3 = 0x001B, /*PCB版本*/ EECFG_PCB_VER = 0x001C, /*预留*/ EECFG_RESERVED0 = 0x001D, /*预留*/ EECFG_RESERVED1 = 0x001E, /*预留*/ EECFG_RESERVED2 = 0x001F, /*预留*/ EECFG_RESERVED3 = 0x0020, /*Bootloader版本*/ EECFG_BT_VER0 = 0x0021, /*Bootloader版本*/ EECFG_BT_VER1 = 0x0022, /*Bootloader版本*/ EECFG_BT_VER2 = 0x0023, /*Bootloader版本*/ EECFG_BT_VER3 = 0x0024, /*产测版本*/ EECFG_PT_VER0 = 0x0025, /*产测版本*/ EECFG_PT_VER1 = 0x0026, /*产测版本*/ EECFG_PT_VER2 = 0x0027, /*产测版本*/ EECFG_PT_VER3 = 0x0028, /*APP1版本*/ EECFG_APP1_VER0 = 0x0029, /*APP1版本*/ EECFG_APP1_VER1 = 0x002A, /*APP1版本*/ EECFG_APP1_VER2 = 0x002B, /*APP1版本*/ EECFG_APP1_VER3 = 0x002C, /*APP2版本*/ EECFG_APP2_VER0 = 0x002D, /*APP2版本*/ EECFG_APP2_VER1 = 0x002E, /*APP2版本*/ EECFG_APP2_VER2 = 0x002F, /*APP2版本*/ EECFG_APP2_VER3 = 0x0030, /*APP3版本*/ EECFG_APP3_VER0 = 0x0031, /*APP3版本*/ EECFG_APP3_VER1 = 0x0032, /*APP3版本*/ EECFG_APP3_VER2 = 0x0033, /*APP3版本*/ EECFG_APP3_VER3 = 0x0034, /*EEPROM存储数据字节数*/ EECFG_NUM = 0x0035 }eeprom_common_data ; //eeprom开头存储信息 typedef struct _eeprom_first_info { uint16_t eeprom_first_init_flag; uint8_t eeprom_ver; uint32_t reset_total_num; uint16_t updata_flag; uint16_t updata_state; }__attribute__((packed)) eeprom_first_info_t; extern eeprom_first_info_t eeprom_first_info; //设备版本信息 typedef struct _device_version_info { uint32_t boot_ver; uint32_t PT_ver; uint32_t APP1_ver; uint32_t APP2_ver; uint32_t APP3_ver; } device_version_info_t; extern device_version_info_t device_version_info; //升级状态 typedef struct _updata_state { uint16_t updata_flag; uint16_t backoff_begin; uint16_t backoff_over; }updata_state_t; extern updata_state_t updata_state_info; extern uint32_t software_version_bootloader,reset_total_cnt,last_reset_flag; extern uint8_t Encrypt; void eeprom_init_handle(void); void device_info_init_handle(void); void device_fixed_info_init(void); void device_info_update(void); void device_info_get(void); void eeprom_write_data(uint32_t WriteAddr,uint8_t *pBuffer,uint16_t NumToWrite); void power_on_read(void); uint16_t set_updata_state(uint16_t data); #endif