打印
[demo程序]

NV32F10x 内部温度传感器测温示例(官方例程)

[复制链接]
1036|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
maninman1981|  楼主 | 2017-6-25 18:50 | 只看该作者
1.1 ADC 模块初始化与读数
ADC 初始化时, 为提高测量精度, ADC 时钟频率不能超过 1MHZ。 在读取 Bandgap 数值之前要对
PMC_SPMSC1 寄存器进行配置, 使能带隙缓冲区, 具体配置如下;
void PMC_EnableBandgap(PMC_Type *pPMC)
{
pPMC->SPMSC1 |= PMC_SPMSC1_BGBE_MASK;
}

使用特权

评论回复
板凳
maninman1981|  楼主 | 2017-6-25 18:51 | 只看该作者
1.2 计算当前电压值 VDD
当前电压值值计算公式如下;
VDD=ADCvd*Tbg/ADCbg;
ADCvd: VDD 对应的 ADC 满量程值, 由选择的转换模式决定, 当选择 10 位转化时 ADCvd 的值就是 2^10 -1。
ADCbg: ADC 读取的 Bandgap 值
Tbg: 为 Bandgap 的值,其取值范围为 1.1~1.8, 经典值为 1.135
注; 为提高测量温度精准度, Tbg 的值是可以微调的, 可通过电压测量当前实际输入值, 对 Tbg 的数值进行微调。

使用特权

评论回复
地板
maninman1981|  楼主 | 2017-6-25 18:51 | 只看该作者
1.3 计算温度传感器电压值 Vtemp
当前温度下, 温度传感器电压值计算公式如下所示;
Vtemp=ADCtemp*VDD/ADCvd
ADCtemp : ADC 读取当前温度下温度传感器通道的值。

使用特权

评论回复
5
maninman1981|  楼主 | 2017-6-25 18:53 | 只看该作者
1.4 计算温度
计算当前温度 Temp 的公式如下所示;
Temp=25-(Vtemp25-Vtemp)/M
Vtemp25: 25 度时温度传感器对应的电压值, Vtemp25=1.419V。 当 Vtemp>Vtemp25 时表示当前温度低于 25 度, 当 Vtemp<Vtemp25 时表示当前温度高于 25 度
M: 温度相对电压变化率, 当温度大于 25 度时,M=-3.65mv/℃,当温度小于 25 度时 M=-3.4mv/℃

使用特权

评论回复
6
maninman1981|  楼主 | 2017-6-25 18:54 | 只看该作者
1.5 例程
int main (void)
{
float Vtemp,Temp,VDD;
int32_t ADCbg;
int32_t ADCtemp;
float Tbg =1.118
ADC_ConfigType sADC_Config = {0};
sysinit()
UART_WaitTxComplete(TERM_PORT);
sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_8; /* 初始化 ADC 模块 */
sADC_Config.u8ClockSource = CLOCK_SOURCE_BUS_CLOCK;
sADC_Config.u8Mode = ADC_MODE_10BIT;
sADC_Config.sSetting.bLongSampleEn=1;
ADC_Init( ADC, &sADC_Config);
PMC_EnableBandgap(PMC); //使能带隙缓冲区
ADCbg=ADC_PollRead(ADC,ADC_CHANNEL_AD23_BANDGAP);//读取带隙通道 ADC 值
ADCtemp=ADC_PollRead(ADC,ADC_CHANNEL_AD22_TEMPSENSOR);//读取温度传感器通道
ADC 值
VDD=(float)(1023*1.111/ADCbg);//计算当前电压值
Vtemp=(float)(ADCtemp*VDD/1023);//计算温度传感器电压值
//Vtemp=(float)(ADCtemp*3.3/1023);
/*计算当前温度值*/
if (Vtemp>1.419)
{
Temp=25-((Vtemp-1.419)/0.0034);
} e
lse
{
Temp =25-((Vtemp-1.419)/0.00365);
} p
rintf("Vbg=%d,VDD=%f\n",ADCbg,VDD);
printf ("ADCtemp=%d,Vtemp=%f,Temp=%f\n",ADCtemp,Vtemp,Temp);
}

使用特权

评论回复
7
haokeer| | 2017-6-27 15:59 | 只看该作者
这样测量的温度误差有多大,精度是多少呢?

使用特权

评论回复
8
16号哨兵| | 2017-6-29 17:40 | 只看该作者
haokeer 发表于 2017-6-27 15:59
这样测量的温度误差有多大,精度是多少呢?

在数据手册上没找到说明,精度应该不会很高

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

205

帖子

0

粉丝