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

我看到DSP库里有CFFT,RFFT,要用哪个?怎么用呢?12位的AD数据就是0:4095的二进制实数,需要调整成Q15格式么?我就是想对采到的信号进行FFT……求高手指... 我看到DSP库里有CFFT,RFFT,要用哪个?怎么用呢?12位的AD数据就是0:4095的二进制实数,需要调整成Q15格式么?我就是想对采到的信号进行FFT……求高手指教 展开
 我来答
百度网友fe6238841
2015-07-31 · TA获得超过2025个赞
知道小有建树答主
回答量:4233
采纳率:25%
帮助的人:459万
展开全部
FFT算法,需要你自己做了,网上有现成的例子。
你要做的是:配置好ADC采用通道;
再根据需要配置一个定时器触发ADC采样通道,读取数据存到缓存中;
根据缓存中的数据做FFT算法;
主要问题是:这个定时器设置的周期需要你自己决定,因为多久做一次FFT,需要多少采样数据都是你来决定的
百度网友980728c26
2013-03-17
知道答主
回答量:12
采纳率:0%
帮助的人:4.4万
展开全部
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式