Forum: Mikrocontroller und Digitale Elektronik warum sind i2c und spi eigentlich in ihrer geschwindigkeit begrenzt?


von schmalz (Gast)


Lesenswert?

warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?
Kann man die Daten nicht einfach schneller schicken?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?
Das kommt 1. von der Physik und 2. von Festlegungen.

> Kann man die Daten nicht einfach schneller schicken?
Kannst du schon. Dann funktionieren sie halt nicht mehr, weil die 
Timing-Spec der angeschlossenen Bauteile verletzt wird.

: Bearbeitet durch Moderator
von Dietrich L. (dietrichl)


Lesenswert?

Ist das eine ernste Frage oder willst du nur trollen?

von Klaus (Gast)


Lesenswert?

Warum dauert eine Reise zum Mars so lange? Kann man nicht einfach 
schneller fliegen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Dietrich L. schrieb:
> Ist das eine ernste Frage oder willst du nur trollen?
Ganz offensichtlich Zweiteres. Wird dann halt zeitnah gelöscht.

: Bearbeitet durch Moderator
von Sebastian R. (sebastian_r569)


Lesenswert?

Nunja. Die Daten müssen ja auch her- und weggeschafft sowie ausgewertet 
werden.
Und beliebig schnell geht nicht, weil auch die Signalqualität 
(Flanken,...) nicht bessert wird

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Also ich erkenne hier (noch) kein Troll-Potential. Es ist eine 
berechtigte, wenn auch unfreundlich hingerotzte Frage wenn man sich mit 
Elektronik nicht so gut auskennt.

von Jörg R. (solar77)


Lesenswert?

Klaus schrieb:
> Warum dauert eine Reise zum Mars so lange? Kann man nicht einfach
> schneller fliegen?

Ja, aber nicht mit dem ÖPNV;-)


schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit
> begrenzt?
> Kann man die Daten nicht einfach schneller schicken?

Sind andere Protokolle unlimitiert?

von EAF (Gast)


Lesenswert?

Jörg R. schrieb:
> Sind andere Protokolle unlimitiert?

Ist in diesem Universum überhaupt irgendetwas unendlich?

von Wolfgang (Gast)


Lesenswert?

EAF schrieb:
> Ist in diesem Universum überhaupt irgendetwas unendlich?

"Zwei Dinge sind unendlich ..."
https://www.forum-einstein.org/zitate.html
(drittes Zitat von unten)

von Dietrich L. (dietrichl)


Lesenswert?

Ben B. schrieb:
> Also ich erkenne hier (noch) kein Troll-Potential.

schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?

Diese Frage wäre tatsächlich noch nicht trollfähig, falls er wissen 
will, was da so alles die Geschwindigkeit begrenzt.

> Kann man die Daten nicht einfach schneller schicken?

Dieser Teil riecht aber schon trollig.

Beitrag #6961134 wurde von einem Moderator gelöscht.
von Bernd (Gast)


Lesenswert?

Hallo,
rein prinzipiell, durch das Protokoll, ist i2c nicht begrenzt. Die 
Begrenzung erfolgt durch die angeschlossenen Elemente, die in ihrer 
Geschwindigkeit begrenzt sind. Wenn du also auf zwei schnellen 
Mikrokontrollern das i2c-Protokoll "von Hand" implementierst, kannst du 
es auch schneller laufen lassen. Langsamer geht ja auch.

Bernd

von Ein Kommentar (Gast)


Lesenswert?

Ist ein Kompromiss aus Geschwindigkeit und Kosten.

Spi und i2c sind für bezahlbare Geräte konzipiert. Für 50 cent Chips und 
einfache Leiterplatten, die der Praktikant layouten kann.

Natürlich kannst du die Daten schneller schicken. Brauchst halt Chips 
und Leiterplatten, die mit kürzeren Signalen und steileren Flanken 
zurecht kommen. Das kostet dann halt das 10 oder 1000 fache.

Aber warum willst du das machen? Gibt ja Protokolle und Chips, die für 
höhere Übertragungsraten besser geeignet sind.

von Falk B. (falk)


Lesenswert?

schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?
> Kann man die Daten nicht einfach schneller schicken?

"Es gibt 2 Dinge die unendlich sich. Das Universum und die Dummheit der 
Menschen. Beim 1. bin ich mir aber nicht ganz sicher."

Albert Einstein

von Arno (Gast)


Lesenswert?

