cancel
Showing results for 
Search instead for 
Did you mean: 

ADC Injected mode

Cesar cfg
Associate II
Posted on February 17, 2014 at 17:43

Hello 

Can any one help me how to configure the ADC of the stm32f3 in the injected trigered mode.(TIM1 CC4 trigger).
4 REPLIES 4
Posted on February 17, 2014 at 18:06

Review how it's done on the F1, adapt

STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\ADC\TIMTrigger_AutoInjection\main.c
Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Cesar cfg
Associate II
Posted on February 18, 2014 at 07:58

I tried to do that, but still I have a problem in starting the ADC injected conversion:

the ADC Init function:

 /* Enable ADC1 clock */

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12, ENABLE);

   /* ADC Channel configuration */

  /* GPIOC Periph clock enable */

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

  RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div4);

  /* Configure ADC Channel7 as analog input */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;

  GPIO_Init(GPIOC, &GPIO_InitStructure);

  ADC_StructInit(&ADC_InitStructure);

  /* Calibration procedure */  

  ADC_VoltageRegulatorCmd(ADC1, ENABLE);

  

  /* Insert delay equal to 10 µs */

  Delay(10);

  

  ADC_SelectCalibrationMode(ADC1, ADC_CalibrationMode_Single);

  ADC_StartCalibration(ADC1);

  

  while(ADC_GetCalibrationStatus(ADC1) != RESET );

  calibration_value = ADC_GetCalibrationValue(ADC1);

     

  ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;                                                                    

  ADC_CommonInitStructure.ADC_Clock = ADC_Clock_SynClkModeDiv4;                    

  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;             

  ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_OneShot;                  

  ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0;          

  ADC_CommonInit(ADC1, &ADC_CommonInitStructure);

  

  ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Disable;

  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; 

  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

  ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable;   

  ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable;  

  ADC_InitStructure.ADC_NbrOfRegChannel = 1;

  ADC_Init(ADC1, &ADC_InitStructure);

  

  /* ADC1 regular channel7 configuration */ 

  ADC_InjectedChannelConfig(ADC1, ADC_Channel_7, 1, ADC_SampleTime_1Cycles5);

  ADC_ExternalTriggerInjectedConfig(ADC1,ADC_ExternalTrigInjecConvEvent_1,ADC_ExternalTrigInjecEventEdge_RisingEdge);

  /* Enable ADC1 */

  ADC_Cmd(ADC1, ENABLE);

  

  /* wait for ADRDY */

  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY));

  

  /* Start ADC1 Software Conversion */ 

  ADC_StartConversion(ADC1);   

  

  ADC_ITConfig(ADC1,ADC_IT_JEOC,ENABLE);

  

  NVIC_InitStructure.NVIC_IRQChannel=ADC1_2_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

  NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

  NVIC_Init(&NVIC_InitStructure);

  

Cesar cfg
Associate II
Posted on February 18, 2014 at 13:56

The ADC is trigered by the TIM1 TRIG0 trigger

Cesar cfg
Associate II
Posted on February 24, 2014 at 09:31

no answer ?