SPI Timing Diagramme von A/D-Convertern interpretieren

Gast #5178022
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
Gast #5178182
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.