关于STM32AD采集两种不同频率的交流信号(50hz、22hz),平台位stm32L151

2019-07-21 01:46发布

关于STM32AD采集两种不同频率的交流信号(50hz、22hz),平台为stm32L151,用定时器定时触发AD,一个周期采集64个点后,进行FFT变换,但是由于频率不同,所以定时器设置也不同,因为只有一个ADC1,所以会产生覆盖问题,不知道如何为解决,下面是50hz处理程序
/* ADC1 configuration */
    ADC_InitStructure.ADC_ScanConvMode = ENABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_TRGO;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfConversion = 2;
    ADC_Init(ADC1, &ADC_InitStructure);
定时器配置如下、

void TIM2_Iint(uint16_t arr2,uint16_t psc2)
{
// uint16_t arr2=9999;//Tout=((arr+1)*(psc+1))/Tclk,Tclk=32MHZ
  //uint16_t psc2=0;

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
   
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  TIM_TimeBaseStructure.TIM_Period = arr2;//¼ÆÊýÆ÷×°ÔØÖµ
  TIM_TimeBaseStructure.TIM_Prescaler = psc2;//·ÖƵϵÊý
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;//
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//ÏòÉϼÆÊý
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/*

  /* TIM IT enable */
  TIM_ITConfig(TIM2,TIM_IT_Update, ENABLE);

  /* TIM2 enable counter */
  TIM_Cmd(TIM2, ENABLE);
  /* Enable the TIM3 Interrupt */
  //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//ÔÚÖ÷º¯ÊýÖж¨ÒåÓÅÏȼ¶·Ö×é
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
现在就是不知道怎么处理22hz信号,然后进行fft变换,两路50hz模拟信号。一路22hz交流信号



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 05:40
帮顶
y375484311
2楼-- · 2019-07-21 08:51
自己顶
WJH321
3楼-- · 2019-07-21 09:18
 精彩回答 2  元偷偷看……

一周热门 更多>