Forum: Mikrocontroller und Digitale Elektronik SPI-Kabel für 80-100cm Entferngung


von Daniel K. (danie1)


Lesenswert?

Hallo zusammen,

für mein Projekt möchte ich an einen Teensy 4.1 mehrere 
SPI-PN532-NFC-Leser hängen. Diese werden sternförmig im Umkreis von bis 
zu 100cm um den Teensy verteilt und hängen alle am selben SPI-Bus. Das 
ganze soll veränderlich sein, also keine fest verlöteten Anschlüsse 
haben.

Laut Datenblatt 
(https://www.nxp.com/docs/en/nxp/data-sheets/PN532_C1.pdf) sind 5MHz das 
maximum des PN532 für SPI.

Um nicht ewig mit Dupont-Steckern zu fummeln, würde ich gern auf etwas 
crimp-freies umsteigen. Der Teensy steckt auf einem eigenen PCB, da bin 
ich also an nichts gebunden.
Option 1) Ein normales Flachbandkabel mit IDC-Buchsen, die gibt es ja 
direkt zum Eindrücken. Auf das PCB kommen dann 2x4 Pins für alle acht 
Leitungen.
Option 2) Ethernet, das ja auch 8 Leitungen hat. Spricht hier was 
dagegen auf die Distanz? Welche Cat-Klasse wäre ausreichend?

Der PN532 hätte auch noch I2C und einen seriellen Port, aber die laufen 
mit 5V, die der Teensy nicht verträgt (siehe 
https://www.elechouse.com/elechouse/images/product/PN532_module_V3/PN532_%20Manual_V3.pdf 
Seite 2 unten).

Danke
Daniel

von Cyblord -. (cyblord)


Lesenswert?

Sprich bitte 10 mal nach

"SPI und I2C mit normalen 3-5V Pegeln sind für die PCB und nicht für 
lange externe Verkabelungen."

Nimm RS232, RS485, CAN oder gleich Ethernet (nicht nur das Kabel).

Alles andere ist Pfusch und bleibt Pfusch.

: Bearbeitet durch User
von Daniel K. (danie1)


Lesenswert?

Also bräuchte ich entweder an jedem PN532 einen eigenen Microcontroller, 
der "irgendwas für weitere Strecken" macht oder ich verkürze die Kabel. 
Welche Entfernung wäre denn noch vertretbar? 50cm? 30?

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Ich muß mich da Cyblord anschließen, eine "sichere" Verbindung wird das 
nie.
Mit Glück bringt man das mit wenigen 100kHz Takt und Kondensatoren an 
den Signalleitungen zum Laufen. Aber vermutlich nicht stabil.

von Cyblord -. (cyblord)


Lesenswert?

Daniel K. schrieb:
> Also bräuchte ich entweder an jedem PN532 einen eigenen Microcontroller,
> der "irgendwas für weitere Strecken" macht oder ich verkürze die Kabel.
Ja.

> Welche Entfernung wäre denn noch vertretbar? 50cm? 30?

Alles was die Platine oder zumindest das Gehäuse des Gerätes verlässt 
ist zu lang.

Man sollte sowieso solche Leitungen nach extern gut absichern. Wie 
machst du das mit SPI? Eben!

: Bearbeitet durch User
von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Daniel K. schrieb:
> Welche Entfernung wäre denn noch vertretbar? 50cm? 30?

Der Störpegel ist letztlich relevant. Wenn keine Störungen (Netz, 
Handy...) zu befürchten sind, könnte es mit Entstörkondensatoren gehen.

von Cyblord -. (cyblord)


Lesenswert?

Um mal etwas praktischer zu werden: Was wird es denn? Für einen 
Experimentieraufbau, kannst du erstmal mit SPI und 100cm anfangen. Wenn 
es klappt schön, wenn nicht denk dir was anderes aus.
Wenn es dabei bleibt. Kein Problem.

Aber jede Art von "produktivem" Einsatz verbietet sich. Weil das ständig 
Problem machen wird. In der Realität.
Evt. laufen die Leitungen parallel zu Stromkabeln. Dann schaltet jemand 
das Licht ein, oder die Klimaanlage geht an usw. usw. Dann spinnt dein 
SPI rum.

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Lesenswert?

Wenn SPI über lange Strecken, dann per LVDS. Gibt sogar entsprechende 
LVDS-TRXe mit der richtigen Anzahl RXen und TXen

von Falk B. (falk)


Lesenswert?

Daniel K. schrieb:

> SPI-PN532-NFC-Leser hängen. Diese werden sternförmig im Umkreis von bis
> zu 100cm um den Teensy verteilt und hängen alle am selben SPI-Bus.

Naja. Sternförmige Verteilung ist bei SPI nicht so das gelbe vom Ei. Man 
kriegt es hin, wenn man weiß wie.

> (https://www.nxp.com/docs/en/nxp/data-sheets/PN532_C1.pdf) sind 5MHz das
> maximum des PN532 für SPI.

Das ist nebensächlich. Entscheidend ist die Flankensteilheit, siehe 
Wellenwiderstand.

> Option 1) Ein normales Flachbandkabel mit IDC-Buchsen, die gibt es ja
> direkt zum Eindrücken. Auf das PCB kommen dann 2x4 Pins für alle acht
> Leitungen.

Ja, aber ich würde 2x5 nehmen. 2x4 ist schwer beschaffbar.

> Option 2) Ethernet, das ja auch 8 Leitungen hat. Spricht hier was
> dagegen auf die Distanz? Welche Cat-Klasse wäre ausreichend?

CAT5, ggf. sogar darunter CAT3.

> Der PN532 hätte auch noch I2C und einen seriellen Port, aber die laufen
> mit 5V, die der Teensy nicht verträgt (siehe

Dafür gibt es Pegelwandler. Wenn du kannst, nimm lieber I2C, das ist 
gutmütiger. Da gibt es auch keine großen Probleme mit der sternförmigen 
Verkabelung.

Und lass dich von den Reichsbedenkenträgern hier nicht irre machen. I2C 
geht wunderbar, auch bei 1m und mehr Kabellänge. Auch SPI kriegt man 
hin, wenn man weiß was man tut.

Beitrag "Re: Skurriles Problem mit BS170 Mosfets"

von Daniel K. (danie1)


Lesenswert?

Ich überlege, die RFID zur Positionsbestimmung auf einer 
H0-Modellbahnanlage zu nutzen. Störeinflüße sind also durchaus vorhanden 
(Licht, DCC-Signal, Motoren). Daher war meine Idee mit Ethernet ein 
abgeschirmtes Kabel zu nutzen.

von Thomas R. (analogfreak)


Lesenswert?

100 cm sind nur 5 ns. Das ist nicht das Problem.

Aber man müsste an die MOSI-, CLK-Ausgänge jeweils acht schnelle Puffer 
hängen und vor MISO auch, damit man die Leitungen sauber mit 
Serien-Widerständen terminieren kann.

Das sind 3 zusätzliche ICs und 32 Widerstände (inkl. der 8 separaten 
/CS-Leitungen). Komplex!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Sternförmige Verteilung ist bei SPI nicht so das gelbe vom Ei.

Yep.

Selbst mit ringförmig habe ich schon ein blaues Wunder erlebt, und das 
waren nur 10 … 15 cm auf einer Platine, aber halt mehrere "Anzapfungen", 
und ein Steckverbinder für den LA, der teilweise offen war. An dem 
musste ich einen Snubber nachrüsten, und die beiden treibenden Leitungen 
(SCK und MOSI) brauchten 100-Ω-Serienterminierung an der MCU.

Wenn, dann würde ich das ringförmig und mit irgendeiner Art Transceiver 
machen. LVDS ist sicher nicht zwingend, auch RS485 oder so müsste gehen.

von Falk B. (falk)


Lesenswert?

Thomas R. schrieb:
> 100 cm sind nur 5 ns. Das ist nicht das Problem.
>
> Aber man müsste an die MOSI-, CLK-Ausgänge jeweils acht schnelle Puffer
> hängen und vor MISO auch, damit man die Leitungen sauber mit
> Serien-Widerständen terminieren kann.

Nö. Ersten nimmt man dafür eher LANGSAME Puffer, die nur so schnell wie 
NÖTIG sind! Bei 5 MHz SPI-Takt braucht es keine 3ns Anstiegszeit. MISO, 
MOSI und CS brauchen die nicht, die kann man einfach parallel schalten. 
Nur SCK braucht eine Serienterminierung.

> Das sind 3 zusätzliche ICs und 32 Widerstände (inkl. der 8 separaten
> /CS-Leitungen). Komplex!

Quark!

von Cyblord -. (cyblord)


Lesenswert?

Daniel K. schrieb:
> Ich überlege, die RFID zur Positionsbestimmung auf einer
> H0-Modellbahnanlage zu nutzen. Störeinflüße sind also durchaus vorhanden
> (Licht, DCC-Signal, Motoren). Daher war meine Idee mit Ethernet ein
> abgeschirmtes Kabel zu nutzen.

Also willst du quasi einen täglichen Einsatz über Jahre. Und genau dann 
würde ich so einen murks nicht machen.
Es gibt aber sicher irgendwelche SPI->XXX Umsetzer so dass es ohne extra 
Controller an jedem Ende gehen sollte.

von Michael B. (michael_b528) Flattr this


Lesenswert?

Bin am Rande mal über so Isolierwandler gestolpert die dann doch ned des 
richtige waren, evtl wäre das ne Lösung für dich (SPI 1MHz bis 100M) 
oder du kannst was adaptieren...

https://www.analog.com/media/en/technical-documentation/data-sheets/ltc6820.pdf

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Ich weis nicht,
Einesteils, sagen die "Spezialisten" hier: Ein Föhn in die Badewanne zu 
schmeißen, sei Unbedenklich und Machen jetzt bei I²C so ein Zinober.

Welleman hat es mit dem K8000 System vorgemacht, das I²C auch über 
meterlange Leitungen funktioniert.

Ich selber Mache mit I²C 12V Pegel sogar Steuerungen mit bis zu 1km 
Kabel ohne irgend welche Probleme und verwende dazu Normale CAT II und 
CAT III Netzwerkkabel. Man muss halt die Termination und die Treiber 
richtig berechnen dann läuft das mit 0% Errorr.

Wir machen das seit Jahrzehnten in Industrieanlagen so und haben teils 
sogar Zertifikate (Wo gefordert) Inkl ESD und Anderen 
Schutzbestimmungen.

Also wegen den paar CM Kabel Sternförmig I²C jetzt Probleme sehen, 
verstehe ich nicht ganz.

von Cyblord -. (cyblord)


Lesenswert?

Patrick L. schrieb:

Aber der Unterschied zwischen

> Ich selber Mache mit I²C 12V Pegel sogar Steuerungen mit bis zu 1km
> Kabel ohne irgend welche Probleme und verwende dazu Normale CAT II und
> CAT III Netzwerkkabel. Man muss halt die Termination und die Treiber
> richtig berechnen dann läuft das mit 0% Errorr.

und einem Anfänger einfach nur 3,3V SPI über lange Leitungen macht ist 
dir klar oder?

Am Ende kann man alles irgendwie machen, wenn man genug Wissen, Tests 
und Erfahrung reinsteckt. Und Technik drauf wirft.

Es wurden ja auch bereits Treiber empfohlen.

von (prx) A. K. (prx)


Lesenswert?

Patrick L. schrieb:
> jetzt bei I²C so ein Zinober

Eigentlich bei SPI. Aber früher war halt alles langsamer. Wenn man 
CD4000 als Leitungstreiber verwendet, kommt man dank der gemächlichen 
Flanken bei SPI ohne zusätzlichem Gefummel weiter als mit aktuellen 
Port-Treibern.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Patrick L. schrieb:
> Welleman hat es mit dem K8000 System vorgemacht, das I²C auch über
> meterlange Leitungen funktioniert.

Ich hatte mal mit einer Schaltung zu tun, da war ein Digitalpoti und 
noch bissel Krümelkram über 100m (einhundert Meter) mittels geschirmten 
Kabel bei 10kHz Takt anschlossen. In einer rauhen Industrieumgebung! Das 
lief! Die Stromversorgung per 5V lief auch über das Kabel, waren ja nur 
wenige mA.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Cyblord -. schrieb:
> und einem Anfänger einfach nur 3,3V SPI über lange Leitungen macht ist
> dir klar oder?

Der Anfänger holt sich eine Velleman K8000 und guckt wie die das machen 
und Kopiert.
Ja logisch aber es gibt ja genügend Literatur und Applikations Example 
was I²C anbelangt. Wenn man ja schon Steuerungen "Bastelt", sollte man 
ja schon wenigstens mal in einem I²C Kochbuch geschmökert haben.
Da gibt es genügend Formeln und Beispiele ja sogar schon 
Onlinekalkulatoren die die Widerstände berechnen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

(prx) A. K. schrieb:
> CD4000 als Leitungstreiber verwendet, kommt man dank der gemächlichen
> Flanken bei SPI ohne zusätzlichem Gefummel weiter als mit aktuellen
> Port-Treibern.

BINGO! CD4050 ist dein Freund. Lammfromm bei 5V! Und auch nicht wirklich 
bissig bei 15V.

von Axel R. (axlr)


Lesenswert?

Ich hab in jede VCC Leitung einen kleinen Widerstand(10R?, muss ich 
nachsehen) und eine 3V6 Z-Diode gelegt, parallel zur Z-Diode einen 
kleinen Elko 100µ/6v3. Jede Datenleitung und Chip Select mit 2Dioden 
gegen VCC und GND. Direkt auf den Reader-Platinen am Steckverbinder.
Ich hatte im Projekt 4 RFID-Reader am SPI, 1xRTC und Display am I2C, 
1xEpson Bon-Drucker an RS232.
Hatte anfangs, alles wunderbar und wie gewünscht, funktioniert. Man 
durfte nur den Drucker während das laufenden Betriebs nicht aus der 
Steckdose ziehen.
Wenn man den wieder eingesteckt hatte, starben alle vier RFID-Reader an 
Überspannung(?kAhnung). Nachdem ich dann die Flachbandleitungen zu den 
Card-Reader-Platinen mit Widerstand und Clamp-Dioden versehen hatte, 
ging dann endlich alles. Mit der Datenübertragung ansich gab es nie 
Probleme. Nur mit dem blöden Schaltnetzteil vom Bon-Drucker.
Aber: auch hier wieder: Leute, malt euch genau auf, was ihr da bastelt! 
Auch, wenn s nur n kleiner Gefallen ist oder die Meinung vorhersscht: 
"Aber hallo, hier sind drei Schieberegister und ne RTC drann, was willst 
du da aufzeichnen?" Ich bereue das jetzt schon so manches Mal.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Axel R. schrieb:
> Wenn man den wieder eingesteckt hatte, starben alle vier RFID-Reader an
> Überspannung(?kAhnung).

Es gibt Extra HotSwap fähige I²C Treiber IC, mitunter sogar galvanisch 
getrennte.
Man bedenke in 90% der Fälle ist I²C eine CMOS Schnitstelle und ohne 
eine Hotswap fähige Anbindung, kann man schon mal einen CMOS rösten.

Aber dass ist eigentlich Grundlagenwissen und fast bei jedem mit I²C 
Schnittstellen beinhaltendem IC dokumentiert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Warum redet ihr eigentlich alle über I²C? Gefragt war doch SPI …

von Falk B. (falk)


Lesenswert?

Jörg W. schrieb:
> Warum redet ihr eigentlich alle über I²C? Gefragt war doch SPI …

Weil der OP eine I2C Option ansprach.

"Der PN532 hätte auch noch I2C und einen seriellen Port, aber die laufen
mit 5V, die der Teensy nicht verträgt"

Ein Pegelwandler löst das Problem.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Falk B. schrieb:
> Nur SCK braucht eine Serienterminierung

Endlich einer, der mal Ahnung und Erfahrung hat!

Die Clock ist empfindlich, weil Doppelimpulse (im Umschaltaugenblick, 
nicht bei satten Pegeln) Fehler verursachen.

Wenn es bei unter 1m und wenigen MHz bisher Probleme gab, dann weil die 
Übernahme-Flanke falsch gewählt war (meist funktionieren 2 der 4 
Einstellmöglichkeiten, die eine jedoch nur ganz knapp). Das ist dann wo 
es auf der Platine funktioniert aber nicht im fliegenden Aufbau. Oder 
nicht mit restlicher HW.

Und zu suggerieren, dass I2C auch nur in die Nähe der 
Störfestigkeit*Länge*Takt kommt wie SPI, ist realitätsfremd.

Es kann sein, dass 5 MHz für den TO zu viel sind. Dann ist 200k SPI noch 
immer mehr Durchsatz als 400k I2C.

Notfalls bei SPI alle 4 Kombinationen durchspielen. Wenn 2 
funktionieren, dann mit LSA und Datenblatt die richtige identifizieren 
oder mit Oszi und Kondensatoren verschleifen um die falsche zu erkennen. 
,

von Wolfgang (Gast)


Lesenswert?

Cyblord -. schrieb:
> Sprich bitte 10 mal nach
>
> "SPI und I2C mit normalen 3-5V Pegeln sind für die PCB und nicht für
> lange externe Verkabelungen."

Quatschkopf

1. Zwischen SPI und I2C liegen Welten in der Geschwindigkeit.

2. I2C für über 100 Meter lange Platinen geht, wenn man sich ein 
bisschen Mühe gibt (Fig.3), aber wahrscheinlich hat NXP da nicht so die 
richtige Ahnung.
https://www.nxp.com/docs/en/application-note/AN10658.pdf

von Martin (Gast)


Lesenswert?

Wolfgang schrieb:
> Cyblord -. schrieb:
>> Sprich bitte 10 mal nach
>>
>> "SPI und I2C mit normalen 3-5V Pegeln sind für die PCB und nicht für
>> lange externe Verkabelungen."
>
> Quatschkopf
>
> 1. Zwischen SPI und I2C liegen Welten in der Geschwindigkeit.
>
> 2. I2C für über 100 Meter lange Platinen geht, wenn man sich ein
> bisschen Mühe gibt (Fig.3), aber wahrscheinlich hat NXP da nicht so die
> richtige Ahnung.
> https://www.nxp.com/docs/en/application-note/AN10658.pdf

Du willst doch nicht etwa einen der Universalgelehrten des µCNets auf 
die Füße treten? So etwas läppisches, wie eine technisch physikalische 
Argumentation ist einfach unangebracht und nicht fair.

von Daniel K. (danie1)


Lesenswert?

isoSPI klingt in der Tat interessant, werde ich mir mal merken.
Der PN532 unterstützt auch UART, da werde ich mich mal an einem MAX3490 
oder so versuchen, wenn die Verbindung zu instabil wird.
Danke für eure Tipps!

von Cyblord -. (cyblord)


Lesenswert?

Martin schrieb:
> So etwas läppisches, wie eine technisch physikalische
> Argumentation ist einfach unangebracht und nicht fair.

Diese Argumentation hilft dir halt auch nicht mehr wenns nicht 
ordentlich läuft. Um das verhindern geht man erstmal den Weg der mit 
größter Sicherheit funktioniert und erprobt ist. Nur in der Not würde 
man mit I2C und SPI an die physikalischen Grenzen gehen.

Sind denn so Schlauberger wie du am Ende dann auch hier um dem TE zu 
erklären warum sein Zeug nicht ordentlich läuft oder wird dann ins 
Physikbuch abgetaucht, nach dem Motto "müsste eigentlich laufen".
Als Gast schnell was rausrotzen und dann auf nimmer wiedersehen. Das ist 
halt einfach.

In der Praxis schon mal was zum laufen gebracht? Mein Zeug läuft nämlich 
zufällig. Weil ich auf solche Abenteuer verzichte.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Nur in der Not würde
> man mit I2C und SPI an die physikalischen Grenzen gehen.

Das gilt für jedes Verfahren. Und 100cm sind für SPI bei 100kHz keine 
Herausforderung.

von Cyblord -. (cyblord)


Lesenswert?

A. S. schrieb:
> Cyblord -. schrieb:
>> Nur in der Not würde
>> man mit I2C und SPI an die physikalischen Grenzen gehen.
>
> Das gilt für jedes Verfahren. Und 100cm sind für SPI bei 100kHz keine
> Herausforderung.

Auf deinem Labortisch vielleicht.
Kommt halt drauf an was du daneben noch so laufen hast. Lass da mal 
einen Motor anlaufen, oder schöne Funken der Modellbahn (um die es ja 
hier geht), schaltende Magnetartikel mit 16V Wechselstrom usw. usw. dann 
mal sehen was die 100cm Antenne so auffängt und ob das Programm damit 
umgehen kann.
Man kann da viel auch in Software ausbügeln. Aber damit ist grade bei 
Anfängern eben auch mau. Die sind darauf angewiesen dass wenigstens die 
Hardware mal meistens das tut was man auch programmiert und nicht lustig 
die Bits der SPI Kommunikation kippt wenn man ne Weiche umschält.

: 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.