96-DCF77-Library (STM32F4)

Hier eine Library um ein DCF77-Modul (Funkuhr) an den STM32F4 anzuschließen.

Das Modul muss über einen GPIO-Pin an den F4 angeschlossen werden
und liefert dann nach spätestens zwei Minuten das aktuelle Datum/Uhrzeit.

Das Modul gibt es für ca. 5 EUR zu kaufen.

Beispielbild :

Benutzte Pins :

1
PB0 = DCF77-Signal

Voraussetzungen :

1
GPIO, TIM, EXTI, SYSCFG, MISC

Enumerationen :

1
2
3
4
5
6
typedef enum {
  DCF77_NO_SIGNAL =0, // there is no DCF77-Signal
  DCF77_READING,      // wait until time-data is complete
  DCF77_TIME_ERROR,   // error
  DCF77_TIME_OK       // time-data is ok
}DCF77_Status_t;

Struktur :

1
2
3
4
5
6
7
8
9
typedef struct {
  uint8_t sek;   // sekunden [0..59]
  uint8_t min;   // minuten [0..59]
  uint8_t std;   // stunden [0..23]
  uint8_t tag;   // tag [1..31]
  uint8_t monat; // monat [1..12]
  uint8_t jahr;  // jahr [0..99]
}DCF77_TIME_t;
DCF77_TIME_t DCF77_TIME;

Funktionen :

1
2
void UB_DCF77_Init(void);                // zum Init vom DCF77-Modul
DCF77_Status_t UB_DCF77_ReadTime(void);  // zum auslesen der Uhrzeit

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
//--------------------------------------------------------------
// File     : main.c
// Datum    : 31.12.2015
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.8
// GCC      : 4.9 2015q2
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : DCF77-Demo
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_dcf77.h"
#include "stm32_ub_uart.h"
#include 
 
int main(void)
{
  DCF77_Status_t status,old_status=99;
  uint8_t old_sek=99;
  char buf[30];
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  UB_Uart_Init();
 
  // init vom DCF77-Modul
  UB_DCF77_Init();
 
  UB_Uart_SendString(COM2,"DCF77-Start",CRLF);
 
  while(1)
  {
    status=UB_DCF77_ReadTime();
    if(status!=old_status) {
      old_status=status;
      if(status==DCF77_NO_SIGNAL) UB_Uart_SendString(COM2,"no signal",CRLF);
      if(status==DCF77_READING) UB_Uart_SendString(COM2,"reading...",CRLF);
      if(status==DCF77_TIME_ERROR) UB_Uart_SendString(COM2,"error",CRLF);
    }
    if(status==DCF77_TIME_OK) {
      if(DCF77_TIME.sek!=old_sek) {
        old_sek=DCF77_TIME.sek;
        sprintf(buf,"h=%d, m=%d, s=%d",DCF77_TIME.std,DCF77_TIME.min,DCF77_TIME.sek);
        UB_Uart_SendString(COM2,buf,CRLF);
        sprintf(buf,"d=%d, m=%d, j=%d",DCF77_TIME.tag,DCF77_TIME.monat,DCF77_TIME.jahr);
        UB_Uart_SendString(COM2,buf,CRLF);
      }
    }
  }
}

Hier die Library zum Download :

ub_stm32f4_dcf77_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_96_DCF77


4 Antworten auf 96-DCF77-Library (STM32F4)

  1. ManiB sagt:

    DCF-Empfangsmodul DCF1
    Pollin Best.Nr.: 810054

    Technische Daten:
    – Betriebsspannung 1,2…3,5V
    – Stromaufnahme 90uA
    – Empfangsfrequenz 77,5 kHz

  2. ThomasS sagt:

    Hallo Uwe,
    kann man die Library auch unverändert für den STM32F746 nutzen?
    Falls nicht, wo wären Änderungen erforderlich?
    (Sorry für die dumme Frage, aber so intensiv bin ich noch nicht eingestiegen):
    Danke, Thomas


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.