This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] AM2634:如何使用热管理器模块读取芯片的内部温度

Guru**** 1788580 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1133605/faq-am2634-how-to-read-internal-temperature-of-the-chip-using-thermal-manager-module

器件型号:AM2634

AM263 通过控制片上温度传感器来支持器件的热管理。

如何访问这些传感器以获取 SOC 温度?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该器件具有两个温度传感器、每个传感器都位于器件裸片中的热点附近。 在器件裸片中的其他位置有两个额外的温度传感器。  

    需要配置(CSL_TOP_CTRL_TSENSE_CFG)寄存器以启用温度传感器。  

    //为了启用温度控制器、以下位需要复位 TMPSOFF、BGROFF、AIPOFF 和 SNSR_MX_HIZ 位

    //thermal FSM 确实以循环方式从传感器中读取数据。 该器件具有两个温度传感器、每个传感器都位于器件裸片中的热点附近。 在器件裸片中的其他位置有两个额外的温度传感器。

    //sensor_SEL 控制各个传感器 的启用/禁用- 0x00000010U (CSL_TOP_CTRL_TSENSE_CFG_SENSOR_SEL_MASK)

    //对于每个选定的传感器、FSM 需要51到54个时钟周期之间的任意值来启动序列- 0x00003600 (CSL_TOP_CTRL_TSENSE_CFG_DELAY_MASK)

    //设置 TOP_CTRL.TSENSE_CFG.ENABLE 后、温度测量开始自动启动。

    //以下代码片段配置寄存器:

    /* Unlock Top Control Space */
    SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, TOP_CTRL_PARTITION0);

    CSL_REG32_WR((CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE_CFG),
    ((CSL_REG32_RD(CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE_CFG)) & 0x0FFFF));

    CSL_REG32_WR((CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE_CFG),
    ((CSL_REG32_RD(CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE_CFG))| (0x00000010U | 0x00003600)));

    CSL_REG32_WR((CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE_CFG),
    ((CSL_REG32_RD(CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE_CFG))| 0x00000001U));

    /* Lock Top Control Space */
    SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, TOP_CTRL_PARTITION0);

    //读取相应温度值的 ADC 值- 。当特定传感器的转换正在进行时,相应的//TOP_CTRL.TSENSE*_RESULT.EOCZ 状态位设置为0x1。 转换完成后、EOCZ 位再次复位为0。

    SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, TOP_CTRL_PARTITION0);

    while(((CSL_REG32_RD(CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE0_RESULT))& CSL_TOP_CTRL_TSENSE0_RESULT_ECOZ_MASK ) != 0);

    DebugP_log("ADC Value from Sensor 1: %d\r\n", (CSL_REG32_RD(CSL_TOP_CTRL_U_BASE + CSL_TOP_CTRL_TSENSE0_RESULT)));

    SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, TOP_CTRL_PARTITION0);

    输出的获取方式如下所示:

     这些 ADC 值可解释为表6-13中 TRM 的相应温度值。 ADC 值与温度间的关系

    TRM 的第 6.2.2.3节"热管理器"中提供了这些温度传感器的其他特性

    此致

    Sri Vidya