STM32F1 Probleme mit Frings I2C-Bus Routine

OP #6930541
Hallo zusammen,

ich versuche gerade einen VL6180 TOF Sensor am laufen zu bekommen. 
Jedoch scheitert es nach dem ersten schreiben eines Registers. Ich 
bekomme danach nur immer ein NACK des Sensors. Nachdem ich zwischen den 
ersten paar Schreibvorgänge ein 10 Millisekunden-Delay eingefügt habe, 
gehts es bis zum nächsten weiter.

Weiß einer, woran es liegen könnte?

Gruß Sascha
Angehängte Dateien:
Gast
Hast du mal die Qualität der Signale am I²C Bus kontrolliert? Wie viel 
Ohm haben deine Pull-Up Widerstände?

Schon 100 kHz Bustakt versucht?

Vielleicht gucke ich falsch, aber ich sehe im DB keine Dokumentation von 
Register 0x0096. Wird der Fehler vielleicht durch Beschrieben eines 
ungültigen Registers ausgelöst?
OP
Hi,

also bei 100kHz ist dasselbe. Widerstände sind 4.7k. Das Register wird 
von ST so empfohlen:

AN4545 vl6180x basic ranging application note stmicroelectronics
Seite 24.
Die Initialisierung funktioniert mit HAL einwandfrei. Ich habe nur die
Routinen zum lesen und schreiben angepasst. Daher wundert es mich ja. Es 
ist das gleiche Board, gleiche Hardware. Nur diesmal ohne HAL.

Wenn ich die Warteschleife nach
1
VL6180x_writetRegister(I2C_Port,Adresse, VL6180X_SYSTEM_FRESH_OUT_OF_RESET, 0x00);
entferne, bekomme ich schon ein NACK.

Gruß Sascha
Gast
Sascha S. schrieb:
> Die Initialisierung funktioniert mit HAL einwandfrei.

Dann ist es bestimmt am einfachsten, die Kommunikation mit einem Logic 
Analyzer aufzuzeichnen und mit beiden Bibliotheken zu vergleichen. 
Irgendwas muss ja anders sein.

Dein obiges Diagramm bestätigt, dass der Mikrocontroller wie 
erwartet/programmiert sendet und das der Sensor wirklich nicht mit ACK 
antwortet.

Wie kommuniziert denn das LCD, hoffentlich über die selben I/O Pins?
Gast
Da frage ich mich jetzt aber, wer denn die ersten 3 Bytes acknowledged 
hat. Hast du noch andere Sensoren an dem Bus?

Unabhängig davon empfehlen ich trotzdem stärkere Pull-Ups, um auf 
mindestens 1 mA zu kommen.
OP
Guten Morgen,

ja, ist noch mit originalem Chip. Mit HAL komm ich zwar schneller ans 
Ziel, jedoch stark überladen. Daher wollte ich mal die Bare Metal 
Variante probieren. Bis auf den dummen Fehler mit der Adresse gehts ja 
auch und lern den Controller ein bissl besser kennen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 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]
  • [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.