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
}

Check out similar posts by category: C/C++, Embedded