STM32F4Discovery DAC mit HAL-Treiber

OP #3905910
Lesenswert?
• ▲
▼
Hallo,

ich versuche gerade den DAC auf meinem Discovery-Board laufen zu lassen. 
GPIO's lassen sich ansprechen und Fehler beim Kompilieren bekomme ich 
auch keine. Von daher vermute ich, dass ich was bei der Konfiguration 
vom DAC falsch mache.

Hierzu verwende ich die HAL-Treiber. Meine Main sieht wie folgt aus:
1
int main(int argc, char* argv[]){
2
  __GPIOA_CLK_ENABLE();
3
  __DAC_CLK_ENABLE();
4

5

6
  //Ausgangspin  fuer ADC
7
  GPIO_InitTypeDef GPIOA_4;
8
  GPIOA_4.Mode = GPIO_MODE_ANALOG;
9
  GPIOA_4.Pin = GPIO_PIN_4;
10
  HAL_GPIO_Init(GPIOA,&GPIOA_4);
11

12
  //ADC Handler
13
  DAC_HandleTypeDef DAC_Handle;
14
  DAC_Handle.Instance = DAC;
15
  HAL_DAC_Init(&DAC_Handle);
16

17
  //ADC-Kanal Konfig fuer Kanal 1 (PA4)
18
  DAC_ChannelConfTypeDef DAC_C1;
19
  DAC_C1.DAC_Trigger = DAC_TRIGGER_SOFTWARE;
20
  DAC_C1.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
21
  HAL_DAC_ConfigChannel(&DAC_Handle,&DAC_C1,DAC_CHANNEL_1);
22

23
  HAL_DAC_SetValue(&DAC_Handle,DAC_CHANNEL_1,DAC_ALIGN_8B_R,0x00);
24

25
  HAL_DAC_Start(&DAC_Handle,DAC_CHANNEL_1);
26

27
  HAL_DAC_SetValue(&DAC_Handle,DAC_CHANNEL_1,DAC_ALIGN_8B_R,0xFF);
28
  // Infinite loop
29
  while (1){
30
    // Infinite loop, never return.
31
    }
32
  return 0;
33
}

Gruß, Andy
Gast #3905932
Lesenswert?
• ▲
▼
Also ohne diese seltsame Lib sieht es irgendwie einfacher aus:
1
void
2
led (int brightness)
3
{
4
  if (brightness <   0)  brightness = 0;
5
  if (brightness > 100)  brightness = 100;
6

7
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
8
  RCC->APB1ENR |= RCC_APB1ENR_DACEN;
9
  GPIOA->MODER |= 3 << (4 * 2);
10
  DAC->CR = DAC_CR_EN1;
11
  DAC->DHR12R1 = 1000 + brightness * 30;
12
  return;
13
}

Mir scheint, der wesentliche Unterschied ist DAC_TRIGGER_SOFTWARE, ich 
schalte keinen Trigger ein. Deshalb kann ich jederzeit einfach neue 
Daten ins Holding Register schreiben.

Die "1000" ist ein Offset für (oder gegen) der Treiber-Transistor.

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.