APM32F0XX/STM32F0XX内部参考电压VREFINT反算ADC引脚电压

news2024/11/24 20:03:06

首先打开极海APM32F030x4x6x8xC 用户手册找到VREFINT。

 找到内部参考电压 VREFINT为ADC1_IN17通道

使用VREFINT必须使能VREFEN位

初始化ADC代码

void ADC_Init(void)
{
    GPIO_Config_T           gpioConfig;
    ADC_Config_T            adcConfig;

    /* Enable GPIOA clock */
    RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);

    /* ADC channel 0 configuration */
    GPIO_ConfigStructInit(&gpioConfig);
    gpioConfig.mode    = GPIO_MODE_AN;
    gpioConfig.pupd    = GPIO_PUPD_NO;
    gpioConfig.pin     = GPIO_PIN_2;
    GPIO_Config(GPIOA, &gpioConfig);

    /* Enable ADC clock */
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_ADC1);

    /* ADC configuration */
    ADC_Reset();

    ADC_ConfigStructInit(&adcConfig);
    /* Set resolution*/
    adcConfig.resolution            = ADC_RESOLUTION_12B;
    /* Set scanDir*/
    adcConfig.scanDir               = ADC_SCAN_DIR_UPWARD;
    /* Set convMode continous*/
    adcConfig.convMode              = ADC_CONVERSION_CONTINUOUS;
    /* Set dataAlign*/
    adcConfig.dataAlign             = ADC_DATA_ALIGN_RIGHT;
    /* Set extTrigEdge*/
    adcConfig.extTrigEdge           = ADC_EXT_TRIG_EDGE_NONE;
    /* Set extTrigConv*/
    adcConfig.extTrigConv           = ADC_EXT_TRIG_CONV_TRG0;
    ADC_Config(&adcConfig);

	ADC_EnableVrefint();
	ADC_DisableVbat();
    /* ADC channel Convert configuration */
    ADC_ConfigChannel(ADC_CHANNEL_2, ADC_SAMPLE_TIME_239_5);
    ADC_ConfigChannel(ADC_Channel_Vrefint, ADC_SAMPLE_TIME_239_5);

    /* Config DMA*/
    DMA_Init();

    /* Calibration */
    ADC_ReadCalibrationFactor();

    /* Enable ADC DMA*/
    ADC_EnableDMA();
    ADC_DMARequestMode(ADC_DMA_MODE_CIRCULAR);
    /* Enable ADC */
    ADC_Enable();
}

初始化DMA代码

void DMA_Init(void)
{
    /* DMA Configure */
    DMA_Config_T dmaConfig;

    /* Enable DMA clock */
    RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_DMA1);

    /* Set Peripheral Address */
    dmaConfig.peripheralAddress = ADC_DR_ADDR;
    /* Set memory Address */
    dmaConfig.memoryAddress = (uint32_t)&adcData;
    /* read from peripheral */
    dmaConfig.direction = DMA_DIR_PERIPHERAL;
    /* size of buffer*/
    dmaConfig.bufferSize = ADC_CH_SIZE;
    /* Disable Peripheral Address increase */
    dmaConfig.peripheralInc = DMA_PERIPHERAL_INC_DISABLE;
    /* Enable Memory Address increase */
    dmaConfig.memoryInc = DMA_MEMORY_INC_ENABLE;
    /* Set peripheral Data Size */
    dmaConfig.peripheralDataSize = DMA_PERIPHERAL_DATASIZE_HALFWORD;
    /* set memory Data Size */
    dmaConfig.memoryDataSize = DMA_MEMORY_DATASIZE_HALFWORD;
    /* Reset Circular Mode */
    dmaConfig.circular = DMA_CIRCULAR_ENABLE;
    /* Disable M2M */
    dmaConfig.memoryTomemory = DMA_M2M_DISABLE;
    /* set priority */
    dmaConfig.priority = DMA_PRIORITY_LEVEL_HIGHT;

    DMA_Config(DMA1_CHANNEL_1, &dmaConfig);

    DMA_Enable(DMA1_CHANNEL_1);
}

debug调试 

void ADC_MultiChannelPolling(void)
{
    float voltage;
    uint8_t index;

 
	voltage = (float)((float)adcData[0] / (float)adcData[1]) * 1.2;
	printf("ADC CH[2] = %d, voltage = %.3f V\r\n", adcData[0], voltage);
	printf("ADC CH[17] = %d, voltage = 1.2f V\r\n", adcData[1]);

    printf("\r\n");
}

主函数

int main(void)
{
    /* COM1 init*/
    APM_MINI_COMInit(COM1);

    /* ADC1 initialization */
    ADC_Init();
    ADC_StartConversion();
	printf("code start\r\n");
    while (1)
    {
        Delay(0x3FFFFF);
        ADC_MultiChannelPolling();
    }
}

串口打印如下

 3.3V的VDD供电,反算出电压3.291V.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis学习笔记--002

Redis的JAVA客户端 文章目录 Redis的JAVA客户端一、Redis的Java客户端的种类二、Jedis2.1、使用步骤2.2、Jedis连接池 三、[SpringDataRedis](https://spring.io/projects/spring-data-redis)3.1、介绍3.2、RedisTemplate3.3、SpringDataRedis使用步骤3.4、SpringDataRedis的序…

银行家算法——C语言实现

算法思路 将操作系统看作是银行家,操作系统所拥有的资源就相当于银行家所拥有的资产,进程向操作系统申请资源就相当于资产家向银行贷款,规定资产家在向银行贷款之前,先申明其所贷数额的最大值,申明之后其贷款的数额不…

深度学习-一个简单的深度学习推导

文章目录 前言1.sigmod函数2.sigmoid求导3.损失函数loss4.神经网络1.神经网络结构2.公式表示-正向传播3.梯度计算1.Loss 函数2.梯度1.反向传播第2-3层2.反向传播第1-2层 前言 本章主要推导一个简单的两层神经网络。 其中公式入口【入口】 1.sigmod函数 激活函数我们选择sigmo…

银河麒麟ky10 server sp3下载

下载路径 /操作系统/Kylin-Server-V10-SP3-General-Release-2212-X86_64.iso

(高阶) Redis 7 第15讲 布隆过滤器 BitMap篇

面试题 如何快速准备判断某一数据在海量数据中存在了解布隆过滤器吗安全网址判断,黑名单校验,识别垃圾邮件白名单校验,识别合法用户?理论 由一个初始值都为0的 bit数组和多个哈希函数构成,用来快速判断集合中是否存在某个元素 设计思想 目的减少内存占用方式不保存数据信…

巨人互动|Facebook海外户Facebook运营工具有哪些?

Facebook是全球最大的社交媒体平台之一,为企业提供了丰富的运营工具和功能,帮助他们在这个庞大的平台上推广、管理和监测他们的业务。下面小编讲一些常用的Facebook运营工具吧! 1、Facebook广告管理 Facebook提供了强大的广告管理平台&#…

【从0学习Solidity】24. 在合约中创建新合约

【从0学习Solidity】 24. 在合约中创建新合约 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff…

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制) 目录 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)预测效果基本描述模型描述程序设计参考资料 预测效果 基本描述…

【Tomcat】Tomcat 运行原理

Tomcat 运行原理 一. Servlet 运行原理1. 接收请求2. 根据请求计算响应3. 返回响应 二. Tomcat 的伪代码1. Tomcat 初始化流程2. Tomcat 处理请求流程3. Servlet 的 service 方法的实现 一. Servlet 运行原理 在 Servlet 的代码中我们并没有写 main 方法, 那么对应的 doGet 代…

Linux 性能分析笔记:平均负载的理解

文章目录 uptime 的命令解释uptime 平均负载的理解man uptime平均负载的合理值系统负载的趋势 案例分析CPU 密集型程序IO 密集型大量进程 学习笔记主要来源:Linux性能优化实战_Linux_性能调优-极客时间 uptime 的命令解释 uptime 09:17:52 系统当前时间up 1 day, 1…

Servlet开发-tomcat如何解析json格式的数据

前言 在应用层协议中,json格式是程序猿经常用来组织数据的格式,在http数据报的body中也经常会携带json格式的数据,所以 tomcat 部署的 webapp 能够解析 json 格式的数据是很有必要的 引入依赖 tomcat 本身并不支持解析 json 格式的数据&…

【Qt】16进制转换格式字符串及二进制

【Qt】16进制转换格式字符串及二进制 16进制转换成字符串16进制转换成格式字符串16进制转换成字符串并每两位加空格16进制转换成二进制 16进制转换成字符串 可调用QString类的静态方法number(),此方法为重载,有以下重载 // 第一个参数为输入值,第二个为…

如何接入电商数据平台API接口实现数据采集请求获取商品详情价格、优惠券、优惠活动、品牌、店铺、主图等数据示例

app商品详情原数据API接口可以获取拼多多平台上某个商品的详细信息,包括商品标题、价格、图片、规格、参数、店铺信息等。 通过这个接口获取到的商品详情数据可以结合其他数据进行深度挖掘,例如可以将商品数据对比分析,找出同类商品中的优劣…

Unity中Shader中UI材质去色功能实现

文章目录 前言一、实现思路1、在属性面板暴露一个 开关 来控制去色变体2、声明一个变体3、在片元着色器实现去色 二、实现1、定义开关2、声明变体3、在片元着色器中,使用宏判断是否去色法1、只输出结果的单通道值,一般来说结果不太理想,比较节…

TikTok扮演丘比特为员工提供婚介服务

据透露,TikTok 有一项内部配对服务,供员工将同事介绍给朋友和家人。 该频道名为 Meet Cute,是全球数千名 TikTok 员工使用的工作场所工具,用于文件托管和视频会议。它还可以帮助人们从同事中找到潜在的浪漫伴侣。 在该平台上&…

html页面仿word文档样式(vue页面也适用)

目录 文章title&#xff1a; 标题&#xff1a; 正文&#xff1a; 完整代码&#xff1a; 页面效果&#xff1a; 文章title&#xff1a; <div><h3 style"display: flex;justify-content: center; align-items: center; color: #000;">实验室招新报名公…

CSDN程序设计精品课程——Java程序设计(Java语言概述·Java语言基础·Java基本数据类型)

Java程序设计课程分配&#xff1a; Java语言概述Java语言基础Java基本数据类型控制结构Java核心类类的定义与使用对象的初始化包继承抽象类与接口异常的处理自定义异常字节流字符流标准输入/输出流基本类型的包装类型泛型和集合类 目录 Java语言概述 Java语言的特点 Java开发…

初学Java小案例(一)

目录 案例一&#xff1a;买飞机票 案例二&#xff1a;开发验证码 案例三&#xff1a;评委打分 案例四&#xff1a;数字加密 案例五&#xff1a;数组拷贝 案例六&#xff1a;抢红包 案例七&#xff1a;找素数的三种方法 案例八&#xff1a;打印乘法口诀表 案例九&#x…

el-image 和 el-table冲突层级冲突问题

其中原理&#xff0c;很多博客已经所过了&#xff0c;table组件中使用图片&#xff0c;会出现层级过低问题&#xff0c; 网上大部分解决方式是 使用穿透 // 单元格样式 ::v-deep(.el-table__cell) {position: static !important; }我在此不推荐这种解决方式&#xff0c;原因&a…