measure_temprature.c 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. #include"common.h"
  2. #include "drv_adc.h"
  3. #include "measure_temprature.h"
  4. // 温度作为索引
  5. #define T_END (85u+40u+1u)//Maximum number of elements in the temperature table
  6. #define B_VALUE
  7. #ifndef B_VALUE
  8. static const unsigned short T_PCB_Table[T_END] =
  9. {
  10. 0xF30B, //-40[degrees C]
  11. 0xF25C, //-39[degrees C]
  12. 0xF1A4, //-38[degrees C]
  13. 0xF0E6, //-37[degrees C]
  14. 0xF021, //-36[degrees C]
  15. 0xEF54, //-35[degrees C]
  16. 0xEE7E, //-34[degrees C]
  17. 0xEDA1, //-33[degrees C]
  18. 0xECBD, //-32[degrees C]
  19. 0xEBCD, //-31[degrees C]
  20. 0xEAD7, //-30[degrees C]
  21. 0xE9D1, //-29[degrees C]
  22. 0xE8C7, //-28[degrees C]
  23. 0xE7AF, //-27[degrees C]
  24. 0xE68F, //-26[degrees C]
  25. 0xE565, //-25[degrees C]
  26. 0xE432, //-24[degrees C]
  27. 0xE2F6, //-23[degrees C]
  28. 0xE1B0, //-22[degrees C]
  29. 0xE061, //-21[degrees C]
  30. 0xDF07, //-20[degrees C]
  31. 0xDD9E, //-19[degrees C]
  32. 0xDC29, //-18[degrees C]
  33. 0xDAAC, //-17[degrees C]
  34. 0xD924, //-16[degrees C]
  35. 0xD793, //-15[degrees C]
  36. 0xD5F7, //-14[degrees C]
  37. 0xD452, //-13[degrees C]
  38. 0xD2A4, //-12[degrees C]
  39. 0xD0EB, //-11[degrees C]
  40. 0xCF29, //-10[degrees C]
  41. 0xCD54, //-9[degrees C]
  42. 0xCB76, //-8[degrees C]
  43. 0xC98D, //-7[degrees C]
  44. 0xC79D, //-6[degrees C]
  45. 0xC5A3, //-5[degrees C]
  46. 0xC3A2, //-4[degrees C]
  47. 0xC197, //-3[degrees C]
  48. 0xBF85, //-2[degrees C]
  49. 0xBD6D, //-1[degrees C]
  50. 0xBB49, //0[degrees C]
  51. 0xB919, //1[degrees C]
  52. 0xB6E0, //2[degrees C]
  53. 0xB4A4, //3[degrees C]
  54. 0xB261, //4[degrees C]
  55. 0xB015, //5[degrees C]
  56. 0xADC6, //6[degrees C]
  57. 0xAB78, //7[degrees C]
  58. 0xA91F, //8[degrees C]
  59. 0xA6C3, //9[degrees C]
  60. 0xA467, //10[degrees C]
  61. 0xA1FB, //11[degrees C]
  62. 0x9F93, //12[degrees C]
  63. 0x9D1F, //13[degrees C]
  64. 0x9AB2, //14[degrees C]
  65. 0x9847, //15[degrees C]
  66. 0x95D4, //16[degrees C]
  67. 0x9366, //17[degrees C]
  68. 0x90F3, //18[degrees C]
  69. 0x8E7D, //19[degrees C]
  70. 0x8C14, //20[degrees C]
  71. 0x899D, //21[degrees C]
  72. 0x8736, //22[degrees C]
  73. 0x84C6, //23[degrees C]
  74. 0x825B, //24[degrees C]
  75. 0x7FF8, //25[degrees C]
  76. 0x7D92, //26[degrees C]
  77. 0x7B32, //27[degrees C]
  78. 0x78D6, //28[degrees C]
  79. 0x7680, //29[degrees C]
  80. 0x742E, //30[degrees C]
  81. 0x71DC, //31[degrees C]
  82. 0x6F92, //32[degrees C]
  83. 0x6D4D, //33[degrees C]
  84. 0x6B11, //34[degrees C]
  85. 0x68DA, //35[degrees C]
  86. 0x66AC, //36[degrees C]
  87. 0x6483, //37[degrees C]
  88. 0x6264, //38[degrees C]
  89. 0x604C, //39[degrees C]
  90. 0x5E3A, //40[degrees C]
  91. 0x5C2E, //41[degrees C]
  92. 0x5A27, //42[degrees C]
  93. 0x582A, //43[degrees C]
  94. 0x5638, //44[degrees C]
  95. 0x544B, //45[degrees C]
  96. 0x5269, //46[degrees C]
  97. 0x508E, //47[degrees C]
  98. 0x4EBB, //48[degrees C]
  99. 0x4CF3, //49[degrees C]
  100. 0x4B31, //50[degrees C]
  101. 0x4977, //51[degrees C]
  102. 0x47C2, //52[degrees C]
  103. 0x4616, //53[degrees C]
  104. 0x4474, //54[degrees C]
  105. 0x42DC, //55[degrees C]
  106. 0x414C, //56[degrees C]
  107. 0x3FC3, //57[degrees C]
  108. 0x3E44, //58[degrees C]
  109. 0x3CCE, //59[degrees C]
  110. 0x3B5D, //60[degrees C]
  111. 0x39F3, //61[degrees C]
  112. 0x3894, //62[degrees C]
  113. 0x3738, //63[degrees C]
  114. 0x35E7, //64[degrees C]
  115. 0x349E, //65[degrees C]
  116. 0x335E, //66[degrees C]
  117. 0x3222, //67[degrees C]
  118. 0x30EF, //68[degrees C]
  119. 0x2FC6, //69[degrees C]
  120. 0x2EA2, //70[degrees C]
  121. 0x2D84, //71[degrees C]
  122. 0x2C6B, //72[degrees C]
  123. 0x2B59, //73[degrees C]
  124. 0x2A4D, //74[degrees C]
  125. 0x294C, //75[degrees C]
  126. 0x284D, //76[degrees C]
  127. 0x2756, //77[degrees C]
  128. 0x2665, //78[degrees C]
  129. 0x257C, //79[degrees C]
  130. 0x2496, //80[degrees C]
  131. 0x23B8, //81[degrees C]
  132. 0x22DD, //82[degrees C]
  133. 0x2205, //83[degrees C]
  134. 0x213A, //84[degrees C]
  135. 0x206E //85[degrees C]
  136. };
  137. #else
  138. static const unsigned short T_PCB_Table[T_END] =
  139. {
  140. 0xF620, //-40[degrees C]
  141. 0xF582, //-39[degrees C]
  142. 0xF4DC, //-38[degrees C]
  143. 0xF42E, //-37[degrees C]
  144. 0xF378, //-36[degrees C]
  145. 0xF2B9, //-35[degrees C]
  146. 0xF1F1, //-34[degrees C]
  147. 0xF120, //-33[degrees C]
  148. 0xF045, //-32[degrees C]
  149. 0xEF61, //-31[degrees C]
  150. 0xEE73, //-30[degrees C]
  151. 0xED7A, //-29[degrees C]
  152. 0xEC77, //-28[degrees C]
  153. 0xEB69, //-27[degrees C]
  154. 0xEA51, //-26[degrees C]
  155. 0xE92D, //-25[degrees C]
  156. 0xE7FE, //-24[degrees C]
  157. 0xE6C4, //-23[degrees C]
  158. 0xE57E, //-22[degrees C]
  159. 0xE42C, //-21[degrees C]
  160. 0xE2CF, //-20[degrees C]
  161. 0xE166, //-19[degrees C]
  162. 0xDFF0, //-18[degrees C]
  163. 0xDE6F, //-17[degrees C]
  164. 0xDCE2, //-16[degrees C]
  165. 0xDB48, //-15[degrees C]
  166. 0xD9A3, //-14[degrees C]
  167. 0xD7F1, //-13[degrees C]
  168. 0xD634, //-12[degrees C]
  169. 0xD46A, //-11[degrees C]
  170. 0xD295, //-10[degrees C]
  171. 0xD0B4, //-9[degrees C]
  172. 0xCEC8, //-8[degrees C]
  173. 0xCCD1, //-7[degrees C]
  174. 0xCACF, //-6[degrees C]
  175. 0xC8C1, //-5[degrees C]
  176. 0xC6AA, //-4[degrees C]
  177. 0xC488, //-3[degrees C]
  178. 0xC25D, //-2[degrees C]
  179. 0xC028, //-1[degrees C]
  180. 0xBDE9, //0[degrees C]
  181. 0xBBA3, //1[degrees C]
  182. 0xB954, //2[degrees C]
  183. 0xB6FD, //3[degrees C]
  184. 0xB49F, //4[degrees C]
  185. 0xB23A, //5[degrees C]
  186. 0xAFCF, //6[degrees C]
  187. 0xAD5E, //7[degrees C]
  188. 0xAAE8, //8[degrees C]
  189. 0xA86D, //9[degrees C]
  190. 0xA5EE, //10[degrees C]
  191. 0xA36B, //11[degrees C]
  192. 0xA0E5, //12[degrees C]
  193. 0x9E5D, //13[degrees C]
  194. 0x9BD3, //14[degrees C]
  195. 0x9947, //15[degrees C]
  196. 0x96BB, //16[degrees C]
  197. 0x942E, //17[degrees C]
  198. 0x91A2, //18[degrees C]
  199. 0x8F17, //19[degrees C]
  200. 0x8C8C, //20[degrees C]
  201. 0x8A04, //21[degrees C]
  202. 0x877E, //22[degrees C]
  203. 0x84FB, //23[degrees C]
  204. 0x827C, //24[degrees C]
  205. 0x8000, //25[degrees C]
  206. 0x7D88, //26[degrees C]
  207. 0x7B16, //27[degrees C]
  208. 0x78A8, //28[degrees C]
  209. 0x763F, //29[degrees C]
  210. 0x73DD, //30[degrees C]
  211. 0x7181, //31[degrees C]
  212. 0x6F2B, //32[degrees C]
  213. 0x6CDC, //33[degrees C]
  214. 0x6A94, //34[degrees C]
  215. 0x6853, //35[degrees C]
  216. 0x661A, //36[degrees C]
  217. 0x63E8, //37[degrees C]
  218. 0x61BF, //38[degrees C]
  219. 0x5F9E, //39[degrees C]
  220. 0x5D85, //40[degrees C]
  221. 0x5B74, //41[degrees C]
  222. 0x596C, //42[degrees C]
  223. 0x576D, //43[degrees C]
  224. 0x5576, //44[degrees C]
  225. 0x5389, //45[degrees C]
  226. 0x51A4, //46[degrees C]
  227. 0x4FC8, //47[degrees C]
  228. 0x4DF4, //48[degrees C]
  229. 0x4C2A, //49[degrees C]
  230. 0x4A69, //50[degrees C]
  231. 0x48B0, //51[degrees C]
  232. 0x4701, //52[degrees C]
  233. 0x455A, //53[degrees C]
  234. 0x43BC, //54[degrees C]
  235. 0x4227, //55[degrees C]
  236. 0x409A, //56[degrees C]
  237. 0x3F16, //57[degrees C]
  238. 0x3D9A, //58[degrees C]
  239. 0x3C27, //59[degrees C]
  240. 0x3ABC, //60[degrees C]
  241. 0x3959, //61[degrees C]
  242. 0x37FE, //62[degrees C]
  243. 0x36AC, //63[degrees C]
  244. 0x3561, //64[degrees C]
  245. 0x341D, //65[degrees C]
  246. 0x32E2, //66[degrees C]
  247. 0x31AD, //67[degrees C]
  248. 0x3080, //68[degrees C]
  249. 0x2F5B, //69[degrees C]
  250. 0x2E3C, //70[degrees C]
  251. 0x2D24, //71[degrees C]
  252. 0x2C13, //72[degrees C]
  253. 0x2B09, //73[degrees C]
  254. 0x2A05, //74[degrees C]
  255. 0x2908, //75[degrees C]
  256. 0x2811, //76[degrees C]
  257. 0x2720, //77[degrees C]
  258. 0x2635, //78[degrees C]
  259. 0x2550, //79[degrees C]
  260. 0x2471, //80[degrees C]
  261. 0x2397, //81[degrees C]
  262. 0x22C2, //82[degrees C]
  263. 0x21F4, //83[degrees C]
  264. 0x212A, //84[degrees C]
  265. 0x2065 //85[degrees C]
  266. };
  267. #endif
  268. DELAY_COMMON measure_temp;
  269. int8_t ctr_temperature[THER_NUM_CON];
  270. //const static unsigned char p_TempeNum= THER_NUM_CON;
  271. uint8_t temp_index = 0;
  272. void getTemperature(void)
  273. {
  274. unsigned short count,adc_temp = 0;
  275. uint8_t ch_no = 0;
  276. Mea_Temp_Enable(1);
  277. temp_index = (++temp_index)%THER_NUM_CON;
  278. switch(temp_index)
  279. {
  280. case 0:
  281. ch_no = adc_temperatrue_0;
  282. break;
  283. case 1:
  284. ch_no = adc_temperatrue_1;
  285. break;
  286. default:
  287. temp_index = 0;
  288. ch_no = adc_temperatrue_0;
  289. break;
  290. }
  291. // get adc value
  292. if(adc_getResult_6t(ch_no, &adc_temp) != 1)
  293. {
  294. goto error;
  295. }
  296. Mea_Temp_Enable(0);
  297. adc_temp <<= 4;
  298. // find 温度通过adc值查表
  299. for(count=(T_END-1u);count>0u;count--)
  300. {
  301. if(adc_temp <= T_PCB_Table[count] )
  302. {
  303. ctr_temperature[temp_index] = (int8_t)count - (int8_t)40;
  304. //adjust-start
  305. //if(thNo == 0)
  306. //res->Tadr -= 2;
  307. //adjust-end
  308. return;
  309. }
  310. }
  311. error:
  312. ctr_temperature[temp_index] = 0u;
  313. return;
  314. }
  315. void Measure_Temprature_Initial(void)
  316. {
  317. _Measure_Temprature_Initial();
  318. //
  319. measure_temp.set = 1;
  320. measure_temp.count = 0;
  321. memset(&ctr_temperature,0x00,sizeof(ctr_temperature));
  322. for(uint8_t i = 0; i < THER_NUM_CON;i++)
  323. getTemperature();
  324. }