VEML6030 meldet nur 0x0000 im Output über I2C

OP #6752178
Lesenswert?
• ▲
▼
Hallo liebe Gemeinde,

ich bin neu hier und hoffe ich erstelle meinen Beitrag an der richtigen 
Stelle.

Ich habe folgendes Problem:
Ich möchte einen VEML6030 (Ambient Light Sensor von Vishay) über meinen 
µC (r5f104GK von Renesas) auslesen. Leider erhalte ich als Antwort immer 
nur 0x0000.

Vom Sensor habe ich
- Datenblatt https://www.vishay.com/docs/84366/veml6030.pdf
- Applikation Note 
https://www.vishay.com/docs/84367/designingveml6030.pdf

Einen ebenfalls am I²C Bus angeschlossenen Lis3DH kann ich ohne Probleme 
auslesen. Beide Sensoren kann ich einzeln vom Bus via Jumper trennen.
Die Beschaltung am ADDR Pin ist "nur" um den richtigen Footprint zu 
bekommen. In Wirklichkeit handelt es sich um einen 3-Pin Jumper.

- SDA & SCL haben 10k als Pullup
- SDA ist an µC Pin 18 (P14/RxD2/SI20/SDA20/TRDIOD0/(SCLA0)) 
angeschlossen
- SCL ist an µC Pin 17 (P15/PCLBUZ1/SCK20/SCL20/TRDIOB0/(SDAA0))
- INT is an µC Pin 36 (P140/PCLBUZ0/INTP6) angeschlossen

Die grundlegenden Funktionen habe ich mit dem Codegenerator von Applilet 
erstellt.

Was ich bisher erreicht habe:
- Der Lis3DH reagiert auf read und write Befehle wie er soll
- Abhängig vom level des ADDR Pins erhalte ich eine ACK auf dem Bus.
- Vom Grundsatz scheint die Kommunikation mit Ack und NAck richtig zu 
sein.

Vermutlich sehe ich den Wald vor lauter Bäumen nicht, so wirklich kann 
ich mir aber nicht erklären, wo der Fehler liegt.

Ich hoffe einer von euch hat den Baustein bereits zum Laufen gebracht 
und kann einen zielführenden Tipp geben.

Danke schon einmal für eure Hilfe.

Gruß
Michael
Angehängte Dateien:
OP #6762244
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe mein Problem lösen können.
Am Ende lag es daran, dass ich das Read nicht richtig implementiert 
hatte.
Nach dem "Send" kam ein "Stopp". Dies darf aber nicht. Ich habe daher 
die automatisch generierte Send Methode angepasst um zu wissen ob ich 
Sende oder "nur" das Register für das lesen setze.

Jetzt funktioniert es jedenfalls.
Für alle, die nach mir ein ähnlich gelagertes Problem haben:
Im Anhang findet ihr eine Abbildung der funktionierenden Kommunikation.

Gruß & bleibt gesund
Angehängte Dateien:
OP #6762303
Lesenswert?
• ▲
▼
Hallo Oliver,

das die Lösung auf diesem Niveau liegen musste war mir schon beim 
Schreiben klar - Verstehen muss man das ja dann trotzdem ;)

Als I²C Lib würde ich das auch nicht bezeichnen. Applilet generiert den 
Code für den µC und setzt die meisten Register. Für die meisten Aufgaben 
deutlich einfacher, als alles aus dem Handbuch einzeln abzuleiten.
Das ein "Receive" in diesem Fall ein "Send mit ohne Stopp und gefolgtem 
Start" ist steht leider nirgends und wenn man nicht wirklich weiß, was 
man als richtig erwartet, dann ist das Debuggen von Schnittstellen schon 
was schwieriger ;)

Kurioser weise hat der andere Sensor sich ja zur Arbeit überreden 
lassen.

Hoffe die Nachwelt kann aus diesem Thread was lernen.

Gruß
Gast #6762547
Lesenswert?
• ▲
▼
Hi

>Das ein "Receive" in diesem Fall ein "Send mit ohne Stopp und gefolgtem
>Start" ist steht leider nirgends ...

Dann duch mal nach der AppNote

UM10204 I2C-bus specification and user manual

Da steht alles notwendige über I²C drin.

MfG Spess

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.