Forum: Mikrocontroller und Digitale Elektronik SAMD21 - Konstrukteure unterbelichtet?


von Alexxx (Gast)


Lesenswert?

Hallo,

ich bin bei der Master-SPI gerade über ein idiotisches "Feature" 
gestolpert und frage mich, warum man das gerade so - bei einem 32Bit-µC 
- umgesetzt hat.
Und zwar geht es um das (Hardware-)Slave-Select-Signal.
Im DB ist es ja wenigstens beschrieben, dass wenn MSSEN= 1 ist,
die SPI nach jedem gesendeten Byte(!) !SS auf high setzt und eine Pause 
von fast 4Bit macht!
Das verringert nicht nur unnötig die Datenrate um 33%, sondern ist bei 
vielen Slave-ICs fatal, die erwarten dass während des ganzen Frames 
(>8Bit)
!SS auf low bleibt.
Die Idiotie der Entwickler zeigt sich für mich auch dadurch,
dass die SPI ja ein TXC-Flag hat, das man zur Ansteuerung von !SS
korrekter Weise hätte nutzen können! Dann wären die Pausen genauso 
unnötig!
Grrrrr...
Jedenfalls ist dieser HW-Modus für mich praktisch nie benutzbar!
Zusätzlich brauche ich bei meinen selbst geschriebenen allgemeinen 
SPI-Initialisierungsroutinen jetzt zusätzliche Fallunterscheidungen und
muss !SS umständlich selbst ansteuern...
Gerade habe ich zudem herausgefunden, dass wenn man MSSEN= 0 setzt,
anscheinend kein RXC-Flag mehr gesetzt wird! Kann das sein???
Das macht in meinen Routinen zusätzlich Scherereien...

...Oder habe ich 'was übersehen?

von jibi (Gast)


Lesenswert?

der usart hat einen speziellen modus für spi...

von Rudolph (Gast)


Lesenswert?

Meine Güte, einen I/O zu setzen ist auch extrem umständlich.
In Verbindung mit DMA braucht man sowieso eine Funktion um den DMA zu 
starten, da kann man auch den I/O setzen.
Und wenn der DMA durch ist nimmt man den I/O eben im Interrupt zurück.

Mehr Features würden mir auch besser gefallen, zum Beispiel 32 Bit SPI.
Aber so ist das eben.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Alexxx schrieb:
> Jedenfalls ist dieser HW-Modus für mich praktisch nie benutzbar!

Hör auf zu heulen und setze/lösche SS per Hand.

Der z.B. Raspi kann auch kein 32Bit SPI ... Offensichtlich sind nicht 
nur die "SAMD21 Konstrukteure" unterberlichtet.

von Christopher J. (christopher_j23)


Lesenswert?

Alexxx schrieb:
> ich bin bei der Master-SPI gerade über ein idiotisches "Feature"
> gestolpert

Ebenso ist es mir bei den STM32 mal ergangen. Die einfache (aber doch 
sehr praktikable) Lösung war, wie von Rudolph schon erwähnt, den Pin 
manuell zu setzen. Damit hat man auch mehr Freiheiten beim Pinout.

Hardware-NSS braucht man meiner Meinung nach nur im Slave-Modus und da 
kann man den anderen Master ja so einstellen, dass es mit der 
Framebreite passt.

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.