Forum: FPGA, VHDL & Co. GridEye Sensor AMG88 VHDL - read ack error


von Stuffee (Gast)


Lesenswert?

Hallo zusammen,

mit Hilfe des Temperatursensors AMG88 wollen wir Temperaturwerte 
auslesen. Dafür haben wir einen VHDL-Code geschrieben, der bis auf das 
Lesen der 8 Datenbits soweit auch funktioniert.

Wir erhalten das Acknowledge-Bit für die Sensoradresse, jedoch kein 
Acknowledge-Bit (--> Acknowledge-Error) für das Register.

Projektspezifikationen:
- Clockgeschwindigkeit: 100kHz
- FPGA Board: NEXYS 4

Vielleicht hatte jemand ein ähnliches Problem oder kann uns mögliche 
Fehlerquellen nennen. Wir wären über jeden Tipp dankbar!

Liebe Grüße
Simon und Verena

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stuffee schrieb:
> Wir erhalten das Acknowledge-Bit für die Sensoradresse, jedoch kein
> Acknowledge-Bit (--> Acknowledge-Error) für das Register.
Ich kenne das so: beim I2C muss immer der, der empfängt das ACK 
ausgeben.
Beim Schreiben der Adresse gibt also der AMG88 das ACK aus, weil der 
die Adresse empfängt.
Beim Lesen muss aber das FPGA mit einem ACK  signalisieren, dass die 
Daten empfangen wurden.
Wie z.B. im Datenblatt zum 24c01 oder allgemein in 
http://www.cc-zwei.de/wiki/index.php?title=I2C_Bus_Hintergrundwissen 
oder auch im http://www.ti.com/lit/an/slva704/slva704.pdf beschrieben

Wo gibt es denn ein sinnvolles Datenblatt mit I2C-Timings zu diesem 
Teil? Dort sollte sowas drinstehen...

: Bearbeitet durch Moderator
von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Ich kenne das so: beim I2C muss immer der, der empfängt das ACK
> ausgeben.

Exakt. Und das letzte Byte wird mit einem NACK terminiert. Damit weiß 
der Master auch, dass der Bus vom Slave wieder freigegeben wurde.

Details dazu, siehe UM10204, Abschnitt 3.1.6.

von Edi M. (Gast)


Lesenswert?

Mir ist mal ein solche Sensor untergekommen, bei dem man das ACK getrost 
weglassen konnte, weil der Sensor es überlesen hat und frech 
weiterfunkte. ClockStreching etc konnte/kannte der z.B. gar nicht. Das 
Ende vom Lied: Der FPGA-Spezi hat einen Unsinn reinprogrammiert, der 
beim upgrad zur nächsten Sensorversion schief ging.

Bei einem weitern Sensor dieser Art kam es vor, dass ein zu langes ACK 
oder ein zu langes Warten auch das nACK dazu führte, dass der Sensor 
planmäßig in den power save ging. Und nicht mehr wieder kam!

Da heiss es: GENAU das Datenblatt DIESES Sensors lesen. I2C ist nicht 
I2C.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.