STM32F4Discovery DAC mit HAL-Treiber

OP #3905910
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
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.