1 | ADC_MultiModeTypeDef MultiModeConfig;
|
2 | ADC_InjectionConfTypeDef InjectionConfig;
|
3 |
|
4 | g_hadc1.Instance = ADC1;
|
5 |
|
6 | /* ADC2 is working independently */
|
7 | MultiModeConfig.DMAAccessMode = ADC_DMAACCESSMODE_DISABLED;
|
8 | MultiModeConfig.Mode = ADC_MODE_INDEPENDENT;
|
9 | MultiModeConfig.TwoSamplingDelay = ADC_TWOSAMPLINGDELAY_1CYCLE;
|
10 | HAL_ADCEx_MultiModeConfigChannel(&g_hadc1, &MultiModeConfig);
|
11 |
|
12 | /* ADC2 global initialization */
|
13 | /* 12-bit right-aligned format, discontinuous scan mode, running from PLL */
|
14 | g_hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC;
|
15 | g_hadc1.Init.Resolution = ADC_RESOLUTION12b;
|
16 | g_hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
17 | g_hadc1.Init.ScanConvMode = ENABLE;
|
18 | g_hadc1.Init.EOCSelection = EOC_SINGLE_CONV;
|
19 | g_hadc1.Init.LowPowerAutoWait = DISABLE;
|
20 | g_hadc1.Init.ContinuousConvMode = DISABLE;
|
21 | g_hadc1.Init.NbrOfConversion = 1;
|
22 | g_hadc1.Init.DiscontinuousConvMode = DISABLE;
|
23 | g_hadc1.Init.NbrOfDiscConversion = 1;
|
24 | g_hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
25 | g_hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
|
26 | g_hadc1.Init.DMAContinuousRequests = ENABLE;
|
27 | g_hadc1.Init.Overrun = OVR_DATA_OVERWRITTEN;
|
28 | HAL_ADC_Init(&g_hadc1);
|
29 |
|
30 | /* Discontinuous injected mode: 1st injected conversion for Vin on Ch2 */
|
31 | InjectionConfig.InjectedChannel = ADC_CHANNEL_1;
|
32 | InjectionConfig.InjectedRank = ADC_INJECTED_RANK_1;
|
33 | InjectionConfig.InjectedSamplingTime = ADC_SAMPLETIME_19CYCLES_5;
|
34 | InjectionConfig.InjectedSingleDiff = ADC_SINGLE_ENDED;
|
35 | InjectionConfig.InjectedOffsetNumber = ADC_OFFSET_NONE;
|
36 | InjectionConfig.InjectedOffset = 0;
|
37 | InjectionConfig.InjectedNbrOfConversion = 1;
|
38 | InjectionConfig.InjectedDiscontinuousConvMode = ENABLE;
|
39 | InjectionConfig.AutoInjectedConv = DISABLE;
|
40 | InjectionConfig.QueueInjectedContext = DISABLE;
|
41 | InjectionConfig.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_HRTIM_TRG2;
|
42 | InjectionConfig.ExternalTrigInjecConvEdge = ADC_EXTERNALTRIGINJECCONV_EDGE_RISING;
|
43 | HAL_ADCEx_InjectedConfigChannel(&g_hadc1, &InjectionConfig);
|
44 |
|
45 | /* Configure the 2nd injected conversion for Vout on Ch4 */
|
46 | InjectionConfig.InjectedChannel = ADC_CHANNEL_3;
|
47 | InjectionConfig.InjectedRank = ADC_INJECTED_RANK_2;
|
48 | InjectionConfig.InjectedSamplingTime = ADC_SAMPLETIME_19CYCLES_5;
|
49 | HAL_ADCEx_InjectedConfigChannel(&g_hadc1, &InjectionConfig);
|
50 | g_hadc1.Instance->CFGR |= ADC_CFGR_DMAEN;
|
51 | /* Run the ADC calibration in single-ended mode */
|
52 | HAL_ADCEx_Calibration_Start(&g_hadc1, ADC_SINGLE_ENDED);
|
53 |
|
54 | /* Start ADC2 Injected Conversions */
|
55 | HAL_ADCEx_InjectedStart_IT(&g_hadc1);
|