5691|5

7090

帖子

11

TA的资源

版主

楼主
 

【GD32F310G-START】ADC获取片内温度并显示 [复制链接]

【GD32F310G-START】HELLO WORLD - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)

【GD32F310G-START】OLED之HELLO EEWORLD——硬件I2C - GD32 MCU - 电子工程世界-论坛

【GD32F310G-START】SPI驱动ST7735 - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)

【GD32F310G-START】硬件SPI驱动ST7735 - GD32 MCU - 电子工程世界-论坛 (eeworld.com.cn)

 

adc 是常用的外设之一,今天根据例程获取片内温度值,并用LCD屏显示:

1、初始化ADC:

/*!
    \brief      初始化ADC
    \param[in]  none
    \param[out] none
    \retval     none
*/
void my_adc_init(void)
{
  /*   开启时ADC时钟       */
    rcu_periph_clock_enable(RCU_ADC);
    /* config ADC clock */
    rcu_adc_clock_config(RCU_ADCCK_APB2_DIV6);
    /* ADC channel length config */
    adc_channel_length_config(ADC_INSERTED_CHANNEL, 2U);
    
  /* ADC temperature sensor channel config */
    adc_inserted_channel_config(0U, ADC_CHANNEL_16, ADC_SAMPLETIME_239POINT5);
    /* ADC internal reference voltage channel config */
    adc_inserted_channel_config(1U, ADC_CHANNEL_17, ADC_SAMPLETIME_239POINT5);
  
   /* ADC trigger config */
    adc_external_trigger_source_config(ADC_INSERTED_CHANNEL, ADC_EXTTRIG_INSERTED_NONE);
    /* ADC data alignment config */
    adc_data_alignment_config(ADC_DATAALIGN_RIGHT);
    /* ADC SCAN function enable */
    adc_special_function_config(ADC_SCAN_MODE, ENABLE);
    /* ADC temperature and Vrefint enable */
    adc_tempsensor_vrefint_enable();

    adc_external_trigger_config(ADC_INSERTED_CHANNEL, ENABLE);

    /* enable ADC interface */
    adc_enable();
    delay_1ms(1U);

    /* ADC calibration and reset calibration */
    adc_calibration_enable();
}

2、获取温度:

float get_gd32f310g_temper(void)
{
    float temperature;
    adc_software_trigger_enable(ADC_INSERTED_CHANNEL);

    /* value convert */
    temperature = (1.45f - ADC_IDATA0 * 3.3f / 4096) * 1000 / 4.3f + 25;
    return temperature;

}

3、在主循环里获取温度并刷到LCD屏上:

main.c

#include "gd32f3x0.h"
#include "gd32f310g_eval.h"
#include "my_i2c.h"
#include "systick.h"
#include "ssd1306.h"
#include "lcd.h"
#include "lcd_init.h"
#include "adc.h"
uint8_t i2c_transmitter[16];

/*!
  \brief   main function
  \param[in]  none
  \param[out none
  \retval none
 */
int main(void)
{
    
  float temper_val;
  uint8_t str_temper[10];
  systick_config();
//  my_i2c0_init();
 // oled_display_test();
  LCD_Init();//LCD初始化
	LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
	LCD_ShowString(12,0,"GD32F320G",WHITE,BLUE,32,0);
  LCD_ShowString(18,36,"EEWORDL",WHITE,BLUE,32,0);
  LCD_ShowString(16,72,"2022-5-7",BLACK,BLUE,32,0);
  LCD_ShowString(12,100,"gd32f310g_adc_demo",RED,BLUE,16,0);
  my_adc_init();
    /* infinite loop */
    while(1)
    {
      temper_val = get_gd32f310g_temper();
      sprintf(str_temper,"T:%.2f  ",temper_val);
      LCD_ShowString(18,36,str_temper,WHITE,BLUE,32,0);
      delay_1ms(500);
    }
}

显示效果:

【总结】通过ADC的例程可以轻松的搞定,但是片内温度只反映MCU的温度,跟外环境的温度不成正比,所以还外用外置传感器来获取温度才行。


 

此帖出自GD32 MCU论坛

最新回复

确实   详情 回复 发表于 2022-5-24 09:25
点赞 关注(1)
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

1

此帖出自GD32 MCU论坛

点评

你好,谢谢我的观赏。给您提个建议,认真回复20个字以上有积分奖励,还有威望分。  详情 回复 发表于 2022-5-8 07:55
 
 
 

回复

7090

帖子

11

TA的资源

版主

板凳
 

你好,谢谢我的观赏。给您提个建议,认真回复20个字以上有积分奖励,还有威望分。

此帖出自GD32 MCU论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

4
 

赞!私以为加一个EOIC标志位的判定更加合理,但是实际上,对于此处温度测量已经能够实现效果了!

此帖出自GD32 MCU论坛

点评

问了兆易的,说这个温度只能反映片内温度,测量外界的温度没有实际意义。  详情 回复 发表于 2022-5-22 20:47
 
 
 

回复

7090

帖子

11

TA的资源

版主

5
 
javnson 发表于 2022-5-22 20:35 赞!私以为加一个EOIC标志位的判定更加合理,但是实际上,对于此处温度测量已经能够实现效果了!

问了兆易的,说这个温度只能反映片内温度,测量外界的温度没有实际意义。

此帖出自GD32 MCU论坛

点评

确实  详情 回复 发表于 2022-5-24 09:25
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

6
 
lugl4313820 发表于 2022-5-22 20:47 问了兆易的,说这个温度只能反映片内温度,测量外界的温度没有实际意义。

确实

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表