# p9 U* [) _& D9 z6 K7 q
1 U; g* X' B. I E' f% G% ]- <p>计算公式</p><p>温度= ((TS_ADC_DATA - TS_CAL1)) * ( TS_CAL2_TEMP - TS_CAL1_TEMP)) / ( TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP</p>
复制代码 其中:3 T: \7 j2 @& b6 q0 `) \
TS_ADC_DATA =温度传感器通过ADC测量的原始数据& `' A/ t9 z. U# i2 o
Avg_Slope = (TS_CAL2 - TS_CAL1) / ( TS_CAL2_TEMP - TS_CAL1_TEMP) = 2.5(数据手册有)
w' s: s. H2 w% [* z7 A& n9 _! {, @+ }" D. c
TS_CAL1 =等效在温度的TS_ADC_DATA(ADC转换的AD数值); _ S+ S9 @2 w1 ]) _
TEMP_DEGC_CAL1(出厂校准)4 u: M3 \" E: M- U; ^4 e
TS_CAL2 =等效在温度的TS_ADC_DATA8 f; U# b) l9 Z6 e7 z4 C
TEMP_DEGC_CAL2(工厂校准)
/ ~) ]1 {* n2 _. Y% |- Q
$ N7 q) v' }0 I5 a; j3 P2 K; ?/ W8 P0 ~. Y+ l
所以上面的公式为
! b" U, I' H( w4 M7 Y
: [' U; ^1 g! O, Q, r$ ^0 l- <p>温度=(TS_ADC_DATA - TS_CAL1)*(1/2.5)+TS_CAL1_TEMP</p><p>6 j' X7 k& J6 `* l; C3 F6 X
- </p><p> =(TS_ADC_DATA - TS_CAL1)*(1/2.5)+30</p>
复制代码 3 G, V) d8 w2 v, @( W
上面说4 [3 G! T5 y: h" E* Z
- <p> TS_ADC_DATA =温度传感器通过ADC测量的原始数据</p><p> (也就是芯片出厂时原始AD值,比如12位AD,1.43v对应1774AD值)</p><p> (4095/3.3)*1.43 = 1774(AD值)</p><p> (2.5V对应1774,这是芯片内部电阻分压读的AD值对应1.43V,这里不做解释)</p>
复制代码 . z. L* l) D$ l5 V7 _* i. K5 y- Z
5 V$ A! i$ o4 PTS_CAL1 =等效在温度的TS_ADC_DATA(ADC转换的AD数值)# c5 c7 h0 ~2 }' V
TS_CAL1就是为自己捕抓到的当前AD值
8 V& [9 z9 I1 b8 r) @$ b! z* ^& I, Q o* X
所以最终温度式子为:
+ q- B& z% N& M( I+ H
6 i# E2 m4 [( F( A' c- \- <p>温度=(TS_ADC_DATA - TS_CAL1)*(1/2.5)+30</p><p> = (1774 - 当前温度捕抓到的AD值)*(1/2.5)+30</p><p> =(1774 - g_stADC.uiADTemp)*(1/2.5)+30</p><p> 注: g_stADC.uiADTemp为你捕抓到的当前温度的AD值</p>
复制代码 R2 b/ j; _7 n& y" z4 n, Z
+ _! J7 o/ G, ^1 r
6 Y" E% I) q" i& @, [ |
计算结果是错的