ADC auf Registerebene initialisieren

Gast #5400770
Lesenswert?

1
  RCC_ADCCLKConfig(RCC_PCLK2_Div6);
2

3
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
4

5
  ADC_DeInit(ADC1);
6

7
  ADCInit.ADC_Mode = ADC_Mode_Independent;
8
  ADCInit.ADC_ScanConvMode = ENABLE; 
9
  ADCInit.ADC_ContinuousConvMode = ENABLE;
10
  ADCInit.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
11
  ADCInit.ADC_DataAlign = ADC_DataAlign_Right;
12
  ADCInit.ADC_NbrOfChannel = 4;
13
  ADC_Init(ADC1, &ADCInit);
14

15
  ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 1,
16
  ADC_SampleTime_239Cycles5);
17
  ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 2,
18
  ADC_SampleTime_239Cycles5);
19
  ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 3,
20
  ADC_SampleTime_239Cycles5);
21
  ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 4,
22
  ADC_SampleTime_239Cycles5);
23

24
  ADC_Cmd(ADC1, ENABLE);
25
  ADC_DMACmd(ADC1, ENABLE);
26

27
  ADC_ResetCalibration(ADC1);
28
  while (ADC_GetResetCalibrationStatus(ADC1))
29
    ;
30

31
  ADC_StartCalibration(ADC1);
32
  while (ADC_GetCalibrationStatus(ADC1))

Hallo zusammen, obigen Code möchte ich gerne mal auf Registerbene 
umsetzen. Bisher habe ich folgende Zeilen geschafft, allerdings weiß ich 
nun nicht mehr weiter.
1
  //ADC1
2
  SYSCTRL_RCC_APB2 |= (1uL << SYSCTRL_ADC1_BIT);
3
  /* ADC1 Reset */
4
  RCC->APB2RSTR |= (1<<9);
5
  RCC->APB2RSTR &=~ (1<<9);
6

7
  RCC->CFGR&=~(3<<14);
8
  RCC->CFGR |= (2<<14);
9
  /* Scan mode enabled */
10
  ADC1->CR1 |= (1 << 8);
11
  /* Independent Mode */
12
  ADC1->CR1 &=~ (15 << 16);
13
  /* 4 Channels */
14
  ADC1->CR1 |= (3 << 1);
15
  /* Data alignment right & non external trigger*/
16
  ADC1->CR2 &=~ (17 << 11);
17
  /* Channel + sample (12 to 15 with 239cycles5) */
18
  ADC1->SMPR1 |= 0x0003FFC0;

Weiter weiß ich hier leider nicht mehr und ob das so richtig ist.
Kann mir jemand weiterhelfen?
Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren