AT24C128Opt.c 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. #include "AT24C128Opt.h"
  2. #include "../network/downlink.h"
  3. /*------------------------------------------------
  4. * 清空EEPROM的存储空间
  5. * ------------------------------------------------*/
  6. void fram_init(void)
  7. {
  8. uint8_t buff[64] = {0};
  9. int i = 0;
  10. for(i=0;i<256;i++){
  11. AT24CXX_Write(0+i*64,buff,sizeof(buff));
  12. }
  13. // fram_write_eeprom_powerUpFlag();
  14. }
  15. /*----------------------------------------------
  16. * 是否第一次上电 的写入
  17. * ---------------------------------------------*/
  18. void fram_write_eeprom_powerUpFlag(void)
  19. {
  20. uint16_t version = 0x055AA;
  21. AT24CXX_Write(FRAM_FIRST_POWER_ON,(uint8_t*)&version,sizeof(uint16_t));
  22. }
  23. /*----------------------------------------------
  24. * 是否第一次上电 读取
  25. * ---------------------------------------------*/
  26. uint16_t fram_read_eeprom_powerUpFlag(void)
  27. {
  28. uint16_t version = 0;
  29. AT24CXX_Read(FRAM_FIRST_POWER_ON,(uint8_t*)&version,sizeof(uint16_t));
  30. return version;
  31. }
  32. /*----------------------------------------------
  33. * EEPROM 版本号的写入
  34. * ---------------------------------------------*/
  35. void fram_write_eeprom_version(void)
  36. {
  37. uint8_t version = 0x01;
  38. AT24CXX_Write(FRAM_VERSION,&version,1);
  39. }
  40. /*----------------------------------------------
  41. * EEPROM 版本号的读取
  42. * ---------------------------------------------*/
  43. uint8_t fram_read_eeprom_version(void)
  44. {
  45. uint8_t version = 0;
  46. AT24CXX_Read(FRAM_VERSION,&version,1);
  47. return version;
  48. }
  49. /*----------------------------------------------
  50. * 升级标志的写入
  51. * --------------------------------------------*/
  52. void fram_write_update_flag(void)
  53. {
  54. uint8_t flag = GATEWAY_UPDATE_FLAG;
  55. AT24CXX_Write(FRAM_UPDATE_FLAG,&flag,1);
  56. }
  57. /*----------------------------------------------
  58. * 配置信息标志的初始化
  59. * ---------------------------------------------*/
  60. void fram_init_config_msg(void)
  61. {
  62. GateConfigMsg *gconfigmsg = &(g_firmwareMsg.gatewayMsg.configmsg);
  63. gconfigmsg->bInit = 0;
  64. gconfigmsg->coll_num = 0;
  65. gconfigmsg->sqare = 0;
  66. AT24CXX_Write(FRAM_CONFIG_MSG,(uint8_t*)gconfigmsg,sizeof(GateConfigMsg));
  67. }
  68. /*-----------------------------------------------
  69. * 配置信息标志的写入
  70. * ----------------------------------------------*/
  71. void fram_write_config_msg(uint16_t flag)
  72. {
  73. GateConfigMsg *gconfigmsg = &(g_firmwareMsg.gatewayMsg.configmsg);
  74. g_firmwareMsg.gatewayMsg.configmsg.bInit = flag;
  75. AT24CXX_Write(FRAM_CONFIG_MSG,(uint8_t*)gconfigmsg,sizeof(GateConfigMsg));
  76. }
  77. /*------------------------------------------------
  78. * 配置信息标志的读取
  79. * -----------------------------------------------*/
  80. uint8_t fram_read_config_msg(void)
  81. {
  82. GateConfigMsg *gconfigmsg = &(g_firmwareMsg.gatewayMsg.configmsg);
  83. downlink_config.config_flag = 1;
  84. // downlink_config.collect_num = 0;
  85. AT24CXX_Read(FRAM_CONFIG_MSG,(uint8_t*)gconfigmsg,sizeof(GateConfigMsg));
  86. downlink_config.config_flag = 1;//gconfigmsg->bInit&0xFF;
  87. // downlink_config.collect_num = gconfigmsg->coll_num;
  88. return downlink_config.config_flag;
  89. }
  90. /*-------------------------------------------------
  91. * mqqtt ip prot的初始化
  92. * ----------------------------------------------------*/
  93. void fram_init_mqtt_msg(void)
  94. {
  95. MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
  96. mqttMsg->flag = 0;
  97. memset(mqttMsg,0,sizeof(MqttIdPort));
  98. AT24CXX_Write(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
  99. }
  100. /*-------------------------------------------------
  101. * mqqtt ip prot的写 入
  102. * ----------------------------------------------------*/
  103. void fram_write_mqtt_msg(void)
  104. {
  105. MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
  106. AT24CXX_Write(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
  107. }
  108. /*-------------------------------------------------
  109. * mqqtt ip prot的初始化
  110. * ----------------------------------------------------*/
  111. void fram_read_mqtt_msg(void)
  112. {
  113. MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
  114. AT24CXX_Read(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
  115. }
  116. /*-----------------------------------------------
  117. * 网关的硬件信息读取
  118. * -----------------------------------------------*/
  119. void fram_read_gateway_hardware_msg(void)
  120. {
  121. GateHareWareMsg *msg = &(g_firmwareMsg.gatewayMsg.hardwareMsg);
  122. downlink_config.gateway_id = 0x000000;
  123. AT24CXX_Read(FRAM_GATWAY_HARDWARE_MSG,(uint8_t*)msg,sizeof(GateHareWareMsg));
  124. downlink_config.gateway_id = msg->gateway_sn;
  125. }
  126. /*-----------------------------------------------
  127. * 网关的硬件信息写入
  128. * -----------------------------------------------*/
  129. void fram_write_gateway_hardware_msg(void)
  130. {
  131. GateHareWareMsg *msg = &(g_firmwareMsg.gatewayMsg.hardwareMsg);
  132. AT24CXX_Write(FRAM_GATWAY_HARDWARE_MSG,(uint8_t*)msg,sizeof(GateHareWareMsg));
  133. }
  134. /*----------------------------------------------
  135. * 网关信息的初始化
  136. * ---------------------------------------------*/
  137. void fram_init_gateway_msg(void)
  138. {
  139. g_firmwareMsg.gatewayMsg.configmsg.coll_num = 0;
  140. g_firmwareMsg.gatewayMsg.configmsg.bInit = 0;
  141. g_firmwareMsg.gatewayMsg.gate_resetnum = 0;
  142. fram_write_config_msg(0);
  143. fram_init_gateway_resetnum();
  144. }
  145. /*----------------------------------------------------
  146. * 网关复位次数的初始化
  147. * ---------------------------------------------------*/
  148. void fram_init_gateway_resetnum(void)
  149. {
  150. uint32_t num = 0;
  151. return;
  152. g_firmwareMsg.gatewayMsg.gate_resetnum = 0;
  153. AT24CXX_Write(FRAM_GATWAY_RESETNUM,(uint8_t*)&num,sizeof(uint32_t));
  154. }
  155. /*----------------------------------------------------
  156. * 网关复位次数的写入
  157. * ---------------------------------------------------*/
  158. void fram_wirte_gateway_resetnum(void)
  159. {
  160. uint32_t num = 0;
  161. return;
  162. num = g_firmwareMsg.gatewayMsg.gate_resetnum;
  163. AT24CXX_Write(FRAM_GATWAY_RESETNUM,(uint8_t*)&num,sizeof(uint32_t));
  164. }
  165. /*----------------------------------------------------
  166. * 网关复位次数的读取
  167. * ---------------------------------------------------*/
  168. void fram_read_gateway_resetnum(void)
  169. {
  170. uint32_t num = 0;
  171. AT24CXX_Read(FRAM_GATWAY_RESETNUM,(uint8_t*)&num,sizeof(uint32_t));
  172. g_firmwareMsg.gatewayMsg.gate_resetnum = num;
  173. }
  174. /*------------------------------------------------------
  175. * 网关软件版本的信息初始化
  176. * 固件信息格式 :DDDDFNNN:
  177. * DDDD(设备类型):0x0101:网关A 0x0102:网关B 0x0201:采集器1 0x0202:采集器2
  178. * F(固件类型):0x01:bootloader版本 0x02:pt版本 0x03:app版本 0xF:合成版本
  179. * NNN:0x001 表示第1个版本 0x002:表示第2个版本
  180. * -----------------------------------------------------*/
  181. void fram_init_gateway_version(void)
  182. {
  183. GateVersionMsg *msg = NULL;
  184. g_firmwareExpl.dd = GATEWAY_DEVICE_TYPE; //网关A
  185. g_firmwareExpl.ff = GATEWAY_APP_TYPE; //app版本
  186. g_firmwareExpl.nn = GATEWAY_APP_VERSION; // 第一个版本
  187. fram_read_gateway_version();
  188. msg = &(g_firmwareMsg.gatewayMsg.verMsg);
  189. if(msg->gate_appVr != (((uint32_t)g_firmwareExpl.dd<<16)|((uint16_t)g_firmwareExpl.ff<<12)|g_firmwareExpl.nn)){
  190. msg->gate_appVr = ((uint32_t)g_firmwareExpl.dd<<16)|((uint16_t)g_firmwareExpl.ff<<12)|g_firmwareExpl.nn;
  191. // msg->gate_appVr2 = msg->gate_appVr;
  192. // msg->gate_appVr3 = msg->gate_appVr;
  193. fram_write_gateway_version();
  194. }
  195. }
  196. /*----------------------------------------------------
  197. * 网关 版本信息的读取
  198. * ---------------------------------------------------*/
  199. void fram_write_gateway_version(void)
  200. {
  201. GateVersionMsg *msg = NULL;
  202. msg = &(g_firmwareMsg.gatewayMsg.verMsg);
  203. AT24CXX_Write(FRAM_GATWAY_VER_MSG,(uint8_t*)msg,sizeof(GateVersionMsg));
  204. }
  205. /*----------------------------------------------------
  206. * 网关 版本信息的读取
  207. * ---------------------------------------------------*/
  208. void fram_read_gateway_version(void)
  209. {
  210. GateVersionMsg *msg = NULL;
  211. msg = &(g_firmwareMsg.gatewayMsg.verMsg);
  212. AT24CXX_Read(FRAM_GATWAY_VER_MSG,(uint8_t*)msg,sizeof(GateVersionMsg));
  213. }
  214. /*--------------------------------------------------------
  215. * 液位仪信息初始化
  216. * --------------------------------------------------------*/
  217. void fram_init_oil_msg(void)
  218. {
  219. oilReadMsg *msg = &g_oilReadMsg;
  220. g_oilReadMsg.bInit = 0;
  221. g_oilReadMsg.paraLen = 0;
  222. AT24CXX_Read(FRAM_OILINIT_MSG,(uint8_t*)msg,sizeof(oilReadMsg));
  223. }
  224. /*--------------------------------------------------------
  225. * 液位仪信息写入
  226. * --------------------------------------------------------*/
  227. void fram_write_oil_msg(void)
  228. {
  229. oilReadMsg *msg = &(g_oilReadMsg);
  230. AT24CXX_Write(FRAM_OILINIT_MSG,(uint8_t*)msg,sizeof(oilReadMsg));
  231. }
  232. /*--------------------------------------------------------
  233. * 液位仪信息读取
  234. * --------------------------------------------------------*/
  235. void fram_read_oil_msg(void)
  236. {
  237. oilReadMsg *msg = NULL;
  238. msg = &(g_oilReadMsg);
  239. AT24CXX_Read(FRAM_OILINIT_MSG,(uint8_t*)msg,sizeof(oilReadMsg));
  240. }