Forum: Mikrocontroller und Digitale Elektronik ATSAMD51 empfängt Datenmüll auf SPI


von Sortland (Gast)


Lesenswert?

Ich versuche hier gerade mit einem ATSAMD51G18 Daten auf zwei 
SPI-Eingägnen (der ATSAM agiert als Slave) zu empfangen. Beide SPIs 
nutzen den gleichen externen Clock und das gleiche Externe CS-Signal, 
aber unterschiedliche Datenleitungen. Da ich 22-Bit-Frames empfangen 
möchte, habe ich die SPIs entsprechend konfiguriert:
1
hri_sercomi2cm_set_CTRLC_DATA32B_bit(SERCOM5);
2
hri_sercomi2cs_set_LENGTH_LEN_bf(SERCOM5,22);
3
hri_sercomi2cs_set_LENGTH_LENEN_bit(SERCOM5);

Mein Problem: es werden zwar Daten empfangen (Abfrage per 
RXC-Statusbit), aber diese Daten sind ziemlicher Müll. 
Überraschenderweise stehen auch in den oberen 10 Bits des DATA-Registers 
Daten. Hier hätte ich eher erwartet, dass diese alle 0 sind, da ja nur 
22 Bit Empfangslänge konfiguriert sind.

Was habe ich hier möglicherweise übersehen? Schiebt das Eingangsregister 
trotzdem bei jedem SPI-Frame auf 32 Bit weiter, so dass die Daten jedes 
mal versetzt in DATA liegen? Wenn ja: kann man das irgendwie 
konfigurieren/resetten? Oder: was könnte hier sonst schief laufen?

Jeder Hinweis ist willkommen :-)

von Rudolph R. (rudolph)


Lesenswert?

>hri_sercomi2cs_set_LENGTH_LEN_bf(SERCOM5,22);

Probier doch mal aus die SPI Funktionen zu benutzen, statt die für I2C.
Oder schreib eben direkt in die Register.

von Sortland (Gast)


Lesenswert?

Die SPI-Funktionen beschreiben exakt das gleiche Register. Ist geändert, 
weil einfach sauberer und schöner, macht bei meinem Problem aber leider 
keinen Unterschied.

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.