Sinnhaftigkeit: i2c mit crc absichern ?

Gast #732239
Lesenswert?

Hallo,

"irgendwie" (hab leider brauchbares Oszi) habe ich manchmal 
Übertragungsfehler auf meinem I2C-Bus. Der Takt beträgt 100Khz, die 
Länge über verdrillte Litze etwa 30cm (Ist das zu viel ?).

Wieviel Sinn macht es, eine CRC-Prüfsume mit einzubauen ?
Die Fehler treten nur manchmal auf.
Persönliche Seite #732261
Lesenswert?

30 cm ist nicht zuviel. Elektrisch stimmt alles? Pull-ups vorhanden und 
korrekt dimensioniert (http://www.mcc-us.com/i2cHowToUseIt1995.pdf)?

Tröste dich: Ein Oszi ist nicht das ultimative Tool zum I2C-debuggen 
(auf was willst du triggern und wie lang sind deine I2C Telegramme...). 
Besser wäre ein Logikanalyzer mit I2C Protokollhandling. Und das ist 
nicht mehr preiswert.

Tipp: In der Artikelsammlung zu I2C ist ein Link zu Cheapi2c. Das 
ist ein brauchbarer I2C-Sniffer, der Linux (irgendeine LiveCD reicht) 
und eine parallele Schnittstelle braucht. Zu den 30 cm: Beim Sniffen 
habe ich mit Cheapi2c den Datenverkehr zwischen einem µP und einem EPROM 
mitgeschnitten - mit einem 2m Druckerkabel zum Sniffer-PC.
Gast #732265
Lesenswert?

Naja, kann schon am "Layout" (=Lochraster) liegen, ich weiss es nicht.
Der Bus ist etwa zu 10% ausgelastet, und es treten 4-5 Fehler in 10 
Minuten auf. Ist nicht wirklich viel..

Ich kann aber 1. keine Fehler brauchen :-) und 2. Würde ich schon gern 
bei den 100Khz bleiben.
Einige Fehler (Arbitration Lost usw) werden ja von I2C-Protokoll schon 
abgefangen, aber diese treten komischerweise nie auf.

Die Widerstände sind schon 4k7. Kann man noch weiter heruntergehen ?
Der Master und alle Slaves sind AVR's.
Gast #732275
Lesenswert?

Cheapi2c gibt es leider nicht mehr.
Aber da ist auch ein Link zu einem Forumsbeitrag, der sehr interessant 
ist.
Es geht dort um einen Sniffer auf ATMega8 Basis.
Wenn ich nicht anders weiterkomme, muss ich mir den mal bauen.



2007-12-17

Time has come to close the door on the 2002-3 Xbox work -- with 2008 
approaching and the various changes in laws over the last year and more 
to be expected.

Although the work was done before the EUCD was enacted, the legal 
landscape is changing all the time, and I don't have a way to assess how 
it stands now, or going on, to keep serving it. Since it is all pretty 
old information anyway now (my Xboxes have been in a landfill for some 
time) it's no great loss. Even the tools like Cheaptag are deprecated 
because they require Parallel printer ports which no longer feature on 
modern PCs.

Anyway -- Happy Christmas and New Year to everyone :-)
(Firma: Promaxx.net) #732278
Lesenswert?

Ich betreibe hier I2C mit 33kHz auf 3m Telefonleitung in LKWs und 
Traktoren.
Das macht Spaß !
Ich habe jetzt auch eine CRC-16 eingeführt - Fehler sehe ich trotzdem, 
die sind aber nicht ganz so schlimm bei mir (reine Anzeige).

Bei 30cm sehe ich keine Chance für elektronische Fehler!
Die Pull-Ups kannst Du auf 2,2k ändern, aber das wird nicht wirklich 
viel bringen.
Hast Du evtl. einen Bug in der Software ?

Ich nutze den Po.Scope als Logicanalysator und I2C-Analyzer zum 
Debuggen. Ist schon nicht schlecht und sehr preiswert.
#732294
Lesenswert?

Vielleicht einfach mal die Gegenprobe machen:
- Frequenz so weit senken wie's geht
- Leitung so weit kürzen wie's geht
Wenn dann die Fehler weniger werden hat die Schaltung zumindest eine 
Teilschuld. Bei so seltenen Fehlern ist vielleicht auch die andere 
Richtung interessant. Einfach mal die I²C-Frequenz erhöhen und schauen, 
ob dann nur noch Datenbrei ankommt.

Kann es sein, dass du dir von den Platinen hochfrequente Störungen 
einfängst? Ist ohne Oszi aber echt doof :(

Ach ja... rüttel mal ander ganzen Apparatur während des Tests... wenn 
das was am Fehlerbild ändert weißt du ja, wo du suchen musst ;) Denke 
nicht, dass das was bringt, kostet aber nur eine Minute und spart im 
Erstfall mehrere Stunden.

Gruß

Kai
#732402
Lesenswert?

@ Tiny 80 (linux_80)

>Und auch mal ohne verdrillen probieren, denn SCL könnte SDA
>beeinflussen, und schon kommt ein andres Bit raus.

Wen der Slave halbwegs I2C konform ist, dann muss er Pulse kleiner als 
50ns ignorieren. Ich tippe mal auf Masseprobleme, unsaubere 
Versorgungsspanung oder last but not least einen Programmfehler. GGf. 
auch Störpulse von starken geschalteten Lasten, Relais, Motoren etc.

MFG
Falk
Gast #733006
Lesenswert?

Hallo @alle

danke nochmal für die vielen tollen Tips.

Habe das Kabel gegen ein geschirmtes Dreiadriges ausgetauscht und jetzt 
ist
es prima.

Schuld war mein PC-Monitor, der Master lag unmittelbar daneben. Ein 
Stück davon entfernt waren die Fehler verschwunden. Mit dem neuem Kabel 
klappt es aber auch so.
Der Monitor scheint ein richtiger Stahlemann zu sein :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren