So finden Sie die Geräte-id ein STM32F103RET
Habe ich gesagt, dass jeder STM32F103RET Geräte tragen eine eindeutige Geräte-id.Wenn ja, was ist das Verfahren zum abrufen der ID?Ich arbeite mit einem system, wobei ich die Kommunikation mit mehr als einem STM-borads. Zu unterscheiden jeder STM-board kann ich dieses eindeutige Id.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie diese Informationen finden Sie in STM32F103 Referenz-Handbuch. Genauer gesagt, Sie möchten, Lesen Sie Kapitel 30.2 Unique device ID register (96 bits).
Also deine Geräte-ID enthalten, in nur-lese-register, genannt U_ID. Dieses register Adresse
0x1ffff7e8
. Es ist 96 bit lang, so dass es gelesen werden kann (zum Beispiel) mit 3 Operationen Lesen, je 32-bit lang. Natürlich können Sie nicht halten Sie es in eine variable. So sollten Sie kommen mit einigen Art und Weise der Speicherung im Gedächtnis. Es kann wie ein array, oder eine Struktur, etc.Ich würde wahrscheinlich benutzen Sie eine Struktur für diesen Zweck, Verwendung von offsets beschrieben in Referenz-Handbuch:
Wie zu Lesen, es ist bis zu Ihnen (hängt davon ab welches framework Sie verwenden, z.B. in libopencm3 Sie haben MMIO32 makro für diese). Im Allgemeinen Fall würde ich so etwas machen:
Müssen Sie auch eine Funktion zum vergleichen von zwei IDs. Sie können entweder
memcmp()
oder einige benutzerdefinierte Funktion für diese Angelegenheit. Ich würde es vorziehen, eine benutzerdefinierte in diesem Fall:Können Sie es verwenden, wie:
UPDATE
Als ich verstehe Ihre situation:
Bild unten zeigt den Fall mit I2C-bus verwendet für Getriebe-ID.
Board 1 haben Sie GPIO1 interrupt-handler ausgeführt, für Brett 2 -- GPIO-2-interrupt-handler. Damit Sie wissen, welche Fragen für device-ID. Also Geräte-ID erhalten Sie, ein zu einer Zeit. Von hier aus können Sie herausfinden, wie bewahren Sie diese IDs. Ich schlage vor, verwenden Sie regelmäßig array:
Ist hier pseudo-code zeigt, wie diese bevölkern array:
(
isr
steht für Interrupt-Service-Routine, das ist das gleiche wie die interrupt-handler).Wenn Sie sicher sind, dass Ihr zwei client-boards sind ready für die I2C übertragung in einer Zeit, als master-board ist gonna bitten Sie Sie, für IDs, die Sie loswerden können 2 GPIO-Leitungen und benutzen Sie einfach die I2C-Transaktionen von der master-Karte, um Kunden, Wann immer Sie wollen.
Öffnen Sie einen Editor und schreiben diese:
Dann speichern Sie es als ".Fledermaus" Datei dann ausführen!