IMU FIS1100 konfigurieren

Wir haben an der Bewegungssensoreinheit FIS1100 gearbeitet.

Wir haben uns entschieden, ihn als traditionellen Bewegungssensor zu verwenden (FIS1100 kann in zwei Modi betrieben werden, Attitude Engine Mode und Traditional Sensor Mode). Wir verwenden I2C für die Kommunikation mit dem Bewegungssensor. Das Lesen und Schreiben auf den Bewegungssensor funktioniert einwandfrei. Nachdem ich die Konfigurationen vorgenommen habe, sehe ich keine Ausgabe in den Ausgabedatenregistern.

Kann mir jemand sagen, wo ich in meiner Konfiguration falsch gelaufen bin, da dies meine erste Erfahrung mit Bewegungssensoren ist.

Nachfolgend meine Konfiguration:

CTRL1 – 0x00
CTRL2 – 0x00 [Vollausschlag = 2 g und ODR = 1000]
CTRL3 – 0x00 [Vollausschlag = 32 gps und ODR = 1000]
CTRL4 – 0x00 [Es ist kein externes Magnetometer an FIS1100 angeschlossen]
CTRL5 – 0x00 [Tiefpass deaktiviert und Hochpassfilter]
CTRL6 - 0x00
CTRL7 - 0x83 [Sample-Synchronisation, Beschleunigungsmesser und Gyroskop aktivieren]

Wie ich Daten aus Ausgangsdatenregistern lese [Ax,Ay,Az und Gx,Gy,Gz]

Lesen Sie das STATUS0-Register [Stoppen Sie die Aktualisierung der Ausgangsdaten].
Ausgangsdatenregister lesen [A[X,Y,Z] [H,L] , G[X,Y,Z] [H,L] ].

Hinweis: Wir haben auch einen Beschleunigungssensor-Selbsttest durchgeführt, aber es gibt keine
Ausgangsdaten in den Ausgangsdatenregistern.

Ausgang:

MS conf abgeschlossen
/*************CTRL registriert nach Konfiguration ***************************** ***/
Strg1 = 0x0
Strg2 = 0x0
Strg3 = 0x0
Strg4 =
0x0 Strg5 = 0x0
Strg6 = 0x0
Strg7 = 0x83
/************************ ******************************/
STATUS0 = 0
ax = 0 : ay = 0 : az = 0 ;
gx = 0 : gy = 0 : gz = 0 ;

Das Datenblatt kann unter folgendem Link heruntergeladen werden:
https://www.fairchildsemi.com/datasheets/FI/FIS1100.pdf


Bearbeitet, um Antworten auf Fragen und Schaltpläne hinzuzufügen:

Das Lesen und Schreiben auf den Bewegungssensor funktioniert ordnungsgemäß - ich habe es bestätigt, indem ich die I2C-Leitungen mit DSO untersucht habe; Außerdem, wenn ich 0x00-Register lese, bekomme ich 0xFC.

Wie haben Sie bewiesen, dass Ihr Hardwaredesign (einschließlich I2C-Schnittstelle) korrekt ist? - Wir haben das im Datenblatt FIS1100 angegebene Anwendungsdiagramm (Abschnitt 1.4 im Datenblatt) verwendet (außer dass wir kein Magnetometer verwendet haben).

Woher wissen Sie, dass Ihr Softwareprogramm korrekt ist? - Als ich das Datenblatt las, habe ich Folgendes verstanden: Wir können den Bewegungssensor FIS1100 mit sieben Steuerregistern steuern. Ich habe aufgelistet, wie ich sie im Abschnitt AUSGABE oben konfiguriert habe. Hier muss ich wissen, ob zusätzlich zu dem, was ich oben getan habe, noch etwas getan werden muss oder ob ich es falsch konfiguriere????
Schematische Darstellung

Danke

Hallo - Sie müssen noch viel mehr Informationen liefern, bevor Ihnen jemand helfen kann :-( Sie sagten: "Lesen und Schreiben auf den Bewegungssensor funktioniert einwandfrei." (a) Wie genau haben Sie das bestätigt? (b) Lesen Sie Register 0 vom Gerät - welchen Wert lesen Sie? (c) Wie haben Sie bewiesen, dass Ihr Hardware-Design (einschließlich I2C-Schnittstelle) korrekt ist? (d) Bitte liefern Sie ein schematisches Diagramm und erklären Sie Ihre Hardware. (e) Woher wissen Sie das? Bitte geben Sie vollständige und klare Antworten auf diese Fragen, indem Sie sie am Ende Ihres ursprünglichen Beitrags hinzufügen, indem Sie die Schaltfläche "Bearbeiten" verwenden.
Hallo Sam, bitte lass es uns wissen, wenn du weitere Informationen zu unserer Einrichtung benötigst :)

