mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C am Oszilloskop


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich versuche mir gerade die Taktleitung auf dem Oszilloskop 
anzeigen zu lassen doch komme nicht weiter...

erste frage: ich habe die Taktleitung direkt mit dem oszilloskop 
verbunden ist das richtig? ich versuche nur ein oder 2 Bytes zu 
transferieren

zweite frage: ich arbeite mit einem stm32 und nutze diese funktion

HAL_I2C_Master_Transmit(&hi2c1, 0x001, buff, 2, 10);

Normalerweise schreibt man als 2. Variable ja die device adresse aber da 
ich in diesem moment keine Geräte adresse habe weiß ich nicht was dahin 
kommt? und generell ist das die richtige funktion dafür?

ich bitte um eure unterstützung komme schon länger nicht weiter und habe 
auch nicht passendes über google gefunden...

Autor: Hugo (Gast)
Datum:

Bewertung
-10 lesenswert
nicht lesenswert
Peter W schrieb:
> dem oszilloskop
-> dem Oszilloskop

Peter W schrieb:
> um eure unterstützung
-> eure Unterstützung

Peter W schrieb:
> die device adresse
-> die Deviceadresse

Peter W schrieb:
> diesem moment
-> diesem Moment

Peter W schrieb:
> keine Geräte adresse
-> keine Geräteadresse

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter W schrieb:
> ich habe die Taktleitung direkt mit dem oszilloskop
> verbunden ist das richtig?

Wenn Du erfassen willst, was auf der Taktleitung geschieht, ja.

Du musst allerdings auch eine Verbindung zur Masse herstellen, deswegen 
hat Dein Tastkopf so ein nettes kleines Krokodilklemmenkabel dran.

Um allerdings eine I2C-Übertragung anzeigen zu können, brauchst Du ein 
Zweikanaloszilloskop, den zweiten Kanal verbindest Du mit der 
Datenleitung.

Autor: Dumpf Backe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter W schrieb:
> zweite frage: ich arbeite mit einem stm32

Geht's ein bisschen genauer?
Es soll welche geben bei denen I2C nicht richtig funktioniert.

Peter W schrieb:
> aber da ich in diesem moment keine Geräte adresse habe

... besorgst du dir mal ein Gerät das eine Adresse hat, dann
kannst du die eintragen.

Autor: Random .. (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

solltest dir SCL und SDA auf dein Oszi legen (Oszi Masse auf Schaltung 
legen). Das Oszi sollte eine ausreichend hohe Samplingfrequenz 
aufweisen, sonst werden die Nadeln unterschiedlich lang oder 
verschwinden :-)

Wenn dein I2C Bus nur ab und an was sendet, musst du den Trigger passend 
einstellen (für den Anfang reicht Edge / Level, z.B. steigend / 2.5V) 
und als "One Shot" triggern (also das Scope friert die Aufzeichnung dann 
ein).

Mit dem Oszi kannst du dann prüfen, was aus deinem I2C rauskommt. Wenn 
das Dingen einen Bus Decoder hat umso besser, dann siehst du die Daten, 
welche gesendet werden. Ansonsten musst du das vom Oszi-Bild selbst 
ausklamüsern.

: Bearbeitet durch User
Autor: Hugo (Gast)
Datum:

Bewertung
-8 lesenswert
nicht lesenswert
Dumpf Backe schrieb:
> ... besorgst du dir mal ein Gerät das eine Adresse hat, dann
> kannst du die eintragen.

-> ... ein Gerät, dass eine Adresse hat. Dann...

