打印
[技术手册]

芯源MCU内置温度传感器原理

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
41
芯源MCU内置温度传感器是多大的测量范围

使用特权

评论回复
42
lzbf| | 2023-6-10 11:23 | 只看该作者
由于温度传感器与芯片内部电路紧密结合,可以避免一些因外部环境影响而导致的误差,提高了系统精度和可靠性。

使用特权

评论回复
43
jtracy3| | 2023-6-10 11:28 | 只看该作者
在具体应用时需要根据需求选择合适的芯片并进行合理的设计和调试。

使用特权

评论回复
44
linfelix| | 2023-6-10 11:57 | 只看该作者
当温度过高的时候,会不会自动停机呢?

使用特权

评论回复
45
gygp| | 2023-6-10 12:03 | 只看该作者
内置了温度传感器,因此无需再连接外部传感器,减少了连接错误和干扰的可能性。

使用特权

评论回复
46
uytyu| | 2023-6-10 12:09 | 只看该作者
通过内置温度传感器,可以根据实时温度变化,灵活地调整系统控制参数,以达到更好的控制效果。

使用特权

评论回复
47
janewood| | 2023-6-10 12:38 | 只看该作者
芯源MCU内置温度传感器精度是多少?

使用特权

评论回复
48
robincotton| | 2023-6-10 13:20 | 只看该作者
MCU内置温度传感器是指在微控制器芯片内部集成有一个温度传感器模块,可以对芯片内部温度进行实时监测和反馈。

使用特权

评论回复
49
belindagraham| | 2023-6-10 17:56 | 只看该作者
无需考虑外部传感器的布局、安装和连接等问题,节约了设计时间和成本。

使用特权

评论回复
50
chenqianqian| | 2023-6-11 19:37 | 只看该作者
内置温度传感器就是接到内部ADC通道上的。

使用特权

评论回复
51
OKAKAKO| | 2023-6-11 21:05 | 只看该作者
内置温度传感器更好的检测MCU温度数据有利于功耗的控制

使用特权

评论回复
52
lulugl| | 2023-7-19 21:36 | 只看该作者
是芯片内部的温度,还是反映环境的温度呀?

使用特权

评论回复
评论
pssyx 2023-7-20 09:26 回复TA
芯片内部的温度,与环境温度密切相关。 
53
zhanan| | 2023-7-22 09:35 | 只看该作者
本帖最后由 zhanan 于 2023-7-22 09:41 编辑

用户手册中描述(L052为例):
23.10  温度传感器
CW32L052 内置温度传感器模块,传感器的输出电压随温度变化,设置 ADC 模块的采样通道为内部温度传感器,通过 ADC 测量结果可计算得到当前的环境温度。
温度传感器默认处于关闭状态,通过设置控制寄存器 ADC_CR0 的 TSEN 位域为 1,使能温度传感器。
环境温度计算公式如下:
环境温度 = T0 ×0.5 + 0.0924 × Vref ×( AdcValue – Trim )
其中:
Vref 是当前 ADC 模块的参考电压,取值为 1.5V 或 2.5V。
T0 是8位的初始校准温度值,记录在芯片的FLASH存储器中,其地址是0x0010  0A09,单位是0.5摄氏度,
读取出来的值需要除以 2,才是实际的温度。
AdcValue 是 ADC  模块测量温度传感器输出电压的 ADC 转换结果,取值范围为 0 ~ 4095。
Trim 是 16 位的校准值,计算时需要从芯片的 FLASH 存储器中读出,其存放地址如下表所示……

问题:Trim 值比 AdcValue 可能小,也可能大,大的话( AdcValue – Trim )的结果是负数。上述公式是数学意义上的公式,非编程公式。编写手册时,最好能写清楚这一点。详见  https://bbs.21ic.com/icview-3274294-1-1.html

使用特权

