На TIM4 сделан шим 5МГц, по возростающему фронта которого необходимо получать данные с АЦП. Все 3 АЦП висят на 1 порте, по фронтам должны включаться поорередно.
CODE
/******************************************************************************/
/* ADC Common configuration *************************************************/
ADC_CommonInitStructure.ADC_Mode = ADC_TripleMode_AlterTrig;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_3; //ADC_DMAAccessMode_2;
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
ADC_CommonInit(&ADC_CommonInitStructure);
/* ADC1 regular channel 3 configuration ************************************/
ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b; //ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;
//ADC_ExternalTrigConvEdge_Rising;//ADC_ExternalTrigConvEdge_Falling
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T5_CC1;
// ADC_ExternalTrigConv_T2_TRGO; //ADC_ExternalTrigConv_T2_CC3
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1, ADC_SampleTime_3Cycles);
ADC_Init(ADC2, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC2, ADC_Channel_3, 1, ADC_SampleTime_3Cycles);
ADC_Init(ADC3, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC3, ADC_Channel_3, 1, ADC_SampleTime_3Cycles);
ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE);
/*
ADC_InjectedChannelConfig(ADC1, ADC_Channel_3, 1, ADC_SampleTime_3Cycles);
ADC_InjectedChannelConfig(ADC2, ADC_Channel_3, 1, ADC_SampleTime_3Cycles);
ADC_InjectedChannelConfig(ADC3, ADC_Channel_3, 1, ADC_SampleTime_3Cycles);
//ADC_InjectedSequencerLengthConfig();
ADC_ExternalTrigInjectedConvConfig(ADC1,ADC_ExternalTrigInjecConv_T4_TRGO);
ADC_ExternalTrigInjectedConvEdgeConfig( ADC1, ADC_ExternalTrigInjecConvEdge_Rising);
ADC_ExternalTrigInjectedConvEdgeConfig( ADC2, ADC_ExternalTrigInjecConvEdge_Rising);
ADC_ExternalTrigInjectedConvEdgeConfig( ADC3, ADC_ExternalTrigInjecConvEdge_Rising);
*/
ADC_Cmd(ADC1, ENABLE);
ADC_Cmd(ADC2, ENABLE);
ADC_Cmd(ADC3, ENABLE);
С режимом Интерлеавед все работает, данные пакует ДМА, отлажен довольно большой кусок проекта. Сейчас необходимо сделать привязку к сигналу ШИМ - никаких признаков жизни.
Сообщение отредактировал IgorKossak - May 9 2012, 13:06