Autor: Random .. (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter W (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Also den Anschluss am Oszillator habe ich auch so einmal an SCL und die 
Masse an die Masse des Controllers. Ich benutze einen STM35F103RB. An 
dem Oszillator erkenne ich aber nichts weiter als ein Rauschen, deshalb 
denke ich es liegt an der Software...

Dumpf Backe schrieb:
> Geht's ein bisschen genauer?
> Es soll welche geben bei denen I2C nicht richtig funktioniert.

bei welchen denn? Ich benutze von meinem Controller PB6 und PB7 ich 
könnte auch PB8 und PB9 benutzen wenn das einen Unterschied hätte?

Das Problem an der Geräteadresse ist das ich keine Verbindung zu einem 
Sensor aufnehmen kann und deswegen jetzt erstmal das I2C überprüfen 
wollte. Gibt es nicht eine Möglichkeit das zu Überprüfen ohne 
Geräteadresse?

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Hugo schrieb:
> -> ... ein Gerät, dass eine Adresse hat. Dann...

Nein, "das" ist in diesem Satz richtig.

Autor: Dumpf Backe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter W schrieb:
> Das Problem an der Geräteadresse ist das ich keine Verbindung zu einem
> Sensor aufnehmen kann

Die "Geräteadresse" steht im Datenblatt des Sensors.

Hugo, auh weia ....

Autor: Dumpf Backe (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Peter W schrieb:
> am Oszillator habe ich auch so einmal an SCL

So so, am Oszillator ....  nun wird die Sache ja immer klarer.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter W schrieb:
> Ich benutze einen STM35F103RB.

Den kenne ich noch nicht.

Man kann die Device Adresse ausprobieren, indem man 0 Bytes an alle 
möglichen Adressen sendet und die ACK/NAK Antwort nach der Adresse 
prüft.

Aber ich glaube, das kannst du mit dieser HAL Library so nicht machen. 
Bei Arduino gibt es dafür einen fertig Sketch: 
https://playground.arduino.cc/Main/I2cScanner

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter W schrieb:
> HAL_I2C_Master_Transmit(&hi2c1, 0x001, buff, 2, 10);
> ist das die richtige funktion dafür?

Scheint so. Hier ist die Doku dazu: 
http://www.st.com/resource/en/user_manual/dm00154093.pdf

Autor: Dumpf Backe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Den kenne ich noch nicht.

Ich plädiere mal für Troll-Alarm.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Den kenne ich noch nicht.

Dumpf Backe schrieb:
> Ich plädiere mal für Troll-Alarm.

Naja, 3 Bit Reserve kann man immer mal gut brauchen.

Autor: pegel (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Peter W schrieb:
> auf dem Oszilloskop anzeigen

Jeder geht davon aus das es ein Digital Oszi ist.
Stimmt das auch?

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Moin,

Sind denn da auch Pullups an den Signalen, die man mit dem Oszillofant 
angucken will?

Gruss
WK

Autor: Marek N. (bruderm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Random .. schrieb:
> z.B. steigend / 2.5V)

Nein, fallend!

Und wir gehen davon aus, dass du auch die Pull-Up-Widerstände 
angeschlossen bwz. eingeschaltet hast.

https://de.wikipedia.org/wiki/I%C2%B2C

Autor: M.A. S. (mse2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hugo schrieb:
> -> ... ein Gerät, dass eine Adresse hat. Dann...

, d  ->  . D


Hugo, der Geist des Freitags.

Autor: Peter W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Peter W schrieb:
>> Ich benutze einen STM35F103RB.
>
> Den kenne ich noch nicht.
>
> Man kann die Device Adresse ausprobieren, indem man 0 Bytes an alle
> möglichen Adressen sendet und die ACK/NAK Antwort nach der Adresse
> prüft.

Meinte natürlich STM32 :'D

An alle möglichen Adressen? Das sind ganz schön viele Adressen.
Egal welche DeviceAdresse ich wähle müsste es auf der CLK Leitung nicht 
ein dauerhaftes Signal geben?

pegel schrieb:
> Jeder geht davon aus das es ein Digital Oszi ist.
> Stimmt das auch?

Ja, ist digital

Dergute W. schrieb:
> Moin,
>
> Sind denn da auch Pullups an den Signalen, die man mit dem Oszillofant
> angucken will?
>
> Gruss
> WK

Ja, pull- up Widerstände habe ich auf den beiden Leitungen und Hardware 
müsste soweit eigentlich passen. Sorgen macht mir diese Transmit 
Funktion oder brauche ich noch weitere Funktionen vielleicht?

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du ein zweites STM32 Board?
Dann mach eins zum Master und eins zum Slave.

In der HAL Lib gibt es ein Beispiel dazu.

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe gerade nachgesehen, es gibt sogar Beispiele für Master und Salve 
auf einem Board in der HAL Lib.

Suche nach:

I2C_OneBoard_

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter W schrieb:
> An alle möglichen Adressen?

Ja

> Das sind ganz schön viele Adressen.

127, um es genau zu sagen. Ein I2C-Scanner hat die in weit weniger als 
einer Sekunden durch.

> Egal welche DeviceAdresse ich wähle müsste es auf der CLK Leitung nicht
> ein dauerhaftes Signal geben?

Das kommt auf dein Programm an. Normalerweise ist das nur ein kurzer 
Burst mit ein paar Pulse. Wie das aussieht, steht zu fast jedem 
I2C-Baustein im Datenblatt. Um das auf dem Oszilloskop zu sehen, musst 
du vernünftig triggern, i.e. dich von "Auto" verabschieden.

Autor: SmallPic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem Oszi ist das schwer, weil der Sync sich dauernd veschiebt. Du 
brauchste einen Logic Analyze. Gibts billig bei ebay z.B. 223224054269. 
Da kannst du auch gezielt das I2C-Protokoll analysiern.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.