Hallo, ich beschäftige mich zurzeit mit der Programmierung von Mikrocontroller. Beim Durchlesen einiger Datenblätter ist mir aufgefallen, dass manche Sensoren ein sogenanntes WHO_AM_I Register besitzen. Welche Aufgabe hat dieses Register, bzw. welche Informationen kann ich z.B. über SPI mit meinem Mikrocontroller herauslesen? Wird dieses Register auch für eine automatische Erkennung von Peripheriegeräten verwendet?
Gast
#5738531
Stephan R. schrieb: > auch nur MfG Klaus
Gast
#5738543
Am besten mal einige Links auf die entsprechenden Datenblätter posten. An sich müsste es auch darin stehen, was in dem Register enthalten sind. Aber wir können ja mal für Dich nachschauen.
Gast
#5738554
Stephan R. schrieb: > Welche Aufgabe hat dieses Register, bzw. welche Informationen kann ich > z.B. über SPI mit meinem Mikrocontroller herauslesen? Das steht doch alles im Datenblatt. Manche EEPROMs haben da eine einzigartige Seriennummer drin stehen. > Wird dieses Register auch für eine automatische Erkennung von > Peripheriegeräten verwendet? Ja.
Stephan R. schrieb: > Wird dieses Register auch für eine automatische Erkennung von > Peripheriegeräten verwendet? Ja genau dafür ist es unter anderem gedacht. Wenn man z.B. einen Sensor hat den es in verschiedenen Varianten gibt, kann man anhand der ID oder WHO_AM_I Signatur entsprechend prüfen um welchen Sensor es sich handelt. Also z.B. beim BMP/BME280, welche pinkompatibel sind, kann man je nach ID entscheiden ob man neben der Temperatur und Luftdruck eben auch die Luftfeuchtigkeit abfragen kann und die Temp und Pressure Register anders skalieren muss. So kann man ggf. schon im voraus Obsoleszenzen berücksichten bzw. verschiedene Bestückungsvarianten ohne Änderung der Firmware implementieren. Kann man auch gut z.B. im Linux Kernel sehen:
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 | |
Vielen Dank für die Antworten :D Theor schrieb: > Am besten mal einige Links auf die entsprechenden Datenblätter posten. http://www.invensense.com/wp-content/uploads/2017/08/ICM-20689-v2.2-002.pdf (Seite 35/49) Timmo H. schrieb: > Ja genau dafür ist es unter anderem gedacht. Wenn man z.B. einen Sensor > hat den es in verschiedenen Varianten gibt, kann man anhand der ID oder > WHO_AM_I Signatur entsprechend prüfen um welchen Sensor es sich handelt. Würde dies auch mit unterschiedlichen Sensoren funktionieren? Zum Beispiel zur Erkennung, ob ich an den SPI-Port 1 einen ICM20689 oder einen BME280 anschlossen habe?
Stephan R. schrieb: > Timmo H. schrieb: >> Ja genau dafür ist es unter anderem gedacht. Wenn man z.B. einen Sensor >> hat den es in verschiedenen Varianten gibt, kann man anhand der ID oder >> WHO_AM_I Signatur entsprechend prüfen um welchen Sensor es sich handelt. > Würde dies auch mit unterschiedlichen Sensoren funktionieren? > Zum Beispiel zur Erkennung, ob ich an den SPI-Port 1 einen ICM20689 oder > einen BME280 anschlossen habe? Hängt davon ab. Es ist leider nicht genormt wo und ob es ein ID/WHO_AM_I Register geben muss (außer bei genormten IC Klassen, wie z.B. Flash Chips nach JEDEC). Aber wenn du weißt welche Sensoren auf dich zukommen, kannst du dir zumindest einen Entscheidungs-Algorithmus ausdenken der eine art Plausibilitätsprüfung macht.
Timmo H. schrieb: > Aber wenn du weißt welche Sensoren auf dich zukommen, > kannst du dir zumindest einen Entscheidungs-Algorithmus ausdenken der > eine art Plausibilitätsprüfung macht. Vielen Dank, ich glaube dass ist die Lösung für mein Problem :D
Bei der Erstinbetriebnahme einer neu entwickelten Baugruppe und als Treiberentwickler freut man sich über ein Register, welches immer einen garantierten Inhalt hat. ;)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.