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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.