Forum: Mikrocontroller und Digitale Elektronik Kann man MISO und MOSI per Software tauschen?


von Lee (Gast)


Lesenswert?

Hallo zusammen,

ich habe auf meiner eigenen Karte wohl dummerweise für die SPI 
Schnittstelle (MOSI mit MISO) und (MISO und MOSI) miteinander verbunden. 
Ich verwende einen STM32 und wollte wissen, ob man per Software aus 
einem MISO einen MOSI machen kann. Geht das denn noch überhaupt?

MfG

von Bernd K. (prof7bit)


Lesenswert?

Lee schrieb:
> ob man per Software aus
> einem MISO einen MOSI machen kann.

Das steht im Datenblatt!

von Einer K. (Gast)


Lesenswert?

Da es nur einen einzigen möglichen STM32 mit SPI gibt, ist die Frage 
nach einem Blick ins Datenblatt leicht zu beantworten.

Es gibt alternative Pins für die Funktionalität.
Aber diese beiden zu tauschen geht nicht.

ohne Gewähr

von STM Apprentice (Gast)


Lesenswert?

Lee schrieb:
> Geht das denn noch überhaupt?

Ja, wenn du dir ein Soft-SPI schreibst.

von Lee (Gast)


Lesenswert?

Bernd K. schrieb:
> Das steht im Datenblatt!

Vielen Dank. Soweit war ich schon :D

Die Pins haben leider andere alternative Funktionen. SPI kann man wohl 
nicht einfach so tauschen. Könnte man das denn nicht per Software 
irgendwie ändern?

von STM Apprentice (Gast)


Lesenswert?

Lee schrieb:
> Könnte man das denn nicht per Software irgendwie ändern?

STM Apprentice schrieb:
> Ja, wenn du dir ein Soft-SPI schreibst.

von Bimbo. (Gast)


Lesenswert?

Lehrgeld. Leiterbahnen mit Cutter auftrennen und fädeln. Die Pins sind 
in Hardware gegossen, da kannst du MOSI und MISO nicht mit Software 
tauschen - es sei denn du programmierst dir eine Software SPI.

Das wäre ja schön, wenn es gehen würde.

von Bernd K. (prof7bit)


Lesenswert?

Es bereitet immer eine ganz besondere Freude wenn man für einen 
saublöden vertauschten Pin dann einen riesigen Software-Workaround 
implementieren muss der dann mit ärgerlichen Einschränkungen einhergeht 
die man an der Backe haben wird bis zum Ende der Produktlebenszeit oder 
bis zum Eintritt des Rentenalters.

Ich würde zusehen daß eine neue Platine gemacht wird.

: Bearbeitet durch User
von Ingo Less (Gast)


Lesenswert?

Bernd K. schrieb:
> Ich würde zusehen daß eine neue Platine gemacht wird.
Naja, wenn man bei einem Prototypen das Problem hat, sollte das mit 
einem Messer und Lackdreht schnell behoben werden können.

von Lee (Gast)


Lesenswert?

Vielen Dank für die Antworten.

Bevor ich das weiß cutte, probiere ich es mit der Soft-SPi Möglichkeit 
aus. Das Durchtrennen von Leitungen mache ich ganz zum Schluss, falls es 
per Software nicht geht.

MfG

von Bimbo. (Gast)


Lesenswert?

Korrigiere den Fehler aber bereits jetzt im Layout, sonst machst du 
den nochmal.

von fay of fortune (Gast)


Lesenswert?

Wie kam es dazu?
EDA mit falsch bepinntem Bauteil in der Bibliothek?

von Lee (Gast)


Lesenswert?

Bimbo. schrieb:
> Korrigiere den Fehler aber bereits jetzt im Layout, sonst machst du
> den nochmal.

Ich habe ihn vorhin korrigiert.

fay of fortune schrieb:
> Wie kam es dazu?

