你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 9198|回复: 26

[STM32F429] 【stm32F429开发日志】+DMA_ADC+2048FFT+TIM采样

[复制链接]

6

主题

41

回帖

0

蝴蝶豆

初级会员

最后登录
2018-10-5
发表于 2014-7-11 19:58:33 | 显示全部楼层 |阅读模式
 最近比较忙   一直没上传,如有问题直接帖子里问  一起探讨一下FFT
第一 :随意控制采样率
第二:采样点数可控,可以用于FFT
 

STM32F429I-Discovery_FW_V1.0.1 - 副本.zip

下载

9.07 MB, 下载次数: 5410, 下载积分: ST金币 -1

<
回复

使用道具 举报

6

主题

41

回帖

0

蝴蝶豆

初级会员

最后登录
2018-10-5
 楼主| 发表于 2014-7-22 10:44:55 | 显示全部楼层

RE:【stm32F429开发日志】+DMA_ADC+2048FFT+TIM采样

static void ADC3_CH13_DMA_Config(void)
{
  ADC_InitTypeDef       ADC_InitStructure;
  ADC_CommonInitTypeDef ADC_CommonInitStructure;
  DMA_InitTypeDef       DMA_InitStructure;
  GPIO_InitTypeDef      GPIO_InitStructure;
  /* Enable ADC3, DMA2 and GPIO clocks ****************************************/
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);
  /* DMA2 Stream0 channel2 configuration **************************************/
  DMA_InitStructure.DMA_Channel = DMA_Channel_2;  
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC3_DR_ADDRESS;
  DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&amp;ADC3ConvertedValue;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
  DMA_InitStructure.DMA_BufferSize = 2048;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  DMA_Init(DMA2_Stream0, &amp;DMA_InitStructure);       
  DMA_Cmd(DMA2_Stream0, ENABLE);
  
  /* Configure ADC3 Channel13 pin as analog input ******************************/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOC, &amp;GPIO_InitStructure);
  /* ADC Common Init **********************************************************/
  ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
  ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
  ADC_CommonInit(&amp;ADC_CommonInitStructure);
  /* ADC3 Init ****************************************************************/
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  ADC_InitStructure.ADC_ScanConvMode = DISABLE;
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
  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_Init(ADC3, &amp;ADC_InitStructure);
  /* ADC3 regular channel13 configuration *************************************/
  ADC_RegularChannelConfig(ADC3, ADC_Channel_13, 1, ADC_SampleTime_84Cycles);
/* Enable DMA request after last transfer (Single-ADC mode) */
  ADC_DMARequestAfterLastTransferCmd(ADC3, ENABLE);
  /* Enable ADC3 DMA */
  ADC_DMACmd(ADC3, ENABLE);
  DMA_ITConfig(DMA2_Stream0,DMA_IT_TC , ENABLE);
  /* Enable ADC3 */
  ADC_Cmd(ADC3, ENABLE);
}
void TIM_Config(void)
{
         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
         TIM_OCInitTypeDef  TIM_OCInitStructure;
   uint16_t PrescalerValue = 0;
  /* The TIM3 INPUT CLOCK is 42MHz*/
  PrescalerValue = (uint16_t) ((SystemCoreClock /2) / 8000000) - 1;
  
  // 40KHz ADC ????
  TIM_TimeBaseStructure.TIM_Period = 99;
  TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &amp;TIM_TimeBaseStructure);
  
        TIM_PrescalerConfig(TIM3, PrescalerValue, TIM_PSCReloadMode_Immediate);
  // TIM3 CH1 50%
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 50;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM3, &amp;TIM_OCInitStructure);
       
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);
  
  TIM_ITConfig(TIM3, TIM_IT_CC1 , ENABLE);
  
  //TIM_ARRPreloadConfig(TIM3, ENABLE);
  
  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);
}
void NVIC_Config(void)
{
  NVIC_InitTypeDef   NVIC_InitStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  /* Enable the TIM3 gloabal Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&amp;NVIC_InitStructure);
  
  /* Enable the DMA2_Stream0 gloabal Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&amp;NVIC_InitStructure);
  
}
#ifdef  USE_FULL_ASSERT
回复 支持 1 反对 0

使用道具 举报

4

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-16 21:20:21 | 显示全部楼层

RE:【stm32F429开发日志】+DMA_ADC+2048FFT+TIM采样

楼主下载下来是乱码啊
回复 支持 1 反对 0

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2017-11-16
发表于 2014-7-26 19:40:29 | 显示全部楼层

RE:【stm32F429开发日志】+DMA_ADC+2048FFT+TIM采样

FFT我用过,测试音频信号。有兴趣一起讨论下。
回复 支持 反对

使用道具 举报

0

主题

6

回帖

0

蝴蝶豆

新手上路

最后登录
2019-12-31
发表于 2014-8-24 04:14:21 | 显示全部楼层

RE:【stm32F429开发日志】+DMA_ADC+2048FFT+TIM采样

大哥 真的是乱码,能否再贡献一份谢谢
回复 支持 反对

使用道具 举报

11

主题

64

回帖

0

蝴蝶豆

初级会员

最后登录
2018-6-22
发表于 2014-10-30 19:36:03 | 显示全部楼层
请教:FFT函数如何使用?
回复 支持 反对

使用道具 举报

0

主题

9

回帖

0

蝴蝶豆

初级会员

最后登录
2016-1-12
发表于 2014-11-1 21:03:42 | 显示全部楼层
支持,学习下
回复 支持 反对

使用道具 举报

8

主题

17

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-12-10 11:00:26 | 显示全部楼层
不知道楼主能否交流下具体的思路
回复 支持 反对

使用道具 举报

1

主题

6

回帖

0

蝴蝶豆

初级会员

最后登录
2020-11-8
发表于 2015-1-15 13:31:15 | 显示全部楼层
泉水叮咚 发表于 2014-7-26 19:40
FFT我用过,测试音频信号。有兴趣一起讨论下。

你好, 有QQ吗, 我也想弄个显示音频频谱的, 做了FFT, 但好像结果不太对
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-28
发表于 2015-1-17 22:54:03 | 显示全部楼层
德华,是我认识的吗
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版