Antworten (1)

Vielen Dank für das Hinzufügen des Schemas und der bisherigen Antworten. Ausgehend davon habe ich einige Bedenken bezüglich des Hardwaredesigns und einige Vorschläge für Sie, um bei der Fehlerbehebung voranzukommen.

Hardware :

a) Indem Sie Register 0 des FIS1100 erfolgreich lesen, gibt mir das etwas Vertrauen in die I2C-Bus-Funktionalität. Jedoch:

  • Obwohl der I2C-Bus zumindest teilweise funktioniert, würde ich persönlich eine Oszilloskopsonde mit niedriger Kapazität (dh keine "x1") verwenden und die I2C-Wellenformen auf beiden Seiten des I2C-Spannungsumsetzers PCA9306 überprüfen. Dies dient dazu, noch mehr Vertrauen in die Wellenform zu gewinnen und zu überprüfen, ob sie die im FIS1100-Datenblatt angegebenen Timing-Anforderungen erfüllt.

  • Die Notwendigkeit, die I2C-Bus-Wellenform zu überprüfen, gilt insbesondere auf der 3,3-V-Seite (MCU) des PCA9306, wo ich überrascht bin, dass der Designer 10k gewählt hat Ω Pullup-Widerstände, insbesondere wenn der Bus mit mehr als 100 kHz betrieben wird.

b) Obwohl Sie sagen, dass Ihr Design auf dem Datenblatt basiert , unterscheidet es sich auch in mehrfacher Hinsicht, einschließlich:

  • Keine MCU-Steuerung des FIS1100 RST (Reset)-Pins; nur ein Power-On-Reset. Selbst wenn dieser Reset-Impuls die FIS1100-Anforderungen erfüllt (das müssen Sie überprüfen), haben Sie keine Möglichkeit, den FIS1100 ohne Aus- und Wiedereinschalten zurückzusetzen. Außerdem durchläuft das „offizielle“ FIS1100 SDK, wie ich später erklären werde, einen komplexeren (aber nicht vollständig erklärten) Reset-Vorgang, den Sie ohne MCU-Steuerung des FIS1100-Reset-Pins nicht durchführen können.

  • Sie haben den RESV3-Pin über 100k an Masse gebunden Ω Widerstand . Das Datenblatt besagt, dass es an Masse gebunden werden sollte, und eine direkte Verbindung zur Masse ist im Datenblatt angegeben. Wir wissen nicht, wie sich Ihre Änderung am Beispieldesign auf das Verhalten des FIS1100 auswirken könnte, da dies ein reservierter Pin ist. Wenn Sie jedoch keine spezifischen Informationen vom IC-Hersteller haben, um vom Datenblatt abzuweichen, ist eine solche Abweichung im Allgemeinen ein riskantes Vorhaben.

  • Nach meiner Erfahrung mit anderen IMUs ist eine gute Leistungsentkopplung für ein korrektes Verhalten unerlässlich. Ich sehe, Ihr Schaltplan zeigt die empfohlenen Kondensatoren C20 und C21, aber das PCB-Layout muss auch berücksichtigt werden.

  • Am PCA9306 V REF2 Pin fehlt die empfohlene Entkopplung (siehe Abschnitt 9.2.2.1 im PCA9306 Datenblatt ).

Software :

