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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Simon K. (simon1516)


Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
-2 lesenswert
nicht 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.

: Bearbeitet durch User
von Simon K. (simon1516)


Angehängte Dateien:
  • preview image for 1.PNG
    1.PNG
    73,9 KB, 37 Downloads

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.