memory.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. #ifndef __MEMORY_H__
  2. #define __MEMORY_H__
  3. #include "stm32f10x.h"
  4. #define DEVICE_ALRD 0x01 //设备信息是否写入eeprom标志
  5. //读芯片内部信息地址
  6. #define GD32F10X_ID_ADDR 0x1FFFF7E8
  7. #define GD32F30X_ID_ADDR 0x1FFFF7E8
  8. #define GD32F10X_TYPE_ADDR 0xE0042000
  9. //eeprom存储的共有数据
  10. typedef enum
  11. {
  12. /*第一次上电(0X55)*/
  13. EECFG_FIRST_INIT0 = 0x0000,
  14. /*第一次上电(0XAA)*/
  15. EECFG_FIRST_INIT1 = 0x0001,
  16. /*EEPROM版本*/
  17. EECFG_VER = 0x0002,
  18. /*复位次数*/
  19. EECFG_RST_TIME0 = 0x0003,
  20. /*复位次数*/
  21. EECFG_RST_TIME1 = 0x0004,
  22. /*复位次数*/
  23. EECFG_RST_TIME2 = 0x0005,
  24. /*复位次数*/
  25. EECFG_RST_TIME3 = 0x0006,
  26. /*升级标志(本体)*/
  27. EECFG_UPDATE_FLAG0 = 0x0007,
  28. /*升级标志(掩码)*/
  29. EECFG_UPDATE_FLAG1 = 0x0008,
  30. /*升级状态(本体)*/
  31. EECFG_UPDATE_STATE0 = 0x0009,
  32. /*升级状态(掩码)*/
  33. EECFG_UPDATE_STATE1 = 0x000A,
  34. /*预留*/
  35. EECFG_RESERVE0 = 0x000B,
  36. /*预留*/
  37. EECFG_RESERVE1 = 0x000C,
  38. /*出厂信息是否被初始化过*/
  39. EECFG_INFO_ALRD_INIT = 0x000D,
  40. /*设备SN*/
  41. EECFG_SN0 = 0x000E,
  42. /*设备SN*/
  43. EECFG_SN1 = 0x000F,
  44. /*设备SN*/
  45. EECFG_SN2 = 0x0010,
  46. /*设备SN*/
  47. EECFG_SN3 = 0x0011,
  48. /*设备类型*/
  49. EECFG_DEV_TYPE0 = 0x0012,
  50. /*设备类型*/
  51. EECFG_DEV_TYPE1 = 0x0013,
  52. /*生产厂家*/
  53. EECFG_MFRS0 = 0x0014,
  54. /*生产厂家*/
  55. EECFG_MFRS1 = 0x0015,
  56. /*批次号*/
  57. EECFG_BN0 = 0x0016,
  58. /*批次号*/
  59. EECFG_BN1 = 0x0017,
  60. /*生产日期*/
  61. EECFG_PD0 = 0x0018,
  62. /*生产日期*/
  63. EECFG_PD1 = 0x0019,
  64. /*生产日期*/
  65. EECFG_PD2 = 0x001A,
  66. /*生产日期*/
  67. EECFG_PD3 = 0x001B,
  68. /*PCB版本*/
  69. EECFG_PCB_VER = 0x001C,
  70. /*预留*/
  71. EECFG_RESERVED0 = 0x001D,
  72. /*预留*/
  73. EECFG_RESERVED1 = 0x001E,
  74. /*预留*/
  75. EECFG_RESERVED2 = 0x001F,
  76. /*预留*/
  77. EECFG_RESERVED3 = 0x0020,
  78. /*Bootloader版本*/
  79. EECFG_BT_VER0 = 0x0021,
  80. /*Bootloader版本*/
  81. EECFG_BT_VER1 = 0x0022,
  82. /*Bootloader版本*/
  83. EECFG_BT_VER2 = 0x0023,
  84. /*Bootloader版本*/
  85. EECFG_BT_VER3 = 0x0024,
  86. /*产测版本*/
  87. EECFG_PT_VER0 = 0x0025,
  88. /*产测版本*/
  89. EECFG_PT_VER1 = 0x0026,
  90. /*产测版本*/
  91. EECFG_PT_VER2 = 0x0027,
  92. /*产测版本*/
  93. EECFG_PT_VER3 = 0x0028,
  94. /*APP1版本*/
  95. EECFG_APP1_VER0 = 0x0029,
  96. /*APP1版本*/
  97. EECFG_APP1_VER1 = 0x002A,
  98. /*APP1版本*/
  99. EECFG_APP1_VER2 = 0x002B,
  100. /*APP1版本*/
  101. EECFG_APP1_VER3 = 0x002C,
  102. /*APP2版本*/
  103. EECFG_APP2_VER0 = 0x002D,
  104. /*APP2版本*/
  105. EECFG_APP2_VER1 = 0x002E,
  106. /*APP2版本*/
  107. EECFG_APP2_VER2 = 0x002F,
  108. /*APP2版本*/
  109. EECFG_APP2_VER3 = 0x0030,
  110. /*APP3版本*/
  111. EECFG_APP3_VER0 = 0x0031,
  112. /*APP3版本*/
  113. EECFG_APP3_VER1 = 0x0032,
  114. /*APP3版本*/
  115. EECFG_APP3_VER2 = 0x0033,
  116. /*APP3版本*/
  117. EECFG_APP3_VER3 = 0x0034,
  118. /*EEPROM存储数据字节数*/
  119. EECFG_NUM = 0x0035
  120. }eeprom_common_data ;
  121. //eeprom开头存储信息
  122. typedef struct _eeprom_first_info
  123. {
  124. uint16_t eeprom_first_init_flag;
  125. uint8_t eeprom_ver;
  126. uint32_t reset_total_num;
  127. uint16_t updata_flag;
  128. uint16_t updata_state;
  129. }__attribute__((packed)) eeprom_first_info_t;
  130. extern eeprom_first_info_t eeprom_first_info;
  131. //设备版本信息
  132. typedef struct _device_version_info
  133. {
  134. uint32_t boot_ver;
  135. uint32_t PT_ver;
  136. uint32_t APP1_ver;
  137. uint32_t APP2_ver;
  138. uint32_t APP3_ver;
  139. } device_version_info_t;
  140. extern device_version_info_t device_version_info;
  141. //升级状态
  142. typedef struct _updata_state
  143. {
  144. uint16_t updata_flag;
  145. uint16_t backoff_begin;
  146. uint16_t backoff_over;
  147. }updata_state_t;
  148. extern updata_state_t updata_state_info;
  149. extern uint32_t software_version_bootloader,reset_total_cnt,last_reset_flag;
  150. extern uint8_t Encrypt;
  151. void eeprom_init_handle(void);
  152. void device_info_init_handle(void);
  153. void device_fixed_info_init(void);
  154. void device_info_update(void);
  155. void device_info_get(void);
  156. void eeprom_write_data(uint32_t WriteAddr,uint8_t *pBuffer,uint16_t NumToWrite);
  157. void power_on_read(void);
  158. uint16_t set_updata_state(uint16_t data);
  159. #endif