评论回复
54
zhanan| | 2023-7-22 09:59 | 只看该作者
@pssyx 库文件温度计算公式是错的
/**
* @brief
*        读取ADC参考电压1.5V时的温度传感器的测量温度
*
* @param fAdcTsDegree
*/
void ADC_GetTsVref1V5(float *fAdcTsDegree)
{
    uint16_t u16AdcResult;
    uint8_t temp1;
    uint16_t temp2;
    temp1 = *((uint8_t*) (ADDR_T0));
    temp2 = *((uint16_t*) (ADDR_TRIM_1P5));
    /*Caution: Must select ADC_GetSqr0Result()~ADC_GetSqr7Result() instead of ADC_GetConversionValue() if using ADC_SQR convertion.
    * ADC single channel convertion is default.
    */
    u16AdcResult = ADC_GetConversionValue();
    //ADC_GetSqr0Result(&u16AdcResult); //Using ADC_SQR0.
    //ADC_GetSqr1Result(&u16AdcResult); //Using ADC_SQR1.
    //ADC_GetSqr2Result(&u16AdcResult); //Using ADC_SQR2.
    //ADC_GetSqr3Result(&u16AdcResult); //Using ADC_SQR3.
    //ADC_GetSqr4Result(&u16AdcResult); //Using ADC_SQR4.
    //ADC_GetSqr5Result(&u16AdcResult); //Using ADC_SQR5.
    //ADC_GetSqr6Result(&u16AdcResult); //Using ADC_SQR6.
    //ADC_GetSqr7Result(&u16AdcResult); //Using ADC_SQR7.
    *fAdcTsDegree = temp1 * 0.5f + COEFF_TS * 1.5f * (u16AdcResult - temp2);
}

/**
* @brief
*        读取ADC参考电压2.5V时的温度传感器的测量温度
*
* @param fAdcTsDegree
*/
void ADC_GetTsVref2V5(float *fAdcTsDegree)
{
    uint16_t u16AdcResult;
    uint8_t temp1;
    uint16_t temp2;
    temp1 = *((uint8_t*) (ADDR_T0));
    temp2 = *((uint16_t*) (ADDR_TRIM_2P5));
    /*Caution: Must select ADC_GetSqr0Result()~ADC_GetSqr7Result() instead of ADC_GetConversionValue() if using ADC_SQR convertion.
    * ADC single channel convertion is default.
    */
    u16AdcResult = ADC_GetConversionValue();
    //ADC_GetSqr0Result(&u16AdcResult); //Using ADC_SQR0.
    //ADC_GetSqr1Result(&u16AdcResult); //Using ADC_SQR1.
    //ADC_GetSqr2Result(&u16AdcResult); //Using ADC_SQR2.
    //ADC_GetSqr3Result(&u16AdcResult); //Using ADC_SQR3.
    //ADC_GetSqr4Result(&u16AdcResult); //Using ADC_SQR4.
    //ADC_GetSqr5Result(&u16AdcResult); //Using ADC_SQR5.
    //ADC_GetSqr6Result(&u16AdcResult); //Using ADC_SQR6.
    //ADC_GetSqr7Result(&u16AdcResult); //Using ADC_SQR7.
    *fAdcTsDegree = temp1 * 0.5f + COEFF_TS * 2.5f * (u16AdcResult - temp2);
}

使用特权

评论回复
55
pssyx| | 2023-7-24 11:42 | 只看该作者
本帖最后由 pssyx 于 2023-7-24 11:46 编辑
zhanan 发表于 2023-7-22 09:35
用户手册中描述(L052为例):
23.10  温度传感器
CW32L052 内置温度传感器模块,传感器的输出电压随温度变化 ...

Hi,我的测试结果是ok的,浮点计算时,它会自动进行数据类型转换。请参见附图,已经将TS的ADC转换值强制设为0,手工计算的温度值为50*0.5 + 0.0924 * 2.5 * (0 - 0x523)=-278.765,与测量值相同 。

TS_2.png (370.34 KB )

TS_2.png

TS_1.png (266.93 KB )

TS_1.png

使用特权

评论回复
56
zhanan| | 2023-7-24 16:08 | 只看该作者
pssyx 发表于 2023-7-24 11:42
Hi,我的测试结果是ok的,浮点计算时,它会自动进行数据类型转换。请参见附图,已经将TS的ADC转换值强制设 ...

谢谢,给你添麻烦了。
我试了一下,确实不是问题了。挺奇怪的。

使用特权

评论回复
57
软核硬核| | 2023-8-3 11:15 | 只看该作者
每个芯片都是每次校准吗?

使用特权

评论回复
58
理想阳| | 2023-8-10 09:34 | 只看该作者
温度传感器能否测量外部的问题?

使用特权

评论回复
59
LinkMe| | 2023-8-10 09:47 | 只看该作者
内部集成了一个温度传感器,温度传感器的输出电压随VTS的温度呈线性变化。

使用特权

评论回复
60
小夏天的大西瓜|  楼主 | 2023-8-26 22:38 | 只看该作者
内置温度传感器确实还是比较靠谱的

使用特权

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

本版积分规则