3807|7

92

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【GD32L233C-START评测】+ADC采集PT1000获得温度 [复制链接]

  1. 前言

前面已经把显示和串口打印数据调试完成,这样对接下来的工作就很有利,可以很直观的看见ADC采样的值。我们选用的PA1,是ADC1通道。准备用内部的VREFINT参考电压来校准采样值。默认这个电压是1.2V

 

 

  1. 初始化ADC功能

 

void adc_config(void)

{

adc_special_function_config(ADC_SCAN_MODE, ENABLE);

    /* ADC data alignment config */

    adc_data_alignment_config(ADC_DATAALIGN_RIGHT);   //ADC值靠右对其

    /* ADC channel length config */

//    adc_channel_length_config(ADC_REGULAR_CHANNEL, 1U);  //通道长度设置?

    /* ADC channel length config */

    adc_channel_length_config(ADC_INSERTED_CHANNEL, 2);

 

    /* ADC temperature sensor channel config */

    adc_inserted_channel_config(0U, ADC_CHANNEL_1, 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_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_NONE);  //软件触发方式

    /* ADC external trigger config */

    //adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE);

adc_external_trigger_config(ADC_INSERTED_CHANNEL, ENABLE);

adc_channel_16_to_19(ADC_INTERNAL_CHANNEL_SWITCH, ENABLE);  //使能内部参考电平通道

 

    /* enable ADC interface */

    adc_enable();

    delay_1ms(1U);

    /* ADC calibration and reset calibration */

    adc_calibration_enable();

}

  1. 获取PT1000采集温度值

初始化函数在例程的基础上修改了一下,采集两路ADC值。

  1. PA1 ADC1的值
  2. 2. 内部参考电平值

/**********************************************************

 *

 * 函数名: static uint32_t adc_get_PT1000_value( void )

 * 功  能: 获取PT1000电压

 * 说  明:

 * 设计人:

 * 设计时间:

 * 入口参数:无

 * 出口参数:无

***********************************************************/

static uint32_t adc_get_PT1000_value( void )

{

uint32_t voltage = 0;

uint32_t temp0,temp1;

 

adc_software_trigger_enable(ADC_INSERTED_CHANNEL);

 

while (!adc_flag_get(ADC_FLAG_EOC));   //ADC_FLAG_EOIC

adc_flag_clear(ADC_FLAG_EOC);

 

temp0 = ADC_IDATA0; //PA1端口

temp1 = ADC_IDATA1; //内部参考电压通道 1.2V

 

printf("PA1端口为:%4d \r\n",temp0);

printf("内部参考电压为:%4d \r\n",temp1);

 

voltage = temp0*120/temp1; //--对应实际电压*100

printf("电压为:%4d \r\n",voltage);

return voltage;

}

通过软件触发,然后去读寄存器的值,就能获得当前ADC的值。

然后对采集值进行平均计算,减少数据误差

 

通过串口打印数据获取采集信息。

LCD屏上进行显示。

 

4.下一步计划

准备试一下FMC功能,通过内部FLASH保存一些传感器是参数值,例如传感器编组,报警上下限等。。。

此帖出自GD32 MCU论坛

最新回复

电路是怎么实现的,直接电阻分压吗?   详情 回复 发表于 2022-2-22 16:27
点赞 关注
 

回复
举报

9716

帖子

24

TA的资源

版主

沙发
 

ADC前端加Buffer了吗?

此帖出自GD32 MCU论坛

点评

没  详情 回复 发表于 2022-2-14 08:09
 
 
 

回复

92

帖子

1

TA的资源

一粒金砂(中级)

板凳
 
littleshrimp 发表于 2022-2-13 19:44 ADC前端加Buffer了吗?

此帖出自GD32 MCU论坛
 
 
 

回复

9716

帖子

24

TA的资源

版主

4
 

SAR 直接测量PT100对精度影响大吗?

此帖出自GD32 MCU论坛

点评

感觉还行,主要看参考电平的电压稳不稳  详情 回复 发表于 2022-2-15 08:36
PT1000  详情 回复 发表于 2022-2-14 08:49
 
 
 

回复

9716

帖子

24

TA的资源

版主

5
 
littleshrimp 发表于 2022-2-14 08:47 SAR 直接测量PT100对精度影响大吗?

PT1000

此帖出自GD32 MCU论坛
 
 
 

回复

92

帖子

1

TA的资源

一粒金砂(中级)

6
 
littleshrimp 发表于 2022-2-14 08:47 SAR 直接测量PT100对精度影响大吗?

感觉还行,主要看参考电平的电压稳不稳

此帖出自GD32 MCU论坛

点评

电路是怎么实现的,直接电阻分压吗?  详情 回复 发表于 2022-2-22 16:27
 
 
 

回复

9716

帖子

24

TA的资源

版主

7
 
laocuo1142 发表于 2022-2-15 08:36 感觉还行,主要看参考电平的电压稳不稳

电路是怎么实现的,直接电阻分压吗?

此帖出自GD32 MCU论坛

点评

是的,PT1000阻值和线性度都不错  详情 回复 发表于 2022-2-23 07:53
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

92

帖子

1

TA的资源

一粒金砂(中级)

8
 
littleshrimp 发表于 2022-2-22 16:27 电路是怎么实现的,直接电阻分压吗?

是的,PT1000阻值和线性度都不错

此帖出自GD32 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
【EEWORLD模块整理】+tlc2543(A/D)

今年我用的模块资料 已经证实好用

FPGA DCM时钟管理单元的理解

看Xilinx的Datasheet会注意到Xilinx的FPGA没有PLL,其实DCM就是时间管理单元。 --------------------------------------------- ...

电烙铁的使用小技巧

本人原创——乃自己当时查阅的资料和自己的一点点经验而写成,如有错误请多指教! 首先要说明的是,使用电烙 ...

ubuntu下修改内核发生“ncurses libraries“错误(解决方法)

BSEC@bsec-server:~/kernel/Kernel$ make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC script ...

在屏幕上显示大写字母DMH的VGA控制器

本帖最后由 PuesueDream 于 2015-7-22 17:18 编辑 基于ise14.7平台,用Nexys3开发板弄了一个显示程序。程序包含六部分 首 ...

msp430f149波特率设置

本帖最后由 灞波儿奔 于 2020-1-10 23:14 编辑 TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的 ...

为什么给一个变量赋值0时,直接写=0,而给它赋值0xffffffff时要写成=0xffffffffu

为什么给一个变量赋值0时,直接写*ram=0即可,而给它赋值0xffffffff时要写成*ram=0xffffffffu, 以下是具体的代码 /****** ...

报名提醒:最后几小时,100套价值390元平头哥RISC-V生态开发板免费送~

最后几小时啦,想要的网友速速来~100套价值390元平头哥RISC-V生态开发板——RVB2601来袭,现在提交创意,即有机会免费 ...

在现代计算机上运行虚拟Mac Quadra 900

682909 macintosh.js 是一个模拟 1991 年 Macintosh Quadra 900 和摩托罗拉 CPU 的虚拟机,它完全用 JavaScript 编写(因此请 ...

反激电源辅助供电绕组串联电阻

看到很多反激电源辅助绕组串联电阻的,如下图电阻Rvcc,想问一下这个电阻的作用是什么?

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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