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.
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:
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.
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.
Matt Jung
TurboJ