Die STM32 Unique Device ID in C auslesen
English
Deutsch
Alle STM32-Mikrocontroller verfügen über eine 96-Bit-werksprogrammierte Unique Device ID. Es war für mich jedoch schwierig, ein angemessen lizenziertes Beispiel zu finden, wie man sie auf eine Weise ausliest, die mit verschiedenen Familien und Compilern kompatibel ist.
Hier ist ein einfacher Header, der ein Makro für die Device-ID-Adresse definiert. Während ich die Adresse für sowohl die STM32F4- als auch die STM32F0-Familie überprüft habe, können andere Familien leicht abweichende Adressen für die Device-ID haben. Überprüfe das Referenzhandbuch deiner STM32-Familie, falls Fehler auftreten.
STM32-UID.h
/**
* Ein einfacher Header zum Auslesen der STM32-Device-UUID
* Getestet mit STM32F4- und STM32F0-Familien
*
* Version 1.0
* Geschrieben von Uli Koehler
* Veröffentlicht auf https://techoverflow.net
* Lizenziert unter CC0 (Public Domain):
* https://creativecommons.org/publicdomain/zero/1.0/
*/
#ifndef __UUID_H
#define __UUID_H
#include <stdint.h>
/**
* Der werksprogrammierte STM32-UUID-Speicher.
* Drei Werte à 32 Bits ab dieser Adresse
* Verwendung so: STM32_UUID[0], STM32_UUID[1], STM32_UUID[2]
*/
#define STM32_UUID ((uint32_t *)0x1FFF7A10)
#endif //__UUID_H
Hier ist ein einfaches Beispiel, wie man ihn ausliest:
stm32-uid-example.c
#include "STM32-UID.h"
void foobar() {
uint32_t idPart1 = STM32_UUID[0];
uint32_t idPart2 = STM32_UUID[1];
uint32_t idPart3 = STM32_UUID[2];
//etwas mit den gesamten 96 Bits anfangen
}If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow