Forum: Mikrocontroller und Digitale Elektronik Geeignete .c Bibliothek für ICM 20948 Bewegungssensor


von Simon K. (simon1516)


Lesenswert?

Hallo zusammen,

ich habe hier ein dev Board mit einem ICM20948 
(https://shop.pimoroni.com/products/icm20948) und möchte nun 
Bewegungsdaten über I2C mit einem nRF52833 DK von Nordic 
(https://www.nordicsemi.com/Software-and-tools/Development-Kits/nRF52833-DK) 
auslesen.

Im Vorfeld habe ich über einen I2C Scanner aus dem Nordic SDK 
sichergestellt, dass der ICM20948 erreichbar ist. Die I2C Verbindung 
steht also. Weiterhin gibt es in dem Nordic SDK Beispiele, die das 
lesen/schreiben über I2C (bzw TWI bei Nordic) veranschaulichen.

Informationen zu den Registern des Sensors findet man im Datehnblatt:
https://invensense.tdk.com/wp-content/uploads/2016/06/DS-000189-ICM-20948-v1.3.pdf

Meine Frage: Welche Bibliothek würdet ihr empfehlen, um mit diesem 
Sensor zu arbeiten? Es gibt unzählige, verschiedene auf Github, ich 
blicke da nicht wirklich durch. Ich arbeite mit der Segger IDE sowie 
größtenteils mit den Beispielen aus dem Nordic SDK.

Im Nordic Forum wurde diese Bibliothek empfohlen:

https://github.com/IOsonata/IOsonata/blob/master/src/sensors/agm_invn_icm20948.cpp

Meine Bibliotheken bestehen derzeit allerdings lediglich aus .c Files, 
weswegen ich nicht weiß ob ich die Bibliothek überhaupt nutzen kann. 
Weiterhin werden in dieser Datei sehr viele Header Dateien aufgerufen, 
die allerdings nicht in dem Verzeichnis vorhanden sind, die ich aber 
brauche. Wo kriege ich die her?

Auf der Seite des Herstellers habe ich auch nix brauchbares gefunden. 
Wie würdet ihr Vorgehen?

Danke und Gruß

Simon

von Einer K. (Gast)


Lesenswert?

Mich würde mal interessieren, warum du nicht von C auf C++ umschwenkst.
Irgendwelche Nachteile kann ich da nicht erkennen.

von Simon K. (simon1516)


Lesenswert?

Arduino Fanboy D. schrieb:
> Mich würde mal interessieren, warum du nicht von C auf C++
> umschwenkst.
> Irgendwelche Nachteile kann ich da nicht erkennen.

Ich war nicht sicher, ob der Compiler meckert, wenn ich eine C++ 
Bibliothek nehme.

Simon K. schrieb:
> Weiterhin werden in dieser Datei sehr viele Header Dateien aufgerufen,
> die allerdings nicht in dem Verzeichnis vorhanden sind, die ich aber
> brauche. Wo kriege ich die her?

Kannst du dazu noch was sagen? Ist es normal, das in Github Bibliotheken 
veröffentlich werden, ohne die ganzen inkludierten (gibts das Wort?) 
Header Dateien?

von Einer K. (Gast)


Lesenswert?

Simon K. schrieb:
> Ich war nicht sicher, ob der Compiler meckert, wenn ich eine C++
> Bibliothek nehme.
Natürlich wird ein C Compiler keinen C++ Code fressen!
Zumindest nicht, wenn dort die C++ Features genutzt werden.
Umgekehrt sieht das schon ganz anders aus.
Wenn man die C Extrawürste weg lässt, dann nimmt ein C++ Compiler auch 
recht gerne für C geschriebenen Code.

In ein *.cpp Hauptprogramm übersetze *.c Dateien/Libraries 
einzubinden(linken) ist kein Problem.

Ich vermute, zu deiner C Toolchain, gehört auch ein C++ Compiler.

Simon K. schrieb:
> Kannst du dazu noch was sagen? Ist es normal, das in Github Bibliotheken
> veröffentlich werden, ohne die ganzen inkludierten (gibts das Wort?)
> Header Dateien?

Fremde Anteile, DARF man nicht als eigene publizieren.
Dann findet sich in der Doku ein Verweis.
Auf der Eingangsseite des Github Dingen, findet sich ein Hinweis, wo du 
dir den Kram absammeln kannst.

Aber dass die entsprechenden Hinweise überlesen werden, dass ist schon 
eher normal.


Auszug:
ICM-20948 Motion_Driver : Create a user at 
https://invensense.tdk.com/developers/software-downloads/. In the 
"Development Kits" block, download "DK-20948 SmartMotion eMD 1.1.0". 
Unzip the downloaded file and navigate to EMD-Core/sources. Copy the 
folder Invn to external/Invn as indicated in the folder tree bellow.

von Simon K. (simon1516)


Angehängte Dateien:

Lesenswert?

Arduino Fanboy D. schrieb:
> Auszug:
> ICM-20948 Motion_Driver : Create a user at
> https://invensense.tdk.com/developers/software-downloads/. In the
> "Development Kits" block, download "DK-20948 SmartMotion eMD 1.1.0".
> Unzip the downloaded file and navigate to EMD-Core/sources. Copy the
> folder Invn to external/Invn as indicated in the folder tree bellow.

Danke! Ich habe nun alle Dateien entsprechend in die Ablage kopiert. 
Leider bekomme ich noch einen Fehler beim Kompilieren (s. Screenshot). 
Im Projekt sind u.a. "nRF_atomic.c/h" Dateien vorhanden, nicht aber das 
was ihm da noch fehlt. Weiß jemand wodran das noch liegt?

Danke und Gruß

Simon

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.