11-ADC_Injected-Group-Library (STM32F429)

Diese Library betreibt die AD-Wandler im Injected-Group-Mode.

In diesem Mode können bis zu 4 AD-Kanäle in einer Liste angelegt werden,
die dann zyklisch gemessen werden. Die CPU muss dann nur noch die Messwerte abfragen.

die ADC-Pins die benutzt werden sollen, müssen im H-File deklariert und im C-File den entsprechenden Port-Pins zugeordnet werden.

es gibt drei identische Libs für ADC1, ADC2 und ADC3
(sie unterscheiden sich nur in den verwendeten Variabelnnamen)

im Beispiel wurden 2 Pins als Analog-IN definiert und per ADC2 gemessen

1
PA5, PC3

Enumerationen (für ADC1) :

1
2
3
4
typedef enum {
  ADC_PA5 = 0,  // PA5
  ADC_PC3 = 1   // PC3
}ADC1i_NAME_t;

Funktionen (für ADC1) :

1
2
void UB_ADC1_IG_Init(void);                       // zum initialisieren und starten
uint16_t UB_ADC1_IG_Read(ADC1i_NAME_t adc_name);  // zum auslesen von einem AD-Kanal

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//--------------------------------------------------------------
// File     : main.c
// Datum    : 31.10.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F429
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der ADC-Injected-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
// In Configuration diese Define hinzufügen :
// "STM32F429_439xx" , "__ASSEMBLY__" , "USE_STDPERIPH_DRIVER"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_lcd_ili9341.h"
#include "stm32_ub_font.h"
#include "stm32_ub_adc1_ig.h"
#include <stdio.h>
 
int main(void)
{
  uint16_t adc_wert;
  char buf[20];
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // Init vom LCD
  UB_LCD_Init();
  // Init vom ADC (Injected-Group)
  UB_ADC1_IG_Init();
 
  // Init der Layer
  UB_LCD_LayerInit_Fullscreen();
  // auf Hintergrund schalten
  UB_LCD_SetLayer_1();
  // Hintergrund komplett mit einer Farbe füllen
  UB_LCD_FillLayer(RGB_COL_WHITE);
  // auf Vordergrund schalten
  UB_LCD_SetLayer_2();
  // Vordergrund komplett mit einer Farbe füllen
  UB_LCD_FillLayer(RGB_COL_GREEN);
 
  // Ueberschrift
  UB_Font_DrawString(10,10,"Demo_11 :    ",&Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);
  UB_Font_DrawString(10,30,"ADC-Injected ",&Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);
 
  while(1)
  {
    // ADC-Wert auslesen
    adc_wert=UB_ADC1_IG_Read(ADC_PA5);
    sprintf(buf,"PA5 = %4d",adc_wert);
    UB_Font_DrawString(10,100,buf,&Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);
 
    // ADC-Wert auslesen
    adc_wert=UB_ADC1_IG_Read(ADC_PC3);
    sprintf(buf,"PC3 = %4d",adc_wert);
    UB_Font_DrawString(10,150,buf,&Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);
  }
}

Hier die Library zum Download :

adc_injected_f429_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_F429_11


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.