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 :-)