打印
[方案相关]

【华大测评】05 + 内部温度传感器(OTS)测评

[复制链接]
2926|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caizhiwei|  楼主 | 2020-7-16 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      目前很多高级的MCU都自带了内部温度传感器,其原理都差不多,就是利用内部的ADC的一个内部通道采集电压数据,然后转换成温度数据。应用场景: 对于某些应用,需要监测板载温度,例如充电板,UPS电源主板等,上面一般都有一个温感,例如LM75. 利用mcu内部的OTS,可以节省BOM成本!
介绍:
       温度传感器( On-chip Temperature Sensor,以下简称 OTS)可以获取芯片内部的温度,以支持系统的可靠性操作。 OTS 提供了一组与温度相关的数字量,通过计算可以得到温度值。不使用时可以通过模块停止功能将其关闭以减少系统功耗。  

使用说明:

手册上写的很奇怪:先要使能内部低速时钟LRC,然后再启动外部或内部的高速时钟,why? 手册上也没有时钟树的说明!?
盘它:
/* OTS clock selection. */
#define OTS_CLK_SEL_XTAL            (0u) /*使用外部高速时钟*/
#define OTS_CLK_SEL_HRC             (1u) /*使用内部高速时钟*/

/* Select XTAL as OTS clock. */
#define OTS_CLK_SEL                 (OTS_CLK_SEL_HRC)

/* Select EVT_AOS_STRG as OTS trigger source. */
#define OTS_TRG_SRC                 (EVT_AOS_STRG)

/* System clock frequency in MHz. */
#define SYS_CLOCK_FREQ_MHZ          (SystemCoreClock / 1000000ul)
然后初始化:

void OtsBase_Config(void)
{
    stc_ots_init_t stcOtsInit;

    stcOtsInit.enAutoOff = OtsAutoOff_Enable;
#if (OTS_CLK_SEL == OTS_CLK_SEL_HRC)
    stcOtsInit.enClkSel = OtsClkSel_Hrc;
#else
    stcOtsInit.enClkSel = OtsClkSel_Xtal;
#endif
    stcOtsInit.u8ClkFreq = (uint8_t)SYS_CLOCK_FREQ_MHZ;

    /* 1. Enable OTS. */
    PWC_Fcg3PeriphClockCmd(PWC_FCG3_PERIPH_OTS, Enable);
    /* 2. Initialize OTS. */
    OTS_Init(&stcOtsInit);
  
#if (OTS_CLK_SEL == OTS_CLK_SEL_HRC)
    /* Enable HRC for OTS. */
    CLK_HrcCmd(Enable);
    /* Enable XTAL32 while clock selecting HRC. */
    CLK_Xtal32Cmd(Enable);
#else
    /* Enable XTAL for OTS. */
    CLK_XtalCmd(Enable);
#endif
    /* Enable LRC for OTS. */
    CLK_LrcCmd(Enable);
}
在这里我选用2种时钟源亲自测过,都是OK的。
应用场景:如果没有外部晶体,就只用内部高速时钟;如果用,那么都可以用~
效果图:


说明: 和环境室温对比,相差不多。

使用特权

评论回复
沙发
caizhiwei|  楼主 | 2020-7-16 09:52 | 只看该作者
打印温度:
void Get_CPU_Temperature(void)
{   
     if (Ok == OTS_StartGetTemp(&f_temperature, 100))
     {
          printf("CPU Temperature is %0.3f\r\n", f_temperature);
     }
}

使用特权

评论回复
板凳
caizhiwei|  楼主 | 2020-7-16 09:55 | 只看该作者
附上源码工程: hc32f460_sdk_casy.rar (1.34 MB)

使用特权

评论回复
地板
caizhiwei|  楼主 | 2020-7-20 19:07 | 只看该作者
听说温度还需要标定,才能使用~

使用特权

评论回复
5
HuangHongLun| | 2020-7-29 08:29 | 只看该作者
caizhiwei 发表于 2020-7-20 19:07
听说温度还需要标定,才能使用~

是的,这个温度误差有点大,看你测量这个温度是干什么用的,用来做热保护还是不错的。

使用特权

评论回复
6
既胜若否123| | 2022-6-13 18:29 | 只看该作者
请问ERC读出来一直是0是什么原因

使用特权

评论回复
7
yangxiaor520| | 2022-6-13 18:55 | 只看该作者
测试精度咋样?

使用特权

评论回复
8
carpsnow| | 2022-6-19 11:25 | 只看该作者
温度标定,只是为了能够产品一致性好一些

使用特权

评论回复
9
pklong| | 2022-6-20 15:23 | 只看该作者
温度传感器有什么作用呢

使用特权

评论回复
10
adolphcocker| | 2022-6-20 15:51 | 只看该作者
是ADC测量还是标定好的?

使用特权

评论回复
11
asmine| | 2022-6-26 12:13 | 只看该作者
这就是提供个参考,能评估下芯片温度

使用特权

评论回复
12
macpherson| | 2022-7-9 13:04 | 只看该作者
这个是直接转换的吗?  

使用特权

评论回复
13
qiufengsd| | 2022-7-9 13:18 | 只看该作者
这个有什么作用呢  

使用特权

评论回复
14
hearstnorman323| | 2022-7-9 13:35 | 只看该作者
测量内部温度的作用是什么呢   

使用特权

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

本版积分规则

100

主题

857

帖子

14

粉丝