STM32CUBEIDE ADC内部温度值L476

adc不用DMA搞了一段时间,发现adc通道和内部一些传感器是连在一起的,之前也听人说过这个事情。今天我就实验了一下。
在网上查了一下这方面的资料,发现都是废话
分为两步

  1. 获取ADC原始值
  2. 换算ADC原始值与温度关系
    第一步,略。
    第二部,查看手册,手册中温度传感器部分说,厂家校准的值存在系统存储器中。可以直接对地址进行读取。
    STM32CUBEIDE ADC内部温度值L476_第1张图片
    IDE读取方式
    我使用IDE连接后直接对地址进行查看,不知道相同型号的片子,内部值是不是相同。
    STM32CUBEIDE ADC内部温度值L476_第2张图片
    还是要夸ST做的很用心的!点击绿色加号,添加查看地址后得到上图,这个样看不直观,调一下格式,一个字节一个字节的。
    STM32CUBEIDE ADC内部温度值L476_第3张图片
    鼠标悬浮一会就会出现地址,我们可以从下图看到我们查看的地址值。
    STM32CUBEIDE ADC内部温度值L476_第4张图片
    代码读取方式
uint16_t tem[10] = {0};
tem[0] = (uint16_t)*(uint32_t*)(0x1FFF75A8);

STM32CUBEIDE ADC内部温度值L476_第5张图片

我们按照官方的地址得到了30℃时TS_CAL1 = 0x0402,110℃时TSCAL2 = 0x0513,于是得到二元一次方程组
TS_CAL1×k + b = 30
TS_CAL2×k + b = 110

解:略
之前我们得到我ADC原始值 -> 实际温度 = ADC原始值 × k + b
实验和天气预报的温度相差1度,官方手册中明确说:这个是很好的线性关系,看谁头铁当温度传感器用

STM32L151实战

我们直接查官方的两个手册,RM0038如下图
STM32CUBEIDE ADC内部温度值L476_第6张图片
DS6876如下图
STM32CUBEIDE ADC内部温度值L476_第7张图片
需要注意的几点

  1. 采样时间要长一些
  2. 数值计算时浮点数精准一点

附录

官方文档例子
STM32CUBEIDE ADC内部温度值L476_第8张图片
STM32CUBEIDE ADC内部温度值L476_第9张图片

你可能感兴趣的:(STM32)