Sim_EEPROM.c 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. #include <SIM_EEPROM.h>
  2. #include "All_define.h"
  3. uint32_t OTA_Reciv_Datalen;
  4. uint32_t IAPUpdateFlag = 0;
  5. //-------------------------------------------------------------------------------------------------------------------
  6. // @brief 校验FLASH是否有数据
  7. // @param add 检查的数据地址
  8. // @param len 检查的地址后的后几个字节的数据
  9. // @return 返回1有数据 返回0没有数据 如果需要对有数据的区域写入新的数据则应该对所在扇区进行擦除操作
  10. // @since v1.0
  11. // Sample usage: flash_check(PAGE_FIRST_ADD(127),4);//检查第127页从首地址开始的后四个字节是否有数据
  12. //-------------------------------------------------------------------------------------------------------------------
  13. uint8_t flash_check (uint32_t add, uint16_t len)
  14. {
  15. uint16_t temp_loop;
  16. for(temp_loop = 0; temp_loop < len; temp_loop+=1) // 循环读取 Flash 的值
  17. {
  18. if( (*(__IO uint8_t*) (add+temp_loop)) != 0xff ) // 如果不是 0xff 那就是有值
  19. return 1;
  20. }
  21. return 0;
  22. }
  23. //-------------------------------------------------------------------------------------------------------------------
  24. // @brief FLASH字写数据
  25. // @param add 需要写入的地址 范围0x80000000 - 0x801fffb
  26. // @param data 需要写入的数据
  27. // @return 返回1表示写入失败(可能因为写入的地址有数据),返回零写入成功
  28. // @since v1.0
  29. // Sample usage: flash_word_write(PAGE_FIRST_ADD(127),0x01010101);
  30. //-------------------------------------------------------------------------------------------------------------------
  31. uint8_t flash_word_write (uint32_t add,uint32_t data)
  32. {
  33. fmc_unlock();
  34. if(flash_check(add,4)) return 1;
  35. else fmc_word_program(add, data);
  36. fmc_lock();
  37. return 0;
  38. }
  39. //-------------------------------------------------------------------------------------------------------------------
  40. // @brief FLASH读数据
  41. // @param add 需要读数据的地址 范围0x80000000 - 0x801fffb
  42. // @param
  43. // @return 读出的数据
  44. // @since v1.0
  45. // Sample usage: flash_word_read(PAGE_FIRST_ADD(127)+0*WORD_SIZE);
  46. //-------------------------------------------------------------------------------------------------------------------
  47. uint32_t flash_word_read (uint32_t add)
  48. {
  49. return *(__IO uint32_t*)(add);
  50. }
  51. /***************************************************************************************************
  52. * 函数名称: MemReadByte()
  53. * 函数功能: 从存储器中读出num字节数据
  54. * 入口参数: *dat:读出数据的保存地址
  55. * num :读出的字节数
  56. * 出口参数: 0:操作失败;1:操作成功
  57. * 使用说明: 无
  58. * 创建日期: 2010年12月15日
  59. ***************************************************************************************************/
  60. uint8_t MemReadByte(uint16_t *data,uint16_t num)
  61. {
  62. uint16_t *temp_addr = (uint16_t *)PAGE_ADDR;
  63. while(num --)
  64. {
  65. *data ++ = *temp_addr ++;
  66. }
  67. return 1;
  68. }
  69. /***************************************************************************************************
  70. * 函数名称: MemWriteByte()
  71. * 函数功能: 向存储器中写入num字节数据
  72. * 入口参数: *dat:待写入数据
  73. * num :写入的字节数
  74. * 出口参数: 0:操作失败;1:操作成功
  75. * 使用说明: 无
  76. * 创建日期: 2010年12月15日
  77. ***************************************************************************************************/
  78. uint8_t MemWriteByte(uint16_t *data,uint16_t num)
  79. {
  80. fmc_state_enum temp_stat;
  81. uint32_t temp_addr = PAGE_ADDR;
  82. fmc_unlock(); // Flash解锁,允许操作相关的寄存器
  83. temp_stat = fmc_page_erase(PAGE_ADDR); // 擦出制定的页
  84. if(temp_stat != FMC_READY)
  85. {
  86. fmc_lock();
  87. return 0;
  88. }
  89. while(num --)
  90. {
  91. temp_stat = fmc_halfword_program(temp_addr,*data);
  92. if(temp_stat != FMC_READY)
  93. {
  94. fmc_lock();
  95. return 0;
  96. }
  97. temp_addr += 2;
  98. data++;
  99. }
  100. fmc_lock();
  101. return 1;
  102. }
  103. void MemData_write(void)
  104. {
  105. u16 saveData1[40] = {0};
  106. saveData1[0] = dis_page_param.face_plate_param.Code_Version;
  107. saveData1[1] = dis_page_param.face_plate_param.Compensates_temp;
  108. saveData1[2] = dis_page_param.face_plate_param.Air_condition_Relay;
  109. saveData1[3] = dis_page_param.face_plate_param.Floor_heating_Relay ;
  110. saveData1[4] = dis_page_param.face_plate_param.Fresh_air_Relay;
  111. saveData1[5] = dis_page_param.face_plate_param.Ltemp_Protection_valve;
  112. saveData1[6] = dis_page_param.face_plate_param.Lock_screen;
  113. saveData1[7] = dis_page_param.face_plate_param.Full_Half_Lock;
  114. saveData1[8] = dis_page_param.face_plate_param.Data_send;
  115. saveData1[9] = dis_page_param.face_plate_param.Sleep_time_addr;
  116. saveData1[10] = dis_page_param.face_plate_param.Led_Brightness;
  117. saveData1[11] = dis_page_param.face_plate_param.Env_Light;
  118. saveData1[12] = dis_page_param.face_plate_param.Device_Slave_addr;
  119. saveData1[13] = dis_page_param.face_plate_param.Device_BaudRate;
  120. saveData1[14] = dis_page_param.face_plate_param.TempHumi_UpdateMode;
  121. saveData1[15] = dis_page_param.face_plate_param.Open_device_mode;
  122. saveData1[16] = dis_page_param.face_plate_param.Ltemp_Protection_valve;
  123. saveData1[17] = dis_page_param.face_plate_param.Floor_Heating_Protecton_value;
  124. saveData1[18] = dis_page_param.face_plate_param.Parm_SaveFlag;
  125. saveData1[19] = dis_page_param.face_plate_param.Panel_Shield;
  126. saveData1[30] = dis_page_param.face_plate_param.HTemp_Limit;
  127. saveData1[31] = dis_page_param.face_plate_param.LTemp_Limit;
  128. saveData1[32] = dis_page_param.face_plate_param.Speed_Relay;
  129. if(Parm_Save == 1)
  130. {
  131. saveData1[20] = dis_page_param.face_plate_param.Air_condition_mode ;
  132. saveData1[21] = dis_page_param.face_plate_param.Air_condition_switch ;
  133. saveData1[22] = dis_page_param.face_plate_param.Air_set_temp ;
  134. saveData1[23] = dis_page_param.face_plate_param.Air_wind_speed ;
  135. saveData1[24] = dis_page_param.face_plate_param.Air_relay_switch ;
  136. saveData1[25] = dis_page_param.face_plate_param.Floor_heating_switch ;
  137. saveData1[26] = dis_page_param.face_plate_param.Floor_heating_set_temp ;
  138. saveData1[27] = dis_page_param.face_plate_param.Floor_relay_switch ;
  139. saveData1[28] = dis_page_param.face_plate_param.Fresh_air_switch ;
  140. saveData1[29] = dis_page_param.face_plate_param.Fresh_air_speed;
  141. }
  142. MemWriteByte(saveData1, sizeof(saveData1));
  143. }
  144. uint8_t MemData_check(void)
  145. {
  146. uint8_t Data_need_write = 0;
  147. u8 EI = (dis_page_param.face_plate_param.Compensates_temp & 0xf0) >> 4;
  148. u8 EE = (dis_page_param.face_plate_param.Compensates_temp & 0x0F);
  149. u8 EIE_flag = 0;
  150. if(EI == 0X0F && EE < 0x07)
  151. {
  152. EIE_flag ++;
  153. }
  154. else if(EI == 0X00 && EE >0x09)
  155. {
  156. EIE_flag ++;
  157. }
  158. if(EIE_flag > 0)
  159. {
  160. dis_page_param.face_plate_param.Compensates_temp = 0x00;
  161. Data_need_write++;
  162. }
  163. u8 QQ = (dis_page_param.face_plate_param.Air_condition_Relay & 0xFF00) >> 8;
  164. u8 QI = (dis_page_param.face_plate_param.Air_condition_Relay & 0xFF);
  165. u8 QQI_flag = 0;
  166. if(QQ >2 )
  167. {
  168. QQI_flag ++;
  169. }
  170. else if(QI > 3)
  171. {
  172. QQI_flag ++;
  173. }
  174. if(QQI_flag > 0)
  175. {
  176. dis_page_param.face_plate_param.Air_condition_Relay = 0x0101;
  177. Data_need_write++;
  178. }
  179. QQ = (dis_page_param.face_plate_param.Floor_heating_Relay & 0xFF00) >> 8;
  180. QI = (dis_page_param.face_plate_param.Floor_heating_Relay & 0xFF);
  181. QQI_flag = 0;
  182. if(QQ >2 )
  183. {
  184. QQI_flag ++;
  185. }
  186. else if(QI > 2)
  187. {
  188. QQI_flag ++;
  189. }
  190. if(QQI_flag > 0)
  191. {
  192. dis_page_param.face_plate_param.Floor_heating_Relay = 0x0101;
  193. Data_need_write++;
  194. }
  195. if(dis_page_param.face_plate_param.Fresh_air_Relay > 1)
  196. {
  197. dis_page_param.face_plate_param.Fresh_air_Relay = 0x00;
  198. Data_need_write++;
  199. }
  200. if( (dis_page_param.face_plate_param.Ltemp_Protection_valve >0x05 && dis_page_param.face_plate_param.Ltemp_Protection_valve <0x0f) \
  201. || dis_page_param.face_plate_param.Ltemp_Protection_valve > 0x0f)
  202. {
  203. dis_page_param.face_plate_param.Ltemp_Protection_valve = 0x0f;
  204. Data_need_write++;
  205. }
  206. if( dis_page_param.face_plate_param.Lock_screen > 0x01)
  207. {
  208. dis_page_param.face_plate_param.Lock_screen = 0x00;
  209. Data_need_write++;
  210. }
  211. if( dis_page_param.face_plate_param.Full_Half_Lock > 0x01)
  212. {
  213. dis_page_param.face_plate_param.Full_Half_Lock = 0x00;
  214. Data_need_write++;
  215. }
  216. if( dis_page_param.face_plate_param.Data_send > 0x01)
  217. {
  218. dis_page_param.face_plate_param.Data_send = 0x00;
  219. Data_need_write++;
  220. }
  221. if (dis_page_param.face_plate_param.Sleep_time_addr > 5 &&dis_page_param.face_plate_param.Sleep_time_addr <0xf)
  222. {
  223. dis_page_param.face_plate_param.Sleep_time_addr = 0x05;
  224. Data_need_write++;
  225. }
  226. else if (dis_page_param.face_plate_param.Sleep_time_addr > 0x0f)
  227. {
  228. dis_page_param.face_plate_param.Sleep_time_addr = 0x0f;
  229. Data_need_write++;
  230. }
  231. QQ = (dis_page_param.face_plate_param.Led_Brightness & 0x0F00) >> 8;
  232. QI = (dis_page_param.face_plate_param.Led_Brightness & 0x00F);
  233. QQI_flag = 0;
  234. if(QQ > 1)
  235. {
  236. QQI_flag++;
  237. }
  238. else if(QI > 6)
  239. {
  240. QQI_flag++;
  241. }
  242. if(QQI_flag > 0)
  243. {
  244. dis_page_param.face_plate_param.Led_Brightness = 0x0001;
  245. Data_need_write++;
  246. }
  247. if(dis_page_param.face_plate_param.Env_Light > 7)
  248. {
  249. dis_page_param.face_plate_param.Env_Light = 0x01;
  250. Data_need_write++;
  251. }
  252. const uint16_t baudrate[7] = {0x01e0,0x03c0,0x05a0,0x0780,0x0f00,0x15e0,0x0000};
  253. uint8_t i = 0;
  254. for( i = 0; i < 7; i++)
  255. {
  256. if(dis_page_param.face_plate_param.Device_BaudRate == baudrate[i])
  257. {
  258. break;
  259. }
  260. }
  261. if(i == 7)
  262. {
  263. dis_page_param.face_plate_param.Device_BaudRate = 0x03c0;
  264. Data_need_write++;
  265. }
  266. QQ = (dis_page_param.face_plate_param.TempHumi_UpdateMode & 0xFF00) >> 8;
  267. QI = (dis_page_param.face_plate_param.TempHumi_UpdateMode & 0xFF);
  268. QQI_flag = 0;
  269. if(QQ > 3)
  270. {
  271. QQI_flag++;
  272. }
  273. else if(QI > 0x0c)
  274. {
  275. QQI_flag++;
  276. }
  277. if(QQI_flag > 0)
  278. {
  279. dis_page_param.face_plate_param.TempHumi_UpdateMode = 0x0000;
  280. Data_need_write++;
  281. }
  282. if(dis_page_param.face_plate_param.Open_device_mode > 1)
  283. {
  284. dis_page_param.face_plate_param.Open_device_mode = 0x0000;
  285. Data_need_write++;
  286. }
  287. if( (dis_page_param.face_plate_param.Ltemp_Protection_valve > 5 && dis_page_param.face_plate_param.Ltemp_Protection_valve <0xf) || \
  288. dis_page_param.face_plate_param.Ltemp_Protection_valve > 0x0f)
  289. {
  290. dis_page_param.face_plate_param.Ltemp_Protection_valve = 0x0f;
  291. Data_need_write++;
  292. }
  293. if( dis_page_param.face_plate_param.Floor_Heating_Protecton_value == 0|| \
  294. dis_page_param.face_plate_param.Ltemp_Protection_valve > 0x05)
  295. {
  296. dis_page_param.face_plate_param.Floor_Heating_Protecton_value = 0x01;
  297. Data_need_write++;
  298. }
  299. if( dis_page_param.face_plate_param.Parm_SaveFlag > 1)
  300. {
  301. dis_page_param.face_plate_param.Parm_SaveFlag = 0x00;
  302. Data_need_write++;
  303. }
  304. if( dis_page_param.face_plate_param.Panel_Shield > 7 || dis_page_param.face_plate_param.Panel_Shield == 0)
  305. {
  306. dis_page_param.face_plate_param.Panel_Shield = 0x07;
  307. Data_need_write++;
  308. }
  309. if(dis_page_param.face_plate_param.Parm_SaveFlag)
  310. {
  311. if( dis_page_param.face_plate_param.Air_condition_mode > 3)
  312. {
  313. dis_page_param.face_plate_param.Air_condition_mode = 0;
  314. Data_need_write++;
  315. }
  316. if( dis_page_param.face_plate_param.Air_condition_switch > 1)
  317. {
  318. dis_page_param.face_plate_param.Air_condition_switch = 0;
  319. Data_need_write++;
  320. }
  321. if( dis_page_param.face_plate_param.Air_set_temp > 32 ||
  322. dis_page_param.face_plate_param.Air_set_temp < 10)
  323. {
  324. dis_page_param.face_plate_param.Air_set_temp = 25;
  325. Data_need_write++;
  326. }
  327. if( dis_page_param.face_plate_param.Air_wind_speed != 0X0100 &&
  328. (dis_page_param.face_plate_param.Air_wind_speed == 0 || dis_page_param.face_plate_param.Air_wind_speed >3))
  329. {
  330. dis_page_param.face_plate_param.Air_set_temp = 0X01;
  331. Data_need_write++;
  332. }
  333. uint8_t flag = 0;
  334. uint8_t dataH = (uint8_t ) ( (dis_page_param.face_plate_param.Air_relay_switch &0xff00) >> 8);
  335. uint8_t dataL = (uint8_t ) ( (dis_page_param.face_plate_param.Air_relay_switch &0x00ff) >> 0);
  336. if(dataH == 0)
  337. {
  338. if(dataL != 0)
  339. {
  340. flag = 1;
  341. }
  342. }
  343. else if(dataH == 0x01 || dataH == 0x02)
  344. {
  345. if(dataL == 0 || dataL > 3)
  346. {
  347. flag = 1;
  348. }
  349. }
  350. if( flag == 1)
  351. {
  352. dis_page_param.face_plate_param.Air_relay_switch = 0x0000;
  353. Data_need_write++;
  354. }
  355. flag = 0;
  356. dataH = (uint8_t ) ( (dis_page_param.face_plate_param.Floor_relay_switch &0xff00) >> 8);
  357. dataL = (uint8_t ) ( (dis_page_param.face_plate_param.Floor_relay_switch &0x00ff) >> 0);
  358. if(dataH == 0)
  359. {
  360. if(dataL != 0)
  361. {
  362. flag = 1;
  363. }
  364. }
  365. else if(dataH == 0x01 || dataH == 0x02)
  366. {
  367. if(dataL == 0 || dataL > 2)
  368. {
  369. flag = 1;
  370. }
  371. }
  372. if( flag == 1)
  373. {
  374. dis_page_param.face_plate_param.Floor_relay_switch = 0x0000;
  375. Data_need_write++;
  376. }
  377. if( dis_page_param.face_plate_param.Floor_heating_switch > 1)
  378. {
  379. dis_page_param.face_plate_param.Floor_heating_switch = 0;
  380. Data_need_write++;
  381. }
  382. if( dis_page_param.face_plate_param.Floor_heating_set_temp > 32 ||
  383. dis_page_param.face_plate_param.Floor_heating_set_temp < 10)
  384. {
  385. dis_page_param.face_plate_param.Floor_heating_set_temp = 25;
  386. Data_need_write++;
  387. }
  388. if( dis_page_param.face_plate_param.Fresh_air_switch > 1)
  389. {
  390. dis_page_param.face_plate_param.Fresh_air_switch = 0;
  391. Data_need_write++;
  392. }
  393. if( dis_page_param.face_plate_param.Fresh_air_speed == 0 ||
  394. dis_page_param.face_plate_param.Fresh_air_speed > 3 )
  395. {
  396. dis_page_param.face_plate_param.Fresh_air_speed = 1;
  397. Data_need_write++;
  398. }
  399. }
  400. if( dis_page_param.face_plate_param.HTemp_Limit < 16 ||
  401. dis_page_param.face_plate_param.HTemp_Limit > 30 )
  402. {
  403. dis_page_param.face_plate_param.HTemp_Limit = 30;
  404. Data_need_write++;
  405. }
  406. if( dis_page_param.face_plate_param.LTemp_Limit < 16 ||
  407. dis_page_param.face_plate_param.LTemp_Limit > 30 ||
  408. dis_page_param.face_plate_param.LTemp_Limit >= dis_page_param.face_plate_param.HTemp_Limit)
  409. {
  410. dis_page_param.face_plate_param.LTemp_Limit = 16;
  411. Data_need_write++;
  412. }
  413. if( dis_page_param.face_plate_param.Speed_Relay > 1)
  414. {
  415. dis_page_param.face_plate_param.Speed_Relay = 0;
  416. Data_need_write++;
  417. }
  418. return Data_need_write;
  419. }
  420. void MemData_Reset(void)
  421. {
  422. u16 saveData1[40] = {0};
  423. dis_page_param.face_plate_param.Code_Version = CODE_VERSION;
  424. dis_page_param.face_plate_param.Compensates_temp = 0x00;
  425. dis_page_param.face_plate_param.Air_condition_Relay = 0x0101;
  426. dis_page_param.face_plate_param.Floor_heating_Relay = 0x0101;
  427. dis_page_param.face_plate_param.Fresh_air_Relay = 0x0000;
  428. dis_page_param.face_plate_param.Ltemp_Protection_valve = 0x00;
  429. dis_page_param.face_plate_param.Lock_screen = 0x00;
  430. dis_page_param.face_plate_param.Full_Half_Lock = 0x00;
  431. dis_page_param.face_plate_param.Data_send = 0x00;
  432. dis_page_param.face_plate_param.Sleep_time_addr = 0x0f;
  433. dis_page_param.face_plate_param.Led_Brightness = 0x0001;
  434. dis_page_param.face_plate_param.Env_Light = 0x04;
  435. dis_page_param.face_plate_param.Device_Slave_addr = 0x01;
  436. dis_page_param.face_plate_param.Device_BaudRate = 0x03c0;
  437. dis_page_param.face_plate_param.TempHumi_UpdateMode = 0x0000;
  438. dis_page_param.face_plate_param.Open_device_mode = 0x00;
  439. dis_page_param.face_plate_param.Parm_SaveFlag = 0;
  440. dis_page_param.face_plate_param.Panel_Shield = 0X07;
  441. dis_page_param.face_plate_param.HTemp_Limit = 30;
  442. dis_page_param.face_plate_param.LTemp_Limit = 16;
  443. dis_page_param.face_plate_param.Speed_Relay = 0;
  444. dis_page_param.face_plate_param.Air_condition_mode = 0;
  445. dis_page_param.face_plate_param.Air_condition_switch = 0;
  446. dis_page_param.face_plate_param.Air_set_temp = 18;
  447. dis_page_param.face_plate_param.Air_wind_speed = 0x0002;
  448. dis_page_param.face_plate_param.Air_relay_switch = 0x00;
  449. dis_page_param.face_plate_param.Floor_heating_switch = 0;
  450. dis_page_param.face_plate_param.Floor_heating_set_temp = 28;
  451. dis_page_param.face_plate_param.Floor_relay_switch = 0x00;
  452. dis_page_param.face_plate_param.Fresh_condition_mode=0;
  453. dis_page_param.face_plate_param.Fresh_air_switch = 0;
  454. dis_page_param.face_plate_param.Fresh_air_speed = 2;
  455. dis_page_param.face_plate_param.Fresh_set_temp=18;
  456. saveData1[0] = dis_page_param.face_plate_param.Code_Version;
  457. saveData1[1] = dis_page_param.face_plate_param.Compensates_temp;
  458. saveData1[2] = dis_page_param.face_plate_param.Air_condition_Relay;
  459. saveData1[3] = dis_page_param.face_plate_param.Floor_heating_Relay ;
  460. saveData1[4] = dis_page_param.face_plate_param.Fresh_air_Relay;
  461. saveData1[5] = dis_page_param.face_plate_param.Ltemp_Protection_valve;
  462. saveData1[6] = dis_page_param.face_plate_param.Lock_screen;
  463. saveData1[7] = dis_page_param.face_plate_param.Full_Half_Lock;
  464. saveData1[8] = dis_page_param.face_plate_param.Data_send;
  465. saveData1[9] = dis_page_param.face_plate_param.Sleep_time_addr;
  466. saveData1[10] = dis_page_param.face_plate_param.Led_Brightness;
  467. saveData1[11] = dis_page_param.face_plate_param.Env_Light;
  468. saveData1[12] = dis_page_param.face_plate_param.Device_Slave_addr;
  469. saveData1[13] = dis_page_param.face_plate_param.Device_BaudRate;
  470. saveData1[14] = dis_page_param.face_plate_param.TempHumi_UpdateMode;
  471. saveData1[15] = dis_page_param.face_plate_param.Open_device_mode;
  472. saveData1[16] = dis_page_param.face_plate_param.Ltemp_Protection_valve;
  473. saveData1[17] = dis_page_param.face_plate_param.Floor_Heating_Protecton_value;
  474. saveData1[18] = dis_page_param.face_plate_param.Parm_SaveFlag;
  475. saveData1[19] = dis_page_param.face_plate_param.Panel_Shield;
  476. saveData1[30] = dis_page_param.face_plate_param.HTemp_Limit;
  477. saveData1[31] = dis_page_param.face_plate_param.LTemp_Limit;
  478. saveData1[32] = dis_page_param.face_plate_param.Speed_Relay;
  479. saveData1[20] = dis_page_param.face_plate_param.Air_condition_mode ;
  480. saveData1[21] = dis_page_param.face_plate_param.Air_condition_switch ;
  481. saveData1[22] = dis_page_param.face_plate_param.Air_set_temp ;
  482. saveData1[23] = dis_page_param.face_plate_param.Air_wind_speed ;
  483. saveData1[24] = dis_page_param.face_plate_param.Air_relay_switch ;
  484. saveData1[25] = dis_page_param.face_plate_param.Floor_heating_switch ;
  485. saveData1[26] = dis_page_param.face_plate_param.Floor_heating_set_temp ;
  486. saveData1[27] = dis_page_param.face_plate_param.Floor_relay_switch ;
  487. saveData1[28] = dis_page_param.face_plate_param.Fresh_air_switch ;
  488. saveData1[29] = dis_page_param.face_plate_param.Fresh_air_speed;
  489. memset(&dis_page_num ,0,sizeof(Dis_page_num));
  490. dis_page_num.display_page = dis_air_Conditioning;
  491. MemWriteByte(saveData1, sizeof(saveData1));
  492. }
  493. static u16 saveData1[40] = {0};
  494. void MemData_init(void)
  495. {
  496. memset(&dis_page_param ,0,sizeof(Dis_page_param));
  497. dis_page_param.face_plate_param.Reset_Flag = 0;
  498. u8 Data_need_write = 0;
  499. MemReadByte(saveData1, 80);
  500. dis_page_param.face_plate_param.Code_Version = saveData1[0];
  501. if (dis_page_param.face_plate_param.Code_Version != CODE_VERSION)
  502. {
  503. Data_need_write += 1;
  504. dis_page_param.face_plate_param.Code_Version = CODE_VERSION;
  505. dis_page_param.face_plate_param.Compensates_temp = 0x00;
  506. dis_page_param.face_plate_param.Air_condition_Relay = 0x0101;
  507. dis_page_param.face_plate_param.Floor_heating_Relay = 0x0101;
  508. dis_page_param.face_plate_param.Fresh_air_Relay = 0x0000;
  509. dis_page_param.face_plate_param.Ltemp_Protection_valve = 0x00;
  510. dis_page_param.face_plate_param.Lock_screen = 0x00;
  511. dis_page_param.face_plate_param.Full_Half_Lock = 0x00;
  512. dis_page_param.face_plate_param.Data_send = 0x00;
  513. dis_page_param.face_plate_param.Sleep_time_addr = 0x0f;
  514. dis_page_param.face_plate_param.Led_Brightness = 0x0001;
  515. dis_page_param.face_plate_param.Env_Light = 0x04;
  516. dis_page_param.face_plate_param.Device_Slave_addr = 0x01;
  517. dis_page_param.face_plate_param.Device_BaudRate = 0x03c0;
  518. dis_page_param.face_plate_param.TempHumi_UpdateMode = 0x0000;
  519. dis_page_param.face_plate_param.Open_device_mode = 0x00;
  520. dis_page_param.face_plate_param.Parm_SaveFlag = 0;
  521. dis_page_param.face_plate_param.Panel_Shield = 0X07;
  522. dis_page_param.face_plate_param.HTemp_Limit = 30;
  523. dis_page_param.face_plate_param.LTemp_Limit = 16;
  524. dis_page_param.face_plate_param.Speed_Relay = 0;
  525. fuji_or_shuiji=0;
  526. }
  527. else
  528. {
  529. dis_page_param.face_plate_param.Compensates_temp = saveData1[1];
  530. dis_page_param.face_plate_param.Air_condition_Relay = saveData1[2];
  531. dis_page_param.face_plate_param.Floor_heating_Relay = saveData1[3];
  532. dis_page_param.face_plate_param.Fresh_air_Relay = saveData1[4];
  533. dis_page_param.face_plate_param.Ltemp_Protection_valve = saveData1[5];
  534. dis_page_param.face_plate_param.Lock_screen = saveData1[6];
  535. dis_page_param.face_plate_param.Full_Half_Lock = saveData1[7];
  536. dis_page_param.face_plate_param.Data_send = saveData1[8];
  537. dis_page_param.face_plate_param.Sleep_time_addr = saveData1[9];
  538. dis_page_param.face_plate_param.Led_Brightness = saveData1[10];
  539. dis_page_param.face_plate_param.Env_Light = saveData1[11];
  540. dis_page_param.face_plate_param.Device_Slave_addr = saveData1[12];
  541. dis_page_param.face_plate_param.Device_BaudRate = saveData1[13];
  542. dis_page_param.face_plate_param.TempHumi_UpdateMode = saveData1[14];
  543. dis_page_param.face_plate_param.Open_device_mode = saveData1[15];
  544. dis_page_param.face_plate_param.Ltemp_Protection_valve = saveData1[16];
  545. dis_page_param.face_plate_param.Floor_Heating_Protecton_value = saveData1[17];
  546. dis_page_param.face_plate_param.Parm_SaveFlag = saveData1[18];
  547. dis_page_param.face_plate_param.Panel_Shield = saveData1[19];
  548. dis_page_param.face_plate_param.HTemp_Limit = 30;
  549. dis_page_param.face_plate_param.LTemp_Limit = 16;
  550. dis_page_param.face_plate_param.Speed_Relay = saveData1[32];
  551. }
  552. if(Parm_Save == 1)
  553. {
  554. dis_page_param.face_plate_param.Air_condition_mode = saveData1[20];
  555. dis_page_param.face_plate_param.Air_condition_switch = saveData1[21];
  556. dis_page_param.face_plate_param.Air_set_temp = saveData1[22];
  557. dis_page_param.face_plate_param.Air_wind_speed = saveData1[23];
  558. dis_page_param.face_plate_param.Air_relay_switch = saveData1[24];
  559. dis_page_param.face_plate_param.Floor_heating_switch = saveData1[25];
  560. dis_page_param.face_plate_param.Floor_heating_set_temp = saveData1[26];
  561. dis_page_param.face_plate_param.Floor_relay_switch = saveData1[27];
  562. dis_page_param.face_plate_param.Fresh_air_switch = saveData1[28];
  563. dis_page_param.face_plate_param.Fresh_air_speed = saveData1[29];
  564. }
  565. else
  566. {
  567. dis_page_param.face_plate_param.Air_condition_mode = 0;
  568. dis_page_param.face_plate_param.Air_condition_switch = 0;
  569. dis_page_param.face_plate_param.Air_set_temp = 18;
  570. dis_page_param.face_plate_param.Air_wind_speed = 0x0002;
  571. dis_page_param.face_plate_param.Air_relay_switch = 0x00;
  572. dis_page_param.face_plate_param.Floor_heating_switch = 0;
  573. dis_page_param.face_plate_param.Floor_heating_set_temp = 28;
  574. dis_page_param.face_plate_param.Floor_relay_switch = 0x00;
  575. dis_page_param.face_plate_param.Fresh_condition_mode=0;
  576. dis_page_param.face_plate_param.Fresh_air_switch = 0;
  577. dis_page_param.face_plate_param.Fresh_air_speed = 2;
  578. dis_page_param.face_plate_param.Fresh_set_temp=18;
  579. }
  580. printf("Parm_Save %d\r\n",Parm_Save);
  581. if(MemData_check() >= 1)
  582. {
  583. MemData_write();
  584. }
  585. if(dis_page_param.face_plate_param.Compensates_temp < 0)
  586. {
  587. dis_page_param.advanced_param.compensates_temp_character = 1;
  588. }
  589. else
  590. {
  591. dis_page_param.advanced_param.compensates_temp_character = 0;
  592. }
  593. }