Forum: Mikrocontroller und Digitale Elektronik SPI Timing Diagramme von A/D-Convertern interpretieren


von Mikel (Gast)


Lesenswert?

Guten Morgen,

ich möchte mir zum Experimentieren einen Analog-Digital-Converter 
zulegen.
Diesen möchte ich per SPI an meinen Atmega168 anschließen.
Beim Durchgucken der Datenblätter stoße ich immer wieder auf die 
Timing-Diagramme für den SPI-Bus. Ich habe nun schon in mehreren 
Beiträgen gelesen, dass es bei der Ansteuerung zu Problemen beim Timing 
kommen kann.

Deswegen möchte ich gerne erstmal die Diagramme verstehen. Als Beispiel 
würde ich den ADS1255 in den Raum stellen. ( 
http://www.ti.com/lit/ds/symlink/ads1255.pdf )

Dort ist auf Seite 6 das Diagramm mit den verschiedenen Zeiten 
dargetellt.
Grundlegend habe ich das SPI schon verstanden. Ich schicke Daten an den 
Chip und er liefert mit im Gegenzug Daten zurück. Frage ist jetzt auf 
welche der Zeiten muss ich bei der Programmierung achten?! Muss man 
Delays einbauen? Zudem sieht es für mich in dem Diagramm so aus also 
würde die D_out Leitung eben nicht zeitgleich mit der D_in Leitung 
ausgegeben werden. Das heißt so etwas wie "Data = readSPI()" würde nicht 
funktionieren?

Vielen Dank
Mikel

von HildeK (Gast)


Lesenswert?

Mikel schrieb:
> Frage ist jetzt auf
> welche der Zeiten muss ich bei der Programmierung achten?!
Auf alle, die dort angegeben sind. Es heißt ja immer MIN oder MAX, in 
die jeweils andere Richtung hat man üblicherweise Spielraum.
> Muss man
> Delays einbauen? Zudem sieht es für mich in dem Diagramm so aus also
> würde die D_out Leitung eben nicht zeitgleich mit der D_in Leitung
> ausgegeben werden.
D_out und D_in sind ja auch Signale von unterschiedlichen Quellen.
SCLK wird von außen angelegt, die D_in-Datenwechsel müssen von den 
Taktwechsel mindestens 50ns Abstand (t4 und t5) haben. Setup- und 
Holdzeiten.
Mit D_out hat das gar nichts zu tun.

Wenn der Baustein Daten ausgibt, dann ist spezifiziert, mit welchen 
Abständen zu welcher Taktflanke er das tut und wie lange das Datum 
danach gültig ist. Wenn eine pos. Taktflanke kommt, dann dauert es z.B. 
höchstens t7=50ns bis das dazugehörende Datenbit gültig ist und es ist 
mindestens so lange gültig, bis die nächste pos. Flanke kommt.

> Das heißt so etwas wie "Data = readSPI()" würde nicht
> funktionieren?
Keiner weiß, wie readSPI() die Pins bewegt.

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.