Ich habe für Sie schnell gesucht, aber ich habe nur eine Stelle mit Beispielcode für die Verwendung des FIS1100 gefunden - und das ist das offizielle SDK des Herstellers. Da Sie dies nicht erwähnt haben, werde ich erklären, wie Sie es bekommen können:

  • Gehen Sie zu diesem Link, um ein "My Fairchild"-Konto zu erstellen. (Offensichtlich kann dieser Link im Laufe der Zeit verrotten, seien Sie also darauf vorbereitet, ihre Website zu überprüfen, wenn dieser Link fehlschlägt.)

  • Melden Sie sich bei Ihrem neuen Konto an, aktualisieren Sie Ihr Kontoprofil und geben Sie die Adresse Ihres Unternehmens ein (in meinem alten „My Fairchild“-Konto fehlte eines der Adressfelder, und der Download wurde nicht fortgesetzt, bis dieser Teil des Kontoprofils abgeschlossen war ).

  • Gehen Sie zu: https://www.fairchildsemi.com/evaluate/evaluation-boards/FEBFIS1100.html

  • Laden Sie das Benutzerhandbuch für ihr FIS1100-Evaluierungsboard über den Link auf dieser Seite herunter; Es zeigt Ihnen einen Beispielschaltplan und ein PCB-Layout.

  • Klicken Sie unten auf dieser Seite unter "Verwandte Ressourcen" auf das Symbol "FEB Supporting Files (ZIP)" (ich kann es hier nicht verlinken, da es eine Menge JavaScript verwendet und von der oben aufgeführten Seite aus angeklickt werden muss, und Sie müssen sich zuerst bei Ihrem „My Fairchild“-Konto anmelden).

  • Nachdem Sie die Lizenzvereinbarung gelesen und akzeptiert haben, können Sie die Datei herunterladen (aktuelle Version ist 41,2 MB), die (leider) eine ausführbare Windows-Installationsdatei ist. Bei der Ausführung (erfordert Administratorberechtigungen) bietet es an, die gesamte Software (und Treiber) zu installieren, die zur Verwendung des FIS1100-Evaluierungskits auf dem empfohlenen MCU-Board erforderlich ist.

  • Unter dem Installationsverzeichnis, z. B. default:, C:\Program Files\Fairchild Semiconductor\FIS1100 SDK 1.0.3suchen Sie unter dem SDKVerzeichnis, einschließlich der Unterverzeichnisse Documentation, Examplesund . fis_driverDer fis_driverQuellcode des Unterverzeichnisses kann leicht überprüft werden, um zu sehen, wie die verschiedenen FIS1100-Register und -Signale verwendet werden. Aufgrund der Softwarelizenz glaube ich nicht, dass ich diesen Code hier einfügen kann.

  • Interessanterweise enthält dieser Quellcode Beschleunigungsmesser- und Gyroskop-Selbsttestroutinen, die nicht genau der im FIS1100-Datenblatt gezeigten Abfolge von Ereignissen folgen. Ich weiß nicht, ob die Unterschiede wichtig sind, aber Sie haben Folgendes gesagt:

Wir haben auch einen Beschleunigungssensor-Selbsttest durchgeführt, aber es gibt keine Ausgangsdaten in den Ausgangsdatenregistern.

Daher würde ich in Betracht ziehen, den Selbsttest erneut zu versuchen, aber der im Quellcode gezeigten Reihenfolge der Registerzugriffe zu folgen, anstatt der im Datenblatt gezeigten. Interessant wäre auch, ob sich das INT2Signal wie im Datenblatt beschrieben verhält, wenn man versucht den Selbsttest durchzuführen.

  • Beachten Sie, dass die Fis1100_reset()Funktion im Beispielquellcode den FIS1100 RST-Pin manuell umschaltet (was Ihr Schaltplan nicht zulässt), ihn für 100 uS bestätigt und dann einige Befehle sendet, für die ich die Bedeutung nicht (schnell) finden kann . Auch dies könnte (oder auch nicht ) für das falsche Verhalten, das Sie sehen, relevant sein.

  • Du hast gesagt, dass du:

STATUS0 Register lesen [...] Ausgangsdatenregister lesen [...] ctrl7 = 0x83

OK, Sie haben also CTRL7 Bit 7 (SyncSimpl) gesetzt. Daher kann es für Sie hilfreich sein, genau zu überprüfen, was im Register gemeldet wird STATUS0. Wenn beispielsweise die Bits des Beschleunigungsmessers und des Gyroskops alle Null sind, würde dies darauf hindeuten, dass der Beschleunigungsmesser und das Gyroskop keine Messwerte erzeugen . Interessant wäre auch, ob sich das INT2Signal bei dem Versuch so verhält wie im Datenblatt beschrieben.

Ich hoffe, diese Kommentare und Vorschläge helfen Ihnen bei der Fehlerbehebung - natürlich liegt es an Ihnen, ob Sie sich entscheiden, diese Informationen zu verwenden :-)

Hallo Sam, das Verbinden des RESV3-Pins mit Masse durch den Widerstand ist der Fehler, den wir gemacht haben. Nach dem Entfernen des Widerstands funktioniert unser Bewegungssensor ordnungsgemäß. Danke, dass Sie Ihre Zeit aufgewendet und uns geholfen haben :)
@Ekambaram - Das sind gute Neuigkeiten - danke für das Feedback und ich bin froh, dass Sie das Problem gefunden haben! Da es sich um einen "reservierten" Pin handelt, werden wir leider nie seine genaue Verwendung kennen. Befolgen Sie wie immer das Datenblatt :-) Nochmals vielen Dank!