Ich habe einen Analog-Digital-Wandler, der Daten bei fallenden Flanken einliest und sendet. Ich habe auch zwei MCUs, die FEZ Hydra und die FEZ Cobra. Ich habe mit dem Oszilloskop festgestellt, dass die Daten in den ADC und die Daten aus dem ADC genau gleich sind, aber beim Lesen der Daten auf dem Computer, die die MCUs gespeichert haben, erhalte ich unterschiedliche Werte.
Da der ADC nur bei fallenden Taktflanken Ausgänge sendet, liest Hydra immer dann eine 1 ein, wenn sich die Datenausgangsbits von 0 auf 1 ändern, während die Cobra immer noch eine 0 einliest; und immer wenn sich die Datenausgangsbits von 1 auf 0 ändern, liest die Hydra eine 0 ein und die Cobra liest immer noch eine 1. Es scheint, als würde die Cobra nicht genug Zeit zwischen der negativen Taktflanke und dem Lesen des Eingangs geben, um dies zu ermöglichen damit das Update stattfindet.
Ich verwende die Spi-Bibliothek von Microsoft. Meine Frage ist: Kann ich die SPI-Lesefunktion irgendwie verzögern? Was soll mir in dieser Situation die vernünftige Ausgabe sein?
Hinweis: Es gibt eine Verzögerung von 60 ns bei der Datenzugriffszeit auf dem ADC.
SPI-Peripheriegeräte können die Taktpolarität und -phase in Bezug auf die Daten auswählen, sodass Sie sicherstellen müssen, dass die Daten an der richtigen Flanke gelesen werden. Es sieht so aus, als ob die beiden uCs unterschiedliche Phasen haben. Die SPI-Wiki-Seite (und jedes andere halbwegs anständige SPI-Tutorial) enthält Details:
Ich bin mir nicht sicher, wie Sie die Dinge mit Ihrer Hardware einrichten, aber die relevanten Einstellungen sollten nicht zu schwer zu finden sein.
Ich würde der vorherigen Antwort zustimmen. SPI-Peripheriegeräte haben im Allgemeinen zwei Bits irgendwo in den Steuerregistern. Diese werden Taktphase (wie bereits erwähnt) und Taktpolarität genannt . Die Taktphase bestimmt, ob Daten auf der steigenden oder fallenden Flanke von SCK abgetastet werden . Die Taktpolarität bestimmt nur den Zustand von SCK zwischen Byte-Übertragungen (einige Geräte interessieren sich nicht für diese Option).
Aus Ihrer Erklärung bin ich mir nicht ganz sicher, ob Sie Ihre Daten auf der fallenden oder steigenden Flanke einrichten ODER abtasten . Da Sie ein Bild mit Linien an abfallenden Flanken des Signals gezeichnet haben, möchten Sie vermutlich, dass Ihre Geräte den Wert genau an dieser Flanke abtasten (lesen). Das ist eher unkonventionell. Außerdem widerspricht es deinem Bild.
Der Bus funktioniert so.
Normalerweise erfolgt die Einrichtung beim Fallen und die Abtastung beim Steigen.
Am Ende wird das Korrigieren Ihrer Taktpolarität und / oder Taktphase Ihr Problem sehr wahrscheinlich beheben.
Benutzer1084113
Andi aka