• 大小: 45.05MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-17
  • 语言: 其他
  • 标签: STM32F4  DMA  AD  

资源简介

调用了复位校准函数ADC_ResetCalibration()以及开始校准函数ADC_StartCalibration(),必须检查标志位等待校准完成,确保完成后才开始ADC转换.(建议是每次上电后都校准一次咯) ADC_SoftwareStartConvCmd(ADC1, ENABLE); 配置ADC1的模式为软件触发方式. 调用这个函数之后,ADC就开始进行转换了,每次转换完成后,由DMA控制器把转换从ADC数据寄存器(ADC_DR)中转移到变量ADC_ConvertedValue中,当DMA传输完成后,在main函数中使用 ADC_ConvertedValue的内容就是ADC的转换值了. 计算电压值: 在main函数中,ADC_ConvertedValueLoca是一个float类型变量,它保存了有转换值计算出来的电压值,计算的公式是ADC通用的 实际电压 = ADC转换值*LSB LSB为Vref+接的参考电压/ADC的精度( LSB =3.3/2的12次方) PS: 这里面ADC_ConvertedValue是用volatile修饰的,用 volatile 声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。因为 ADC_ConvertedValue 这个变量值随时都是会被 DMA 控制器改变的,所以用 volatile 来修饰它,确保每次读取到的都是实时的 ADC 转

资源截图

代码片段和文件信息

#include “stm32f4xx.h“
#include 

void GPIO_Configuration(void)
{
GPIO_InitTypeDef      GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOC &GPIO_InitStructure);
}

#define ADC_CDR_ADDRESS    ((uint32_t)0x40012308) //ADC_DCR寄存器基地址
u32 ADCTripleConvertedValue[515]; //很奢侈的分配4K作为ADC采样1024的数据存放位置

void DMA_Configuration(void)
{
   DMA_InitTypeDef       DMA_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 ENABLE);

DMA_InitStructure.DMA_Channel = DMA_Channel_0;       //通道设置
DMA_InitStructure.DMA_PeripheralbaseAddr = (uint32_t)ADC_CDR_ADDRESS; //外设基地址
DMA_InitStructure.DMA_Memory0baseAddr = (uint32_t)&ADCTripleConvertedValue; //内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; //外设到内存的传输
DMA_InitStructure.DMA_BufferSize = 515; //传输次数 1
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址增加失能
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址增加失能
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //DMA外设半字节传输
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; //DMA内存半字节传输
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //DMA工作于循环模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //高优先级运行
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;    //失能FIFO模式      
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; //fifo阈值半字节
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; //内存单次突发传输
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; //外设单次突发传输
DMA_Init(DMA2_Stream0 &DMA_InitStructure);

DMA_ITConfig(DMA2_Stream0DMA_IT_TCENABLE);
   DMA_Cmd(DMA2_Stream0 ENABLE);
}

void NVIC_Configuration(FunctionalState NewState)
{
   NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = NewState;
NVIC_Init(&NVIC_InitStructure);
}

void ADC_Configuration(void)
{
ADC_InitTypeDef       ADC_InitStructure;
ADC_CommonInitTypeDef ADC_CommonInitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_ADC2|RCC_APB2Periph_ADC3 ENABLE);

ADC_CommonInitStructure.ADC_Mode = ADC_TripleMode_Interl;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_2;   //DMA传输模式1
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;  //ADC时钟为APB2/2
ADC_CommonInit(&ADC_CommonInitStructure);

ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
   ADC_InitStructure.ADC_ScanConvMode 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-24 23:02  STM32F4 AD采集DMA方式进行FFT计算\
     文件       81179  2018-10-24 23:01  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj.uvgui.Administrator
     文件      343738  2012-07-10 09:34  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj.uvgui.laoyl
     文件      342429  2012-07-09 14:10  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj.uvgui_laoyl.bak
     文件       26630  2018-10-24 23:01  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj.uvopt
     文件       23417  2018-10-24 23:01  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj.uvproj
     文件       21273  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj_Stm32F4Proj.dep
     文件       33420  2012-07-10 09:34  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj_uvopt.bak
     文件       22611  2012-07-05 00:22  STM32F4 AD采集DMA方式进行FFT计算\BlankPrj_uvproj.bak
     目录           0  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\
     文件        9604  2018-10-24 23:01  STM32F4 AD采集DMA方式进行FFT计算\Debug\BlankPrj.build_log.htm
     文件         280  2012-07-10 09:34  STM32F4 AD采集DMA方式进行FFT计算\Debug\BlankPrj.plg
     文件         479  2011-10-20 15:08  STM32F4 AD采集DMA方式进行FFT计算\Debug\BlankPrj.sct
     文件        4086  2012-07-09 13:18  STM32F4 AD采集DMA方式进行FFT计算\Debug\BlankPrj.tra
     文件          19  2012-07-09 14:10  STM32F4 AD采集DMA方式进行FFT计算\Debug\ExtDll.iex
     文件          35  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\common.d
     文件          31  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\main.d
     文件         112  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\misc.d
     文件          57  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\startup_stm32f4xx.d
     文件        7896  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\startup_stm32f4xx.o
     文件         148  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_adc.d
     文件         148  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_can.d
     文件         148  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_crc.d
     文件         152  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_cryp.d
     文件         164  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_cryp_aes.d
     文件         164  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_cryp_des.d
     文件         167  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_cryp_tdes.d
     文件         148  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_dac.d
     文件         160  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_dbgmcu.d
     文件         152  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_dcmi.d
     文件         148  2018-10-24 22:56  STM32F4 AD采集DMA方式进行FFT计算\Debug\stm32f4xx_dma.d
............此处省略108个文件信息

评论

共有 条评论