source: trunk/firmware_v3/SES/inc/eeprom.h@ 41

Last change on this file since 41 was 41, checked in by f.jahn, 8 days ago

V3 Version soweit fertig. Relais ansteuerung, modbus, temperatursensor ist implementiert
Commit vor Änderung auf neuen Controller mit mehr Speicher

File size: 2.6 KB
Line 
1#include "stm32c0xx_hal.h"
2#include <inttypes.h>
3#include <stdbool.h>
4
5/**
6 * @file eeprom_emulation.h
7 * @brief Einfache EEPROM-Emulation für STM32C031 (Double-Word Schreibzugriff)
8 * @note Nutzt die HAL-Library für Flash-Operationen.
9 */
10
11#ifndef EEPROM_EMULATION_H
12#define EEPROM_EMULATION_H
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#include "stm32c0xx_hal.h"
19#include <stddef.h>
20
21/* --- KONFIGURATION --- */
22
23/** * @brief Flash-Adresse für die Emulation.
24 * Für STM32C031 mit 32KB Flash ist 0x08007800 der Start der letzten Page (Page 15).
25 * WICHTIG: Sicherstellen, dass der Programmcode diese Adresse nicht erreicht!
26 */
27
28#define MY_EEPROM_FLASH_ADDR ((uint32_t)0x08007800)
29
30
31/** @brief Die entsprechende Page-Nummer zur Adresse (für das Löschen benötigt) */
32#define MY_EEPROM_PAGE 15
33
34#define FLASH_PAGE_SIZE_C0 2048 // 2 KB Page Size für STM32C0
35
36#define FIRST_START_ID 2
37
38/* --- FUNKTIONEN --- */
39
40/**
41 * @brief Liest eine Datenstruktur direkt aus dem Flash-Speicher.
42 * * @param data_ptr Zeiger auf die Ziel-Struktur im RAM (z.B. &myConfig).
43 * @param size Größe der Struktur in Bytes (sizeof(myConfig)).
44 */
45void EEPROM_Read(void* data_ptr, size_t size);
46
47/**
48 * @brief Speichert eine Datenstruktur im Flash-Speicher.
49 * * Diese Funktion prüft zuerst, ob sich die Daten im Vergleich zum Flash
50 * geändert haben. Falls ja, wird die gesamte Flash-Page gelöscht und
51 * die Struktur neu geschrieben (Double-Word Alignment wird automatisch gehandhabt).
52 * * @param data_ptr Zeiger auf die zu speichernde Struktur im RAM.
53 * @param size Größe der Struktur in Bytes.
54 * @return HAL_StatusTypeDef HAL_OK bei Erfolg, ansonsten Fehlercode.
55 */
56HAL_StatusTypeDef EEPROM_Write(void* data_ptr, size_t size);
57
58
59
60void EEPROM_WriteDefaults(void);
61void EEPROM_ReadDeviceParameter(void);
62uint16_t EEPROM_ReadFirstStart(void);
63void EEPROM_StoreConfig(bool writeSN);
64
65typedef struct __attribute__((packed))
66{
67 uint32_t sn;
68 uint32_t baudrate; // 8-9 Die Modbus Baudrate (default 19200 Bit/s). Gltig im Bereich von 50 Bit/s bis 1000 000 Bit/s
69 uint16_t parityMode; // 10 UART Parity Mode (default EVEN) mgliche Werte 0=EVEN, 1=ODD, 2=NONE
70 uint16_t stopBit; // 11 UART Stop Bit Reserviert, Aktuell automatisch selektiert nach Modbus standart Bei Parity EVEN oder ODD 1, bei NONE werden 2 stopbits genutzt
71 uint16_t slave_address; // 12 Modbus Slave Adresse (default 1) mgliche Werte von 1 bis 247
72 uint16_t first_start_id;
73
74} flash_device_parameter_t ;
75
76
77
78#ifdef __cplusplus
79}
80#endif
81
82#endif /* EEPROM_EMULATION_H */
Note: See TracBrowser for help on using the repository browser.