AM263 通过控制片上温度传感器来支持器件的热管理。
如何访问这些传感器以获取 SOC 温度?
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.
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