Jörg R. schrieb:
> Klaus schrieb:
>> Warum dauert eine Reise zum Mars so lange? Kann man nicht einfach
>> schneller fliegen?
>
> Ja, aber nicht mit dem ÖPNV;-)

Das müsste schon ein (Ö)PFV sein ;)

MfG, Arno

von A. S. (Gast)


Lesenswert?

SPI ist nicht begrenzt weil nicht standardisiert. Es ist einfach nur in 
Silizium gegossene Möglichkeit, Schieberegister mit Clock und Daten ein 
und auszulesen. Das geht so schnell, wie es Deine Schaltung hergibt.

I2C ist ein von Philips (heute NXP) spezifiziertes Verfahren. Es ist 
maximal so schnell, wie spezifiziert. Wenn Du es schneller machst, ist 
es eben kein I2C mehr.

Bei der Reichweite gibt es Grenzen: Durch die spezifizierten Bauteile 
(maximale Kapazität, Pull-Up, etc.), Signallaufzeit etc. Wenn ein Signal 
2µs braucht, kannst Du nicht mit 1 MHz kommunizieren, wenigstens nicht 
mit Clock von der einen und Daten von der anderen Seite.

Es Spricht aber nichts dagegen, bei genügend kleiner Baudrate, über 
beliebige Strecken zu kommunizieren. Auch eine Umsetzung über Funk, 
Ethernet oder Postboten ist prinzipiell möglich, bis zum Mond, wenn es 
sein muss.

von Schmal z (Gast)


Lesenswert?

OK gibt es zb transceiver die schnell reagieren und die Daten schnell 
empfangen und senden dann auch schnell auswerten lassen dahinter?
Kann man nicht ein paar Codierungen hinzufügen damit die Signale nicht 
allzu schlecht sind? Und evtl. Differentielle Signale schicken?
Würde mich einfach interessieren ob das geht

von Harry (Gast)


Lesenswert?

Also wenn man mal Oszi-Bilder vom PCI-Bus gesehen hat, muß man sich 
schon wundern, daß das überhaupt funktioniert. Von daher ginge bei 
I2C/TWI schon noch was und 1 oder 2MHz meine ich schon gesehen zu haben.

von Wolfgang (Gast)


Lesenswert?

Schmal z schrieb:
> Würde mich einfach interessieren ob das geht

Das hilft nicht gegen Signallaufzeiten

von user (Gast)


Lesenswert?

Warum ist VGA in der Auflösung beschränkt?

Damals haben die Leute bei BNC aufgehört. Glaub es gibt keinen VGA 
Montior der SMA-Buchsen hat.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Schmal z schrieb:
> OK gibt es zb transceiver die schnell reagieren und die Daten schnell
> empfangen und senden dann auch schnell auswerten lassen dahinter?

Ja, gibts.
z.b. SDI ging mit 270MBit/sec los; derweilen gibt's 12Gbit/sec. Und wenn 
Ethernet in diesen Datenraten nicht schon langsam guenstiger wuerde, 
dann wuerde es wahrscheinlich irgendwann noch schnelleres SDI geben, 
denn wer will schon 4k glotzen, wo doch 16k viel knackigere Bilder 
liefern kann.
Es wird halt mit steigender Frequenz immer unangenehmer, die 
Dreckeffekte irgendwie im Griff zu haben...

Gruss
WK

von Stefan F. (Gast)


Lesenswert?

Schmal z schrieb:
> Kann man nicht ein paar Codierungen hinzufügen damit die Signale nicht
> allzu schlecht sind?

Klar kann man das, wird auch gemacht. Aber dann ist es kein I²C und auch 
kein SPI mehr, sondern z.B. Ethernet oder PCI Express.

von PittyJ (Gast)


Lesenswert?

Harry schrieb:
> Also wenn man mal Oszi-Bilder vom PCI-Bus gesehen hat, muß man sich
> schon wundern, daß das überhaupt funktioniert. Von daher ginge bei
> I2C/TWI schon noch was und 1 oder 2MHz meine ich schon gesehen zu haben.

I2C mit 400 KHz ist fast bei allen Bauteilen schon möglich.
Und manche Hersteller bieten auch 1MHz an.

https://www.i2c-bus.org/fast-mode-plus/

von c-hater (Gast)


Lesenswert?

PittyJ schrieb:

> I2C mit 400 KHz ist fast bei allen Bauteilen schon möglich.
> Und manche Hersteller bieten auch 1MHz an.