Sagen wir einfach Dummheit. Ich habe die beiden Blöcke im 
Blockschaltplan falsch miteinander verbunden. Komischerweise waren NSS 
und die CLK richtig. :/

von A. S. (Gast)


Lesenswert?

Lee schrieb:
> Bevor ich das weiß cutte, probiere ich es mit der Soft-SPi Möglichkeit
> aus. Das Durchtrennen von Leitungen mache ich ganz zum Schluss, falls es
> per Software nicht geht.

Zum lernen ganz OK. Aber wenn Du dafür bezahlt wirst oder wenn Du da 
keine Feldforschung machen willst, nimm den SPI, den Du später nutzen 
willst. Wenn der Chip seitliche Pins hat, einfach hochlöten. Notfalls an 
der Gegenstelle, falls es sonst nicht geht.

von Bert 0. (maschinist)


Lesenswert?

Dem Produktmanager stolz den ersten Prototypen vorstellen. Vom kaputten 
SPI nix erzählen, aber von dem zusätzlichen, tollen HW-Gimmick, das Dir 
noch eingefallen ist.
Wenn der PM das dann noch einkippt und für den nächsten EVT unbedingt 
haben will, korrigierst Du für die neue LP schnell noch den kaputten SPI 
und keiner hat was gemerkt.

;-)

Gruß... Bert

von Sven B. (scummos)


Lesenswert?

Bimbo. schrieb:
> Die Pins sind
> in Hardware gegossen, da kannst du MOSI und MISO nicht mit Software
> tauschen

Selbstverständlich ist das allerdings nicht -- vor allem bei UARTs kenne 
ich Controller, wo man per Pin Multiplexing RX und TX vertauschen kann.

von Guest (Gast)


Lesenswert?

Sven B. schrieb:
> Selbstverständlich ist das allerdings nicht -- vor allem bei UARTs kenne
> ich Controller, wo man per Pin Multiplexing RX und TX vertauschen kann.

Das geht bei den neueren STMs, da hat ST wohl dazugelernt. Man muss aber 
auch ehrlich sagen, dass bei UART die Gefahr doch schon größer ist RX 
und TX mal zu vertauscht.

von Gerhard O. (gerhard_)


Lesenswert?

Mich rettete vor vielen Jahren ein Zufall vor dem besagten Problem. Ich 
hatte glücklicherweise zwei 33 Ohm Serien Widerstände auf der LP. Es 
ergab sich, daß beide Rs seitlich nebeneinander mit kreuzweise 
angeordneten Leiterbahnen angeordnet waren. Beim Testen stellte sich 
heraus, daß ich genau wie der TO die beiden Leiterbahnen vertauscht 
hatte. Glücklicherweise brauchte ich nur beide Rs um 90 Grad verdrehen 
und wieder auflöten um die beiden Anschlüsse zu vertauschen. Auch der 
Abstand zueinander passte. Uff! schweiß wegwischen...

von Gnorm (Gast)


Lesenswert?

LPC1500 und LPC800 z.B. haben eine Pinswitchmatrix.

von my2ct (Gast)


Lesenswert?

Guest schrieb:
> Man muss aber auch ehrlich sagen, dass bei UART die Gefahr doch schon
> größer ist RX und TX mal zu vertauscht.

Was ist bei RX und TX leichter zu vertauschen?

Wenn einem klar ist, des "RX" für Receiver (Empfänger) steht und "TX" 
für Transmitter (Sender), kann doch nicht viel schief gehen - es sei 
denn, es fehlt einem das grundlegende Verständnis dafür, wie zwischen 
Sender und Empfänger Daten übertragen werden.

von HildeK (Gast)


Lesenswert?

Gerhard O. schrieb:
> Es
> ergab sich, daß beide Rs seitlich nebeneinander mit kreuzweise
> angeordneten Leiterbahnen angeordnet waren. Beim Testen stellte sich
> heraus, daß ich genau wie der TO die beiden Leiterbahnen vertauscht
> hatte. Glücklicherweise brauchte ich nur beide Rs um 90 Grad verdrehen
> und wieder auflöten um die beiden Anschlüsse zu vertauschen.

