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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.