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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.