Magst du mal eine Skizze machen? Ich kann mir das gerade gar nicht 
vorstellen ...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

1
MOSI-->---------------------+     +---------------->
2
                            |     |
3
                            O     O
4
5
                            +---------------------->
6
                            O     O
7
MISO-->---------------------------+

: Bearbeitet durch User
von Jo mei (Gast)


Lesenswert?

Und wieder mal zeigt sich die Sinnhaftigkeit von "sinnlosen"
Längswiderständen an Ein/Ausgängen von Controllern und
anderen Chips. Sei es zum Umverdrahten der Signalrichtung
oder zum "Entklingeln" von Signalen.

von HildeK (Gast)


Lesenswert?

Danke, Matthias S.! Ich stand wohl auf dem Schlauch ...

von Jens M. (schuchkleisser)


Lesenswert?

Lee schrieb:
> (MOSI mit MISO) und (MISO und MOSI) miteinander verbunden.

Muss das nicht so???

Falsch wäre MISO->MISO und MOSI->MOSI...

von Stefan F. (Gast)


Lesenswert?

Jens M. schrieb:
> Muss das nicht so???
> Falsch wäre MISO->MISO und MOSI->MOSI...

Bei SPI ist einer immer der Master und einer der Slave.

Master-In-Slave-Out muss mit dem gleichnamigen Anschluss der Gegenseite 
verbunden werden, denn beim Master ist das ein Eingang und beim Slave 
ist das ein Ausgang.

Das ist anders, als bei UART Tx->Tx.

von Guest (Gast)


Lesenswert?

my2ct schrieb:
> Was ist bei RX und TX leichter zu vertauschen?
>
> Wenn einem klar ist, des "RX" für Receiver (Empfänger) steht und "TX"
> für Transmitter (Sender), kann doch nicht viel schief gehen - es sei
> denn, es fehlt einem das grundlegende Verständnis dafür, wie zwischen
> Sender und Empfänger Daten übertragen werden.

Eben weil oft das Verständnis fehlt. Bei SPI verbindet man die 
gleichnamigen Pins. Bei I2C ebenfalls. Und bei CAN kommt RX an RX und TX 
an TX. Nur bei UART ist es eben nicht so, da ist es schnell mal passiert 
das man es übersieht.

von Einer K. (Gast)


Lesenswert?

Guest schrieb:
> Eben weil oft das Verständnis fehlt. Bei SPI verbindet man die
> gleichnamigen Pins. Bei I2C ebenfalls.

Macht man bei RS232C und V24 auch!
Da wird ebenso Rx mit Rx verbunden und Tx mit Tx.

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Macht man bei RS232C und V24 auch!
> Da wird ebenso Rx mit Rx verbunden und Tx mit Tx.

Das gilt für Modems, aber nicht für Verbindungen von Rechner zu Rechner.

von Guest (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Das gilt für Modems, aber nicht für Verbindungen von Rechner zu Rechner.

Richtig, dafür gab es dann die bekannten Nullmodem-Kabel, wenn man zwei 
PCs verbinden wollte.

Arduino Fanboy D. schrieb:
> Macht man bei RS232C und V24 auch!
> Da wird ebenso Rx mit Rx verbunden und Tx mit Tx.

Da wären wir dann jetzt wieder bei dem von mit angesprochenen fehlenden 
Verständis, es ist eben nicht immer so.

q.e.d.

von Lötlackl *. (pappnase) Benutzerseite


Angehängte Dateien:

Lesenswert?

Um derlei Verwirrung zu umgehen, hatte ich in einer Schaltung mal 
folgendes gemacht. (siehe Bild)
Ich brauchte nur TX.

: Bearbeitet durch User
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.