STM32F407怎么对ADC采集的12位数据进行FFT?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F407怎么对ADC采集的12位数据进行FFT?相关的知识,希望对你有一定的参考价值。

我看到DSP库里有CFFT,RFFT,要用哪个?怎么用呢?12位的AD数据就是0:4095的二进制实数,需要调整成Q15格式么?我就是想对采到的信号进行FFT……求高手指教

FFT算法,需要你自己做了,网上有现成的例子。
你要做的是:配置好ADC采用通道;
再根据需要配置一个定时器触发ADC采样通道,读取数据存到缓存中;
根据缓存中的数据做FFT算法;
主要问题是:这个定时器设置的周期需要你自己决定,因为多久做一次FFT,需要多少采样数据都是你来决定的
参考技术A 1.ADC对应管脚介绍
|---管脚------对应ADC----||---管脚------对应ADC----|
|PA0 <---> ADC123_IN0 || PA1 <---> ADC123_IN1 |
|PA2 <---> ADC123_IN2 || PA3 <---> ADC123_IN3 |
|PA4 <---> ADC12_IN4 || PA5 <---> ADC12_IN5 |
|PA6 <---> ADC12_IN6 || PA7 <---> ADC12_IN7 |
|PB0 <---> ADC12_IN8 || PB1 <---> ADC12_IN9 |
|PC4 <---> ADC12_IN14 || PC5 <---> ADC12_IN15 |
|PC0 <---> ADC123_IN10|| PC1 <---> ADC123_IN11|
|PC2 <---> ADC123_IN12|| PC3 <---> ADC123_IN13|
|PF3 <---> ADC3_IN9 || PF4 <---> ADC3_IN14 |
|PF5 <---> ADC3_IN15 || PF6 <---> ADC3_IN4 |
|PF7 <---> ADC3_IN5 || PF8 <---> ADC3_IN6 |
|PF9 <---> ADC3_IN7 || PF10<---> ADC3_IN8 |
2.配置查询模式如下
void ADC_Configuration(void)

GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
//初始化GPIOA的Pin_0为模拟量输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit();
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //精度为12位
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //扫描转换模式失能,单通道不用
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //连续转换使能
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //不用外部触发,软件触发转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //数据右对齐,低字节对齐
ADC_InitStructure.ADC_NbrOfConversion = 1; //规定了顺序进行规则转换的ADC
ADC_InitStructure.ADC_NbrOfConversion = 1; //规定了顺序进行规则转换的ADC通道的数目
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_3Cycles);//ADC,通道,1转换,所选通道的采样周期
ADC_Cmd(ADC1, ENABLE); //使能
ADC_SoftwareStartConv(ADC1); //软件启动转换

unsigned short GetADCValue(void)

return ADC_GetConversionValue(ADC1);

以上是关于STM32F407怎么对ADC采集的12位数据进行FFT?的主要内容,如果未能解决你的问题,请参考以下文章

STM32F407的资源

stm32f103 adc 怎么触发

如何使用stm32adc

2019 8 10 STM32F407ADC1M采样频率相关设置

STM32f407定时器用为编码器接口模式采集脉冲,但单片机供电后,复用引脚直接有电压输出

stm32f103rct6的adc有多少通道