Hi, ich habe hier einen ATSAMD51G, bei dem ich SPIs sowohl als Master als auch als Slave verwende, und bei dem mir ein paar Dinge komisch vorkommen (vielleicht habe ich ja auch einfach nur das Handbuch falsch verstanden): Wenn ich mit dem SPI-Slave Daten empfange, so kann ich das mittels INTFLAG RXC abfragen. Ist dieses Flag gesetzt, so befinden sich Daten im DATA-Register, die ich anschließend lesen kann. Meine Frage hier: gibt es da einen FIFO, den ich aktivieren kann oder muss ich wirklich immer DATA gelesen haben, bevor das nächste SPI-Frame komplett angekommen ist und meinen aktuellen Inhalt überschreibt? Weiterhin: wenn ich mit dem SPI-Master Daten versenden will, dann passiert das, in dem ich diese in das entsprechende DATA-Register schreibe. Laut Handbuch kann ich hier dubioserweise auch wieder mittels INTFLAG RXC (also R=receive!) überprüfen, ob diese Daten vollständig gesendet wurden. Kann das stimmen? Und kann das funktionieren, wenn mein Master nur Daten sendet und gar nicht darauf ausgelegt ist, auch welche zu empfangen, weil die Empfangsleitung gar nicht angeschlossen ist? Danke schon mal!
Narvik schrieb: > Meine Frage hier: gibt es da einen FIFO, Es gibt ein dickes SAM D5X Family Datasheet, da stehen solche Informationen drin. Narvik schrieb: > Laut Handbuch kann ich hier dubioserweise auch wieder mittels > INTFLAG RXC (also R=receive!) überprüfen, ob diese Daten vollständig > gesendet wurden. Kann das stimmen? Ja, denn SPI Master sendet und empfängt immer gleichzeitig. Nicht benötigte Daten schmeisst man danach einfach weg. Das Receive Flag stellt sicher das die Daten auch wirklich schon gesendet wurden. Das TX Flag gibt nämlich i.d.R. nur an das der TX Puffer für das nächste Byte frei ist - das ist oft schon während des Sendens der Fall (->Schattenregister bzw. FIFO). In Ablaufsteuerungen (z.B. für CS) ist es aber wichtig zu wissen ob die Übertragung abgeschlossen ist.
Jim M. schrieb: >> Meine Frage hier: gibt es da einen FIFO, > > Es gibt ein dickes SAM D5X Family Datasheet, da stehen solche > Informationen drin. Japp und genau eben da kann ich nichts finden: da ist nur die Rede von zwei Registern (das Schieberegister, in welchem die Bits landen, während der Empfang läuft und das DATA-Register, wo ein Datenframe drin landet, so bald der Empfang per /SS als beendet markiert wurde). Das wäre dann kein FIFO, was mir für so einen doch nicht ganz primitiven Chip irgendwie sehr komisch vorkommt.
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.