SPI-Schnittstellen auf Mikrocontrollern

Meine Frage bezieht sich allgemein auf Mikrocontroller. Kann SPI mit 3 verschiedenen E / A-Pins implementiert werden, vorausgesetzt, einer ist ein Taktsignal? Gibt es etwas Besonderes bei bestimmten Pins, die ein Datenblatt als Master-In, Slave-Out oder Slave-Select angibt? Irgendetwas Besonderes bezieht sich auf irgendetwas Einzigartiges an der Hardware an diesem Pin im Gegensatz zu einem allgemeinen I/O-Pin.

Bit-Banging SPI ist eine ziemlich häufige Sache.
..es sei denn, die MCU ist der Slave. Dann müssen Sie normalerweise die Hardware-SPI-Einheit verwenden, um das Timing einzuhalten.

Antworten (3)

Einige der anderen Antworten haben vorgeschlagen, Bit-Banging zu verwenden, um das Problem der Zuweisung eines SPI-Peripheriegeräts zu beliebigen Pins zu lösen. Das Problem dabei ist die Geschwindigkeit; Einige SPI-Peripheriegeräte können mit einer Taktrate von 40 MHz oder höher ausgeführt werden, und es gibt keine Möglichkeit, mit der Firmware Bit-Banging mit dieser Rate durchzuführen.

Eine Alternative besteht darin, eine Hardwarearchitektur zu verwenden, die periphere Pins bereitstellt, die jedem beliebigen Pin zugewiesen werden können. Ein solcher Mikrocontroller, der dies tut, ist die 8051-Familie von Silicon Labs. Es verwendet einen E/A- Crossbar-Schalter , damit Peripheriegeräte nahezu jedem Port-Pin zugewiesen werden können, wie unten gezeigt:

Geben Sie hier die Bildbeschreibung ein

So kann beispielsweise SCK jedem Pin von P0-0 bis P3-0 zugewiesen werden, MISO von P0-1 bis P3-1 und so weiter.

Die PIC24F-Familie von Microchip ermöglicht es auch, nahezu jedes Peripheriegerät einer beliebigen Anzahl von I/O-Pins auf dem Mikrocontroller zuzuordnen, indem eine Funktion namens Peripheral Pin Select verwendet wird. Dies ist für Peripheriegeräte wie UARTs und SPI-Module verfügbar, jedoch nicht für solche, die spezielle Hardware wie I2C und USB erfordern.

Das Bild unten zeigt ein Blockdiagramm der Schaltung für einen typischen E/A-Pin, mit einem Multiplexer oben zum Auswählen des Ausgangs eines von verschiedenen Peripheriegeräten zum Ausgangspin und unten einem weiteren Multiplexer zum Auswählen eines von mehreren Eingängen Pins mit dem Eingang eines Peripheriegeräts.

Die 16-Bit-PIC24F-Serie kann bis zu vier SPI-Ports haben, wobei jeder auf die 39 neu belegbaren Pins eines 100-Pin-Mikrocontrollers abgebildet wird.

Geben Sie hier die Bildbeschreibung ein

Vielen Dank für diese ausführliche Antwort. Ich habe etwas Neues gelernt :)

Ja, man kann es bit-bangen . Es ist normalerweise nicht so schnell, als ob dedizierte Hardware vorhanden wäre.

Chip Select nicht vergessen (also vier Pins für bidirektionale Kommunikation). Normalerweise benötigen Sie einen Chip Select, damit es richtig funktioniert.

Nö. Alle Ausgänge sind normale Push-Pull-Ausgänge und alle Eingänge sind normale Floating-Eingänge. Knall weg.

Kennen Sie vielleicht eine Anleitung, die Ihnen beim Hämmern hilft? Ich erinnere mich an einen Kollegen, als ich Student war, der versuchte, Spi zu bitbangen, ohne dass er wusste, dass es sich um SPI handelte. Ich konnte ihm damals die Methode nicht wirklich erklären.
Ich definiere es einfach als "SPI ist, was auch immer das SPI-Zeitdiagramm im Datenblatt sagt".
Sie müssen nur auf die Bedürfnisse des Sklaven achten. Manchmal möchte es, dass die Daten an der steigenden Taktflanke gültig sind, und manchmal an der fallenden.
Deshalb pulsiere ich die Uhr, anstatt sie nur umzudrehen, während die Daten gültig sind. Es ist etwas weniger kompakt als jedes Mal zwischen Daten und Uhr umzuschalten, aber es verarbeitet 2 der 4 SPI-Modi (und das Invertieren der Uhr behandelt die anderen beiden).