简易功率测量仪代码解析(二)代码分析-数据处理

本文主要分析简易功率测量仪的代码,重点在于ADC采样后的数据处理,包括计算P、I、U。首先配置双重ADC采样,分别从ADC1的通道11和ADC2的通道14采集电源电压和电阻两端电压。然后,通过简单的公式处理ADC采样数据,求得所需参数。由于设备简易,未加入滤波算法,后续将学习并优化。
摘要由CSDN通过智能技术生成

代码结构分析
在分析完电路的基础上,我主要把代码分为两个层面。
1、ADC采样后的数据处理。算出P、I、U。
2、将处理好的数据显示在LCD上,并用曲线表示出P的变化。
这一节主要讲第一个层面,也就是:1、ADC采样后的数据处理。算出P、I、U。
首先是配置ADC,由于我们要采样两个不同的电压,所以使用双重ADC采样。关于双重ADC采样,细讲起来太多了,可以去参考网上其它大佬和公众号给出的介绍,这里我给一个配置代码和过程分析。我们使用ADC1的通道11(对应STM32ZET6的PC1引脚)采集电源电压,使用ADC2的通道14(对于PC4)采集已知电阻两端电压。配置过程如下。

//这是ADC配置的.c文件
#include "adc_DMA.h"
#include "stm32f10x.h"
/****************************************************************************************************************
本实验用到双重ADC,ADC1采集电源电压,ADC2采集已知电阻两端电压,存储到ADC1的数据寄存器DR,两个ADC的数据通过一个DMA通道传输,
传输到ADC_ConvertedValue中,经过数据处理后将两个数据分离分别存储到ADC_1_ConvertedValue,ADC_2_ConvertedValue中。
*****************************************************************************************************************/

__IO uint32_t ADC_ConvertedValue=0;//用于存储DMA传输过来的32位数据
__IO uint16_t ADC_1_ConvertedValue=0;//存储ADC1转换的数据
__IO uint16_t ADC_2_ConvertedValue=0;//存储ADC2转换的数据

/*******************
ADC_GPIO初始化
*******************/
static void ADC_GPIO_Init(void)
{
   
	GPIO_InitTypeDef GPIO_InitStructure;
	//ADC1_GPIO初始化,PC1对应ADC1通道11
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//ADC模式一定要配置成模拟输入模式
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	
	
	//ADC2_GPIO初始化,PC4对应ADC2通道14
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
}

/*******************
ADC工作模式配置
1、ADC1 对应 DMA1通道1,ADC3对应DMA2通道5,ADC2没有DMA功能
2、双模式时,ADC1和ADC2转换的数据都存放在ADC1的数据寄存器,ADC1的在低十六位,ADC2的在高十六位
3、双ADC模式的第一个ADC,必须是ADC1,双ADC模式的第二个ADC,必须是ADC2
*******************/
static void ADC_Mode_Config(void)
{
   
	DMA_InitTypeDef DMA_InitStructure;
	ADC_InitTypeDef ADC_InitSturcture;
	//开启ADC和DMA相关时钟
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值