Forum: Mikrocontroller und Digitale Elektronik STM32F4Discovery DAC mit HAL-Treiber


von Andreas L. (argon)


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

von Schaulus Tiger (Gast)


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.

von Andreas L. (argon)


Lesenswert?

Hallo,

ich werde es heute Abend auch mal direkt mit dem Beschreiben der 
Register probieren. Der trigger war ursprünglich auf NONE. Der 
Software-Trigger steht ausversehen noch vom ausprobieren drin.

Gruß, Andy

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.