реклама на сайте
подробности

 
 
> STM32 ADC TRIPLE/DOUBLE trigger mode
ThE_BuZz
сообщение May 9 2012, 12:33
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 10-02-12
Пользователь №: 70 196



На 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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01337 секунд с 7
ELECTRONIX ©2004-2016