ATSAMD51 und SPI-/SERCOM-Statusabfragen

Gast #6244756
Lesenswert?
• ▲
▼
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!
#6244815
Lesenswert?
• ▲
▼
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.
Gast #6244948
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.