STM32F4Discovery DAC mit HAL-Treiber

#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

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