Signaltap für i2c-Signale

OP #3725090
Hallo Leute,
ich möchte mit einem arm cortex m3 einen Temperatursensor auslesen.
Der chip wird über i2c angesteuert/ausgelesen.
Leider habe ich kein oszi aber dafür das de0nano board.
Ich dachte man könnte doch den pin-ausgang(i2c) vom controller zum fpga 
führen und mit signaltap so die Leitung aufzeichnen.
Ist dies möglich/sinnvoll?
Gast
Sofern der IO-Standard stimmt schon. Du musst berücksichtigen, dass I2C 
sehr langsam ist, daher solltest du auch einen sehr langsamen Systemtakt 
erzeugen (ca. 1 MHz). Sonst kannst du so gut wie gar nichts sehen, da 
der Speicher zu schnell voll läuft.

Dies ist definitiv eine "billige" Lösung für einen Logic-Analyzer ;-)
Gast
Man sollte mit etwa der 10fachen Freuqenz abtasten, wenn man was sehen 
will. Problematisch bei I2C ist, dass es asynchron ist, d.h. durch das 
Ziehen der Clockleitung hängen die Pakete immer etwas anders.

Wenn man CLK-Leitungsprobleme beobachten will, muss es nochmal etwas 
feiner sein.
Gast
Tim S.
>..
>Ist dies möglich/sinnvoll?
Möglich: ist dein I2C 5V? Falls ja, dann brauchst du noch einen
Levelshifter oÄ.
Sinnvoll: Ich selbst habe ein kleines Stratix-Board mit massig
5V-toleranten IOs, mit STP-II habe ich damit ein Billig-LA.
Und bei 2 Signalen kann man selbst bei kleinen Cyclones locker
mit 8-16KBit/Signal (evtl. wesentlich mehr) aufzeichnen, und das
ohne gross Code zu schreiben.
SignalTap clock auf den 50Mhz board clock haengen,
Den 'Storage qualifier' auf 'Transition' stellen und diesen auf dem I2C 
SCL enablen.

Somit gibts nur einen Eintrag pro SCL Flanke, also massig Platz fuer I2C 
Telegramme.

Cheers, Roger
Roger Steiner schrieb:
> Somit gibts nur einen Eintrag pro SCL Flanke, also massig Platz fuer I2C
> Telegramme.

Andererseits wirst Du so Probleme mit Start/Stop-Conditions nicht 
erkennen. Um das ganze I2C-Protokoll zu erfassen, müsstest Du den 
Storage Qualifier auf "Simple or" stellen und sowohl SCL als auch SDA 
auf Transitions prüfen (nicht irritieren lassen durch die optisch 
unterschiedlich langen SCL-Phasen, weil SDA ja nicht immer wechselt...).

Willst Du übers Timing auch noch was erfahren, bleibt Dir nichts anderes 
übrig, als zu überlegen, wie lange Du aufzeichnen können musst, und dann 
die Oversampling-Clockfrequenz zu bestimmen (in der Regel sollte eine 
Sequenz von [Start, Address, Write, Stop] allenfalls noch ein a 
nschliessendes [Start, Address, Read, Stop] ausreichen, um die 
gängigsten Probleme zu finden...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre 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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.