Forum: Mikrocontroller und Digitale Elektronik ATSAMD51 und SPI-/SERCOM-Statusabfragen


von Narvik (Gast)


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!

von Jim M. (turboj)


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.

von Narvik (Gast)


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.

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.