一、简介
本文主要介绍如何在 LKS_EVB_MCU453_V2.0 开发板上通过 ADC 读取芯片温度。芯片内置温度传感器,在 -40~85℃ 范围内精度为 2℃。85~105℃ 范围内精度为 3℃。温度传感器信号连至 ADC2 的通道14。
硬件平台:LKS_EVB_MCU453_V2.0 开发板、LPCLINK2 Debugger
软件平台:Keil
参考例程:LKS32MC45x_PeripDemo_v2.9

图1 LKS 板
图2 LPC
二、Demo 示例
按照如图所示路径双击打开Demo 文件。

图3
图4 出自 LKS32MC45x_PeripDemo_v2.9
2.1 主函数
连续地采集温度传感器的数据并计算出温度值储存在 TEMP 这个变量中,所以我们可以在调试的时候,选择 TEMP 这个变量到窗口就可以观测到温度数值的变化。ADC_Trigger(ADC2) 就是软件触发 ADC 采样函数。软件触发寄存器 ADCx_SWT 写入数据为 0x5AA5 时,产生一次软件触发。下面的式子是为 ADC 采样结果进行转换计算。详情如下:

图5 出自 LKS32MC45x_UM_v1.54
图中 X 轴为温度传感器的温度信号所对应的 ADC 值,Y 轴为传感器所处的温度。
测温时,按照如上要求配置传感器相关寄存器,并得到 ADC 值后,将 ADC 值作为 X 代入公式:
y=-0.1398x+342.57。求得的 Y 值即为此时的温度。
公式中有两个系数,a=-0.1398, b=342.57。对于不同的芯片,b 系数的值是不一样的。芯片出厂前会经过温度标定,将每颗芯片所对应的系数 b 写入 flash 的 info 区,地址为 0x00000944。存储时,会将 b 系数小数点右移一位(乘10)存入 info 区,小数点后第二位不进行保存。
同时为方便客户操作,系数 a 也会存入 flash info 区,地址为 0x00000940。存储时,将 a 系数小数点右移四位(乘10000)存入 info 区。
实际使用中,应从 flash info 区对应地址读出 a/b 系数,同时将读取到的 ADC 测到的当下温度传感器值代入公式,即可计算得到当下温度值,单位为摄氏度。计算时,需注意系数 a/b 在保存时小数点的位移数,即a 系数应除以 10000,b 系数除以 10。
注意,上述计算公式,基于 ADC 右对齐实现。若换成左对齐,ADC 采样值需右移 2 位后,才能代入上述公式。
2.2 函数 Hardware_init()
进入函数 Hardware_init(),配置硬件初始化相关内容

图6出自 LKS32MC45x_PeripDemo_v2.9
这段代码是一个硬件初始化函数,主要的步骤包括:
2.2.1中断和使能配置:
__disable_irq();禁用所有中断。这是为了确保在进行硬件初始化时,不会有中断打断当前的初始化过程,从而避免潜在的竞争条件和不一致的状态。SYS_WR_PROTECT = 0x7a83; 解除对系统寄存器的写保护,以便可以对系统寄存器进行配置和初始化。依据来自以下。配置完后继续打开写保护和启用中断。

图7 出自LKS32MC45x_UM_v1.54
2.2.2 ADC初始化ADC2_init():
用于初始化 ADC2 的自定义函数。通常涉及配置其工作模式、采样率、输入通道、分辨率等参数。之后用 SoftDelay(100) 延时 100us 等待初始化完成。

图8 出自LKS32MC45x_PeripDemo_v2.9
因为此篇为软件触发,ADC中断使能和 ADC 触发 DMA 使能都关闭。
采样数据对齐方式为左对齐。
ADC 高增益使能。
选择过采样触发模式。
过采样率,实际结果为 1 次采样后的平均值。
连续采样模式关闭。
触发一次采样一次。
第一段采样一个通道,第二段采样一个通道。
ADC 单段触发模式。
不使用硬件触发采样。
ADC 模拟看门狗 0 不监测任何数据。
ADC 模拟看门狗 1 不监测任何数据。
温度传感器信号连至 ADC2 的通道 14。所以选择 ADC2 DAT0 通道 14 。
三、硬件连接方式

图9 出自LKS_EVB_MCU453_V2.0
LKS 采用 SWD 接口方式连接,在板子上有接出 SWD 烧录口如图所示。SWD 的接口定义如图所示,按照如图进行连接。
3.1 LPC Debugger方式

图10
如图所示,LPC Debugger 板和 LKS_EVB_MCU453_V2.0 板连接,通过板上接口 GND、DIO、CLK、3.3V 与 SWD 的对应接口相连。这是本文选择的调试方式。
四、编译和下载
图11
- 左:构建目标文件。
- 右:构建所有文件。
- 下载代码到闪存。
- 启动调试。
先按 1 编译,2下载到板上即可。
五、实验现象

图12 出自 LKS32MC45x_PeripDemo_v2.9
进入到调试界面,点击图 11 的 ③,然后按照图 12 所示把 Temp 选中右键添加到 watch1 窗口。

图 13 出自 LKS32MC45x_PeripDemo_v2.9
可以看到右边出现了 TEMP 的 Value 一栏,显示的就是 ADC 监测到的温度值。

图 14 出自 LKS32MC45x_PeripDemo_v2.9
适当增加 MCU温度 ,可以看到 TEMP 实时监测的温度升高了一点。
六、总结
ADC 读取芯片温度可以帮助我们实时监测芯片的工作温度,确保系统的稳定性和可靠性。
七、参考文献
[1] LKS32MC45x_DataSheet_V1.54
[2] SDK:LKS32MC45x_PeripDemo_v2.9
[3] 原理图:LKS_EVB_MCU453_V2.0
[4] LKS32MC45x_UM_v1.54
欢迎在博文下方留言评论,我们会及时回复您的问题。
如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com 作者:小梨
更多资讯,请扫码关注我们!
