打印
[STM32WB]

【STM32WB09KE测评】+ADC测试之获取芯片温度值

[复制链接]
43|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stb988|  楼主 | 2024-11-17 23:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创#           
          STM32WB09KE芯片是自带芯片温度测量的,本交测试体验就来获取一下芯片温度,但不知道什么原因,计算出来的数据与实际误差很大,但我用热风枪吹芯片,采集到的adc值是有变化的,具体什么原因,暂时还不得清楚,下面先记录一下获取温度值的过程,望大侠指点一下。
          要获取温度,首先用stm32 cubemx生成初始化代码。adc采用dma方式获取。下面看配置图片。

接下来就是打开工程,添加代码了,首先定义两个宏
#define VDDA_APPLI           (3300UL) // mV
#define ADC_BUFFER_SIZE      (1)      // Only temperature sensor data
再定义两个变量
uint32_t adc_buffer[ADC_BUFFER_SIZE]; // DMA buffer
float temperature_celsius = 0;
接着要做的就是开始DMA
    // Start ADC with DMA
    if (HAL_ADC_Start_DMA(&hadc1, adc_buffer, ADC_BUFFER_SIZE) != HAL_OK) {
        printf("ADC DMA Start Error!\n");
        Error_Handler();
    }
再开始ADC转换
      /* Start ADC group regular conversion */
    if (HAL_ADC_Start(&hadc1) != HAL_OK)
    {
      /* Error: ADC conversion start could not be performed */
      Error_Handler();
    }

最后转换成温度值
        uint32_t raw_adc_value = adc_buffer[0];

      // 计算温度
                   printf("adc: %d C\r\n", raw_adc_value);
                   printf("c30: %d C\r\n", (int32_t)*TEMPSENSOR_C30_ADDR);
                   printf("tck: %d C\r\n", (int32_t)*TEMPSENSOR_TCK_ADDR);
         int temperature = __LL_ADC_CALC_TEMPERATURE(raw_adc_value, LL_ADC_DS_DATA_WIDTH_12_BIT);

        printf("Temperature: %d C\r\n", temperature);
但最打印出来是只有几度

根据公式计算,也只有几度

问题暂时没有找到,有请朋友们指点一下。

使用特权

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

本版积分规则

40

主题

326

帖子

1

粉丝