【GD32F310开发板试用】ADC 规则组连续采样

news/2024/12/5 8:13:32/

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。

ADC 简介及特点

器件中集成了一个 12 位 2.86 MSPS 多通道 ADC。 一共有19个多路复用通道:16个外部通道,1个内部温度传感器通道(VSENSE)、1 通道用于内部参考电压 (VREFINT) 和 1 通道用于电池电压
(VBAT)。
输入电压范围在 VSSA 和 VDDA 之间。 片上硬件过采样方案提高了性能,同时减轻了相关的计算负担中央处理器。 模拟看门狗模块可用于检测通道,这些通道需要保持在特定的阈值窗口内。 一个可配置的通道管理块可以是用于以单次、连续、扫描或非连续模式执行转换,以支持更高级的使用。

ADC 可由通用定时器 TIMER2、TIMER14 和高级定时器 (TIMER0) 产生的事件触发。 温度传感器可用于产生随温度线性变化的电压。 它在内部连接到 ADC_IN16 输入通道,用于将传感器输出电压转换为数字值。

  • 12位SAR ADC的转换速率高达2.86 MSPS
  • 12位、10位、8位或6位可配置分辨率
  • 硬件过采样比可调从2到256x提高分辨率到16位
  • 输入电压范围:VSSA-VDDA (2.6 ~ 3.6 V)
  • 温度传感器

开发环境&参考文档

  • Keil-MDK 5.34
  • Windows10
  • 固件库-GD32F3x0_Firmware_Library_V2.2.0
  • GD32F310xx-数据手册-Rev1.1
  • GD32F3x0-用户手册-Rev2.5
  • GD32F3x0-固件库使用指南-Rev1.2

代码部分

代码部分延续使用了串口打印及串口重定向的代码,这里不在贴出

ADC 初始化

adc.h 文件

#ifndef _ADC_H_
#define _ADC_H_#include "gd32f3x0.h"
#include "systick.h"void HW_AdcInit(void);
uint16_t Adc_ReadValue(void);#endif

adc.c 文件

#include "adc.h"
#include "Printf.h"void HW_AdcInit(void)
{rcu_periph_clock_enable(RCU_ADC);rcu_periph_clock_enable(RCU_GPIOA);//启用外设时钟功能rcu_adc_clock_config(RCU_ADCCK_APB2_DIV4);gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_2);//设置GPIO模式adc_channel_length_config(ADC_REGULAR_CHANNEL,1);//配置通道数adc_regular_channel_config(0,ADC_CHANNEL_2,ADC_SAMPLETIME_55POINT5);//配置使用哪一个 ADC 通道//    adc_external_trigger_config(ADC_CHANNEL_1,ENABLE);// 开启 ADC 的常规通道组
//    adc_external_trigger_source_config(ADC_REGULAR_CHANNEL,ADC_EXTTRIG_REGULAR_NONE);//配置 ADC 的触发方式 此处设置为软件触发adc_data_alignment_config(ADC_DATAALIGN_RIGHT);//ADC 对齐设置为右对齐adc_special_function_config(ADC_CONTINUOUS_MODE,ENABLE);//配置 ADC 为连续模式(扫描模式只在 DMA 模式下使用)adc_enable();delay_1ms(20);adc_calibration_enable();//校准和复位校准 ADC}uint16_t Adc_ReadValue(void)
{uint16_t Value=0;adc_software_trigger_enable(ADC_REGULAR_CHANNEL);//软件触发 ADC 转换开始if(SET == adc_flag_get(ADC_FLAG_STRC)){delay_1ms(100);if(SET == adc_flag_get(ADC_FLAG_EOC)){		Value = adc_regular_data_read();}adc_flag_clear(ADC_FLAG_STRC|ADC_FLAG_EOC);	}return Value;
}

代码实现 ADC 读取

使用 ADC 的通道2(端口:GPIOA_PIN2)测量 VCC 的值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11AAL4rh-1649927981747)(/img/bVbumC)]

使用体验

  • ADC 初始化在用户手册中有初始化的流程,参照初始化流程即可配置。

  • 有一点疑问的地方就是ADC_CTL1寄存器中的 ETSRC[2:0] 的软件触发选项,目前是不用配置也不影响你的软件触发ADC转换。
    注入通道的 ETSIC[2:0] 没有测试,大致应该是一样的。


http://www.ppmy.cn/news/574603.html

相关文章

【GD32F310开发板试用】利用I2C接口通过温湿度传感器HDC1080读取当前环境温湿度

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。 非常感谢极术社区和GigaDevice给我机会可以进行GD32F310G-START开发板的试用,也感谢极术小姐姐,物流非常给力。 我拿到的开发板实…

【GD32F310开发板试用】浅谈IAR环境下GD32的插件功能

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。 首先很感谢极术社区此次的活动,之前没有接触过GD32的芯片,在工作中一直使用的ST,NXP和TI的芯片,目前由于缺芯问题,加上…

【GD32F310开发板试用】IAP升级实验

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。 什么是IAP IAP( In Application Programming)即在应用编程,可以让用户使用自己的程序对MCU的中的运行程序进行更新,而…

【GD32F310开发板试用】入门向-usart的使用及printf函数的重定向

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。 摘要 首先感谢极术社区和兆易创新公司给我这次机会,入选GD32F310K-START开发板的测评和试用。本开发板板载一块GD32F310K8T6芯片,该芯片是ARM…

C8051汇编语言递归,基于C8051F310单片机的LED灯控制器汇编语言程序调试

加 深对51单片机及其接口电路的理解,掌握定时/计数器、中断的应用编程技术及程序的调试方法。 2.实验内容 利用C8051F310单片机设计一个倒计时定时器,功能要求如下: 模式1:基本功能 主要技术指标要求如下: 1. 定时时间为9秒,定时精度为1秒 。 2. 在LED数码管上显示剩余…

【GD32F310开发板试用】使用六位半万用表测试ADC精度

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。 项目地址 https://github.com/netube99/GD32F310G_START_ADC_TEST 感谢GD32为我提供了这块精致的GD32F310G-START开发板,经过周末两天的学习与开发测试&…

【GD32F310开发板试用】rtthread移植及BSP制作(保姆级)

一、开发环境 桌面操作系统: Win10 开发软件: Keil MDKV5.36 RTOS平台: rt-thread 4.1.0 项目地址:https://gitee.com/lsslny/rt-thread/tree/gitee_master/bsp/gd32 二、任务计划 1、rt-thread 系统移植;&#xff…

GD32F310系列超值型Cortexr-M4 MCU 资料下载

GD32F310是一款基于 Arm Cortex-M4 RISC 内核的32 位通用微控制器,在增强处理能力、降低功耗和外设方面具有最佳性价比。GD32F310系列MCU最高主频可达72MHz并支持DSP指令运算。配备了16KB到64KB的内置Flash及4KB到8KB的SRAM,内核访问闪存高速零等待。为全…