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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.