Forum: Mikrocontroller und Digitale Elektronik AT91SAM7 SPI <-> AD7797


von Mike (Gast)


Angehängte Dateien:

Lesenswert?

Hi.

Ich versuche eine Wägeanwendung zu schreiben und benutze hierfür einen 
AT91SAM7s256 und einen AD7797 die über SPI kommunizieren.
Dies funktioniert auch eingentlich wunderbar, wenn da nicht ein 
klitzekleiner  Fehler im erkennen des letzten Bits auf der MISO Leitung 
wäre.

Z.B. Der AD7797 ist im IdleMode oder PowerDownMode und ich sende ihm den 
Befehl als nächstes das Offset Register auszulesen, von dem ich weiss 
das dort 0x800000 drinne steht. Die empfangenen Daten sind aber 
0x800001. Es ist aber auch egal welches Register ich auslesen möchte, es 
ist immer das letzte Bit welches falsch erkannt wird.

Zur Veranschaulichung hab ich mal ein paar Osszi Bilder mit angehangen.
Das eine zeigt die Daten des Moderegisters des AD7797. Bei diesem Bild 
sieht man, das das letzte Bit anscheinend vom AD7797 vorzeitig schon 
wieder auf high gezogen wird.

Das andere Bild zeigt das letzte MISO Bit zur SCLK. Hier ist dann 
wiederum zu sehen, das das letzte Bit erst ca. 12ns nach der SCLK wieder 
zurückgesetzt wird. Und dies ist laut dem Datenblatt des AD7797 die Zeit 
t7, die mind. 10ns betragen soll.

Dies alles ist in dem Fall das der AD im Idle oder PowerDown Mode ist 
und er nicht kontinuierlich wandelt und somit MISO/DOUT in der regel auf 
high bleibt.
Wenn ich den AD jetzt kontinuierlich wandeln lasse, ist die meiste zeit 
MISO auf low und ist nur für kurze zeit auf high. Nämlich dann, wenn der 
AD eine wandlung fertig signalisiert. Das Resultat hierbei ist, wenn ich 
nun ein Register auslese wird das letzte Bit immer als 0 erkannt.

Hat jemand noch eine Idee was ich ändern könnte oder wo der Fehler 
liegen soll.

mfg
Mike

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.