RTB2000 I2C Probleme mit Dekodierung

OP #7922007

Ich verwende einen Raspberry Pico mit dem picod Package [1] um ein AT24C02 EEPROM zu beschreiben. Das schreiben und lesen funktioniert ohne Fehler, auch mit anderen EEPROMS.

Mit dem R&S RTB2004 Oszilloskop wollte ich mir das Protokoll mit den digitalen Kanälen anzeigen lassen. Aber die Pakete werden immer in rot als fehlerhaft angezeigt. Auch mit den analogen Kanälen ist es dasselbe. Einstellungen wie Treshhold, Samplerate, 20 MHz Bandbreite, Speicher usw. bringen keine Besserung.

Erst wenn ich bei einen analogen Kanal die Deskew-Einstellung ändere funktioniert das Dekodieren ohne Fehler. Bei den digitalen Kanälen gibt es keine entsprechenden Einstellungen. Aber nach Änderung der Zeitbasis usw. muss man wieder etwas die Deskew-Einstellung ändern, oder es hift dann auch nicht mehr. Das I2C Demo-Signal vom Oszilloskop selbst, wird ohne Fehler dekodiert und angezeigt.

Ich habe mir vor kurzem ein Tektronix MSO2024B gekauft und damit funktioniert die Dekodierung ohne Probleme.

Ich würde gerne verstehen wo das Problem liegt, ist es das Signal, das RTB2000, oder?

Peter

[1] https://github.com/joan2937/picod

Ich würde gerne verstehen wo das Problem liegt, ist es das Signal, das RTB2000, oder?

Ich meine das liegt an dem von dir verwendeten Triggerzeitpunkt/art. Also dem Zeitpunkt ab dem dekodiert wird. Ich hatte das naemlich auch schonmal. Ich weiss aber die Loesung nicht mehr. Spiel mal ein bisschen mit den diversen Triggermoeglichkeiten rum.

Vanye

OP

Danke für die Rückmeldungen. Ich habe so ziemlich alles ausprobiert was möglich ist, aber das Signal wird nicht richtig dekodiert. Nur wenn ich die Deskew-Einstellung ändere funktioniert es, abhängig von der Zeitbasis, und nur bei den analogen Kanälen.

Die Firmware ist v03.000, und ich habe sie auch im EEVblog zur Verfügung gestellt: https://www.eevblog.com/forum/testgear/new-killer-scope-a-true-game-changer-from-rs-rtb2002-rtb2004/msg5876902/#msg5876902

Peter

Ich meine mich gerade dunkel zu entsinnen das ich von StartID auf normal Flanke umgestiegen um das Problem zu beheben als ich es hatte. Vielleicht ist das auch wirklich noch ein Bug im Decoder den R&S gerne beheben wird falls man sie drauf hinweist....

Vanye

OP

Ich habe mir ein I2C-Paket erstellt und in den Patterngenerator vom RTB2000 geladen. Wenn sich die SDA-Bits sehr nahe oder direkt an der fallenden Taktflanke ändern, dann werden die Daten nicht mehr richtig dekodiert bzw. in rot angezeigt. Darum hilft auch die Deskew-Einstellung von einem Kanal.

Peter

Angehängte Dateien:

Ich habe mir ein I2C-Paket erstellt und in den Patterngenerator vom RTB2000 geladen.

Ah, ich hab mich schon immer gefragt wofuer ich den wohl brauchen koennte. :)

Wenn sich die SDA-Bits sehr nahe oder direkt an der fallenden Taktflanke ändern, dann werden die Daten nicht mehr richtig dekodiert bzw. in rot angezeigt.

Das ist natuerlich irgendwie unschoen. Wohlmoeglich sogar ein Bug. Schick denen das doch mal, vielleicht ist es dann in der 3.1 draussen. Man darf ja noch hoffen.

Vanye

Das hab ich gerade auch schon ueberlegt, allerdings war ich zu faul jetzt genau die Datenblaetter zu studieren. :-D Aber denkbar ist es. Bei dem letztdem Controller den wo ich I2C implementiert habe, weiss garnicht mehr wo das war, da konnte man erstaunlich sensibel diese Timings fuer die Flanken einstellen und da haette man da was falsch machen koennen. Angesichts der Wetterlage ueberlassen wir also mal dem geneigten Leser dieses Threads das Studium der Datenblaetter. :)

Vanye

Nee das war doch Quatsch von mir, ist ja fallende Flanke, bin noch zu müde.

Eher Hold Time dann.

Im Handbuch hab ich nix gefunden über die Fehlerbedingungen beim Dekodieren, vielleicht fragt Peter mal im eevblog ob jemand sagen kann, welche Fehlerzustände es da gibt.

Im NXP I2C-bus specification and user manual steht unter 3.1.3 Data validity: "The data on the SDA line must be stable during the HIGH period of the clock. The HIGH or LOW state of the data line can only change when the clock signal on the SCL line is LOW (see Figure 4)."

https://www.nxp.com/docs/en/user-guide/UM10204.pdf

Wenn steigende oder fallende Flanken von SDA und SCL zusammenfallen ist diese Bedingung gerade nicht mehr erfüllt.

OP

Bin zu spät, haber auch gerade nachgelesen. In der NXP I2C Spezifikation steht bei allen I2C Modes für "tHD;DAT data hold time [1]" Minimum 0 µs. Aber es gibt zwei Bemerkungen dazu :

[1] tHD;DAT is the data hold time that is measured from the falling edge of SCL, applies to data in transmission and the acknowledge.

[2] Ensure SCL drops below 0.3VDD on falling edge before SDA crosses into the indeterminate range of 0.3 VDD to 0.7 VDD.

Das RTB2000 macht es also wahrscheinlich richtig, könnte aber etwas laxer sein meiner Meinung nach.

Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über ein Jahr alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.