Ja. Man muss da halt bloß aufpassen, was langsamere Busteilnehmer tuen. 
Das kann durchaus für "überraschende" Effekte sorgen...

Sprich: der Bus darf nur maximal so schnell betrieben werden, wie der 
langsamste Busteilnehmer vorgibt.

von Salomon (Gast)


Lesenswert?

Mensch: Warum ist Licht eigentlich in seiner Geschwindigkeit begrenzt?
Gott: Hör auf zu trollen!

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

>> Kann man die Daten nicht einfach schneller schicken?
> Dieser Teil riecht aber schon trollig.

Naja... wieso? Es ist die einfachste logische Lösung wenn irgendwas zu 
langsam ist und in vielen Fällen wurde das ja auch so gemacht. Also mit 
besserer Technik das gleiche Protokoll, nur schneller bis man an neue 
Grenzen stieß. Diese Grenzen zu erklären wäre dann wieso es nicht 
"einfach" geht bzw. nicht bis ins Unendliche geht. Das wird dann 
philosophisch, aber nicht trollig.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Was noch nicht beleuchtet wurde: Warum sollten i2c oder spi ueberhaupt 
schneller sein?
Wenn der Oppa vor der Glotze denkt: Der Nachrichtensprecher nuschelt 
schon wieder so, ich mach mal lauter, dann muss das garnicht in µs oder 
gar ns passieren, das reicht in zig ms locker. Und genau aus dieser und 
aehnlich gelagerten Problemstellung resultierte der i2c Bus.
Auch z.b. Temperaturen aendern sich physikalisch bedingt auch nur recht 
langsam, und man braucht's nicht unbedingt mit z.b. 1024bit Aufloesung.
Eine MAC-Adresse oder sonstige Seriennummer pressiert auch nicht 
besonders, etc. bla.
Also warum sollten solche Busse ueberhaupt schneller sein? Braucht 
schlicht keiner. Bzw: Die, die meinen es unbedingt zu brauchen, haben 
mit grosser Wahrscheinlichkeit keine Ahnung was sie da tun (Aehnlich wie 
beim Einsatz von Digitalpotis).

Gruss
WK

von Fpgakuechle K. (Gast)


Lesenswert?

Die Antwort liegt in einem einzelnen griechischern Buchstaben: τ
und das wird in Klasse 8 oder 9 gelehrt, auch an der Real- und 
Mittelschule:
https://did.physik.lmu.de/lehrerbildung/lehrerbildung_lmu/video/e-lehre/das-elektische-feld/kondensator-multimeter/index.html

von Jobst M. (jobstens-de)


Lesenswert?

schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?
> Kann man die Daten nicht einfach schneller schicken?

I²C: Weil es für die Geschwindigkeiten definiert wurde, die derzeit 
erhältlich sind.
Mit einem FPGA wird man sicherlich wesentlich höhere Geschwindigkeiten 
mit dem selben Protokoll erreichen können, ist dann aber nicht mehr 
kompatibel.

Dieser Bus ist ursprünglich dazu gedacht gewesen, um z.B. die Lautstärke 
in einem Fernseher vom Prozessor an die Audioeinheit weiter zu geben. 
Oder die Empfangsfrequenz. Oder Helligkeit. Also nichts, was besonders 
schnell sein muss.
Zur übertragung von Datenmengen war er niemals gedacht.

SPI: Hat keine definierte Grenze. Habe ich auch schon mit einigen 100MHz 
gesehen. SD-Karten sind auch SPI.

Norbert schrieb im Beitrag #6961134:
> Da verweise ich gerne mal auf die ungeheure Cleverness der
> Corona-Spaziergänger.

Na, so richtig clever ist es auch nicht, die Sorgen dieser Menschen 
komplett zu ignorieren, wie auch immer diese gelagert sind, und gar 
nicht darauf einzugehen und die Leute gedanklich abzuholen.
Das ist nie eine gute Idee.

Arno schrieb:
> Das müsste schon ein (Ö)PFV sein ;)

Wieso? Der Mars ist doch einer der nächsten!? Da sind wir ja noch nicht 
mal aus unserem Sonnensystem raus.


Gruß
Jobst

: Bearbeitet durch User
Beitrag #6961474 wurde von einem Moderator gelöscht.
von Messtechnikprofi (Gast)


Lesenswert?

schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?
> Kann man die Daten nicht einfach schneller schicken?

Wenn du nen ASIC dahinter hast, der bis zu 20 MHz frisst, kannst du das 
machen, ja. BTDT

von schmalz (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Klar kann man das, wird auch gemacht. Aber dann ist es kein I²C und auch
> kein SPI mehr, sondern z.B. Ethernet oder PCI Express.

ja ok ...
xD
habe mir einfach gedacht man kann mit passenden pcs und pma einfach ein 
bekanntes Protokoll schneller machen ohne ein neues Protokoll zu 
verwenden.

Messtechnikprofi schrieb:
> Wenn du nen ASIC dahinter hast, der bis zu 20 MHz frisst, kannst du das
> machen, ja. BTDT

Jobst M. schrieb:
> Mit einem FPGA wird man sicherlich wesentlich höhere Geschwindigkeiten
> mit dem selben Protokoll erreichen können, ist dann aber nicht mehr
> kompatibel.

ja mit passender Gegenstelle finde ich das einfach interessant.

Fpgakuechle K. schrieb:
> Die Antwort liegt in einem einzelnen griechischern Buchstaben: τ

was lädt sich da eigentlich auf?


Was ist eigentlich mit i3c?

Beitrag #6961771 wurde von einem Moderator gelöscht.
von Name: (Gast)


Lesenswert?

I2C und SPI sind synchron. Und damit darf die Signallaufzeit nicht viel 
mehr sein als die halbe Taktperiode. Wir reden da von 3ns pro m, aber da 
kommen noch Delays im Slave dazu.
Kommt man mit den Taktraten in den Bereich der Signallaufzeiten, muss 
man Leitungstheorie beherrschen und berücksichtigen.
Das ist aber nur eine Begrenzung für SPI, es gibt noch andere.

Damit man Synchronisationsprobleme bekommt, sind wir auf Leiterplatten 
bei 100MHz und mehr, aber bei Kabeln kommt man schnell in zweistellige 
ns Laufzeit.

Bei I2C ist es noch viel schlimmer. Die Signale sind open drain, also 
müssen Kapazitäten am Bus über die Pullups geladen werden. Und das heißt 
es ist eine Zeitkonstante mit R*C im Spiel.
Bei I2C ist die Zeitkonstante schon bei 10pF und 2k bei 200ns. Jetzt 
sind 10pF aber sehr wenig, und wenn Kabel im Spiel sind, reden wir von 
100pF/m und mehr.
Schon wenn RC die halbe Taktperiode ist, wird man ziemliche Probleme 
bekommen. Das sind die berühmten I2C Haifischflossen, die man hier im 
Forum immer sieht ;-)

Übrigens ist der wackelige High-State auch der Grund, warum I2C so 
störempfindlich ist.

von schmalz (Gast)


Lesenswert?

vielen Dank :D
auf open drain habe ich nie wirklich geachtet. will ich mir mal genauer 
anschauen.
warum nimmt man denn open drain, gibt es nichts besseres?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

schmalz schrieb:
> warum nimmt man denn open drain, gibt es nichts besseres?
Natürlich gibt es was "Besseres", nur ist das dann ein anderer Bus.

Und worum es eigentlich geht: es gibt nichts Billigeres, das ähnlich 
kollisionsfest und unzerstörbar und skalierbar ist wie ein Pullup und 
ein paar Schalter nach GND.

von Name: (Gast)


Lesenswert?

schmalz schrieb:
> warum nimmt man denn open drain, gibt es nichts besseres?

Das hat große Vorteile:
Open-drain-Ausgängen kann man einfach verbinden, ohne dass es zu 
Kurzschlüssen kommen kann (wire-or). Weil jeder Teilnehmer nur den 
Pullup gegen GND ziehen kann. Außerdem sind interessante Spezialitäten 
wie clock-stretching möglich (wir alle lieben es!).

Bidirektional geht natürlich auch anders: man kann ein Chipselect 
verwenden, nur dann brauchts eben 3 Leitungen.

Und das ist ja gerade der Witz bei I2C. Man braucht nur SCL und SDA für 
viele Teilnehmer an einem Bus.

I2C ist super, um IC auf der Leiterplatte zu verbinden, die wenig Daten 
austauschen müssen. Daher der Name. Und das ist ein sehr häufiges 
Problem.

I2C eignet sich wegen der Beschränkugen eben genau nicht für 
Kommunikation über lange Kabel oder große Datenmengen. Dafür gibt es 
bessere Systeme.

Warum gibte es wohl soviele Systeme? Eben genau, weil jedes auf einen 
Zweck zugeschnitten ist.

von Name: (Gast)


Lesenswert?

Name: schrieb:
> I2C eignet sich wegen der Beschränkugen eben genau nicht für
> Kommunikation über lange Kabel oder große Datenmengen.

Ich meine damit, es ist eine Beschränkung für Kommunikation über Kabel. 
Es gibt durchaus I2C-ähnlich Busse oder I2C über Kabel, was aber mit 
erheblichen Einschränkungen verbunden ist.
Manchmal ist Einfachheit aber wichtiger als Datenrate.
DDC wäre ein Beispiel dafür.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Name: schrieb:
> Es gibt durchaus I2C-ähnlich Busse oder I2C über Kabel
> DDC wäre ein Beispiel dafür.
Die Jahrzehnte lang verwendete PS/2 Tastatur auch...

von W.S. (Gast)


Lesenswert?

schmalz schrieb:
> warum sind i2c und spi eigentlich in ihrer Geschwindigkeit begrenzt?
> Kann man die Daten nicht einfach schneller schicken?

Na klar, man kann Daten auch bedeutend schneller schicken. LVDS macht es 
vor. Aber das ist dann eben LVDS und nicht I2C.

Ich geb dir mal nen technischen Hinweis: Beim I2C wird der Highpegel mit 
Hochzieh-Widerständen gemacht. Und das Datensignal darf sich nur während 
des Low-Zustandes des Taktsignals ändern, sonst gilt das Ganze nicht als 
Datenübertragung, sondern als Start- bzw. Stop- Kondition. Folglich muß 
man zwischen den Flanken der Daten und des Taktes genügend Zeit geben, 
damit alle am Bus hängenden Chips das sauber unterscheiden können. Und 
nun denke dir mal ein wenig Leitungskapazität hinzu und rechne dir aus, 
wieviel Zeit du dann bereits für die Flanken benötigst.

Klaro?

W.S.

von Joachim B. (jar)


Lesenswert?

EAF schrieb:
> Ist in diesem Universum überhaupt irgendetwas unendlich?

die menschliche Dummheit :-)

von Dergute W. (derguteweka)


Lesenswert?

Moin,

W.S. schrieb:
> Klaro?

Ich wuerd' mal LVDS nicht mit I2C vergleichen, denn das waere wie Aepfel 
und Birnen.
LVDS kannst du eher mit z.b. open Collector vergleichen. I2C ist 
bisschen mehr als die Pegel/Impedanzverhaeltnisse auf der Leitung.

Gruss
WK

von Horst G. (horst_g532)


Lesenswert?

schmalz schrieb:
> warum nimmt man denn open drain, gibt es nichts besseres?

Deine Definition von "besser" ist offenbar "schneller" – leider gibt es 
noch zahlreiche weitere Parameter bzw. Variablen, die es bei der 
Entwicklung eines technischen Systems zu berücksichtigen gilt.
Wie oben schon beschrieben, wurde z. B. I2C für die preisgünstige, 
einfache Kommunikation mehrerer ICs auf einer Leiterplatte, z. B. in 
Fernsehern, entwickelt – die verfügbaren Übertragungsgeschwindigkeiten 
reichen dafür offensichtlich aus, und er ist wie gesagt billig und 
einfach integrierbar. Wenn du andere Anforderungen an deinen Bus hast, 
z. B. schneller sein musst oder längere Strecken überbrücken musst, ist 
I2C schlicht die falsche Wahl.
TL;DR: Ja, natürlich gibt es "Besseres" in Sachen Geschwindigkeit – es 
ist nur die Frage, ob du das brauchst und ob du mit den anderen 
Nachteilen der Alternativtechnologie leben kannst – oder konkret ist die 
Frage, was du überhaupt brauchst.

von A. S. (Gast)


Lesenswert?

schmalz schrieb:
> warum nimmt man denn open drain, gibt es nichts besseres?

open Drain erlaubt mehrere Sender auf einer Leitung. Uart oder SPI sind 
entweder unidirektional oder werden durch parallel CS-Leitungen 
gesteuert, die die Anzahl der Leitungen erhöhen.

Bei I2C kannst Du ein Dutzend unterschiedliche Devices an 2 Leitungen 
kloppen.

(Und immer beachten: Bei I2C treibt auch der Slave die Clock 
(Clock-Stretching). Daten und Clk werden also von allen Teilnehmern 
angesteuert)

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.