Hallo, ich versuche mich gerade an einer Aufgabe aus einer Probeklausur zum Thema I²C, wo ich mir nicht sicher bin: "Zwischen einem I2C-Master und einem seriellen EEPROM wurden folgende Informationen ausgetauscht (S=Start, P=Stop): S 0xA0 0xA2 S 0xA1 0xA3 0xA5 P Ergänzen Sie die fehlenden ACK/NAK. Wird EEPROM gelesen oder beschrieben?" Also so wie ich es verstanden hab, müsste ja hinter jedem Byte ein ACK kommen, nur nicht hinter dem letzten vor dem P, wo ein NAK vom Master kommt, weil er nichts mehr erwartet? Zur Frage gelesen/beschrieben würde ich sagen, zuerst wird geschrieben, weil bei A0 ja das 8. Bit 0 ist (also der Master will schreiben). Der Inhalt ist dann das Byte A2. Dann kommt ein Repeat Start, A1 steuert den selben Slave an, aber nun zum lesen (wegen 8. Bit = 1). Die beiden Bytes A3A5 sind dann der Inhalt. So stelle ich es mir zumindest vor. Bin mir aber nicht sicher, speziell weil es ein EEPROM ist, und ich finde nichts darüber, wie dort gespeichert wird. Wäre super wenn da jemand weiterwüsste :-)
Francisca93 schrieb: > Wäre super wenn da jemand weiterwüsste :-) Ja ich weiss weiter! Schaue dir in einem beliebigen Datenblatt eines I2C EEPROMs das Protokoll an und lerne daraus.
Francisca93 schrieb: > Wäre super wenn da jemand weiterwüsste :-) Es ist traurig zu sehen, wie wenig Eigeninitiative gezeigt wird um etwas selber über Datenblätter herauszufinden. Sind das die Problemlöser von morgen? Ach ja, früher gab es kein Internet um an Datenblätter zu kommen..
Francisca93 schrieb: > Also so wie ich es verstanden hab, müsste ja hinter jedem Byte ein ACK > kommen, nur nicht hinter dem letzten vor dem P, wo ein NAK vom Master > kommt, weil er nichts mehr erwartet? Genau so ist das im Normalfall. Allerdings gibt es leider etliche unsägliche Devices, die vom I2C-Standard mehr oder weniger weit abweichen. Hoffentlich gehört das (von dir nicht näher spezifizierte) EEPROM nicht dazu... > So stelle ich es mir zumindest vor. Bin mir aber nicht sicher, speziell > weil es ein EEPROM ist, und ich finde nichts darüber, wie dort > gespeichert wird. Diese Information findest du, wer hätte das erwarten können, natürlich im Datenblatt des konkreten EEPROM. Im Prinzip ist das immer der einzig zielführende Weg, um mit irgendeinem Device über irgendeinen Bus zu kommunizieren: man liest als allererstes das verdammte Datenblatt. Und zwar sowohl das des Hosts als auch das des anzusteuernden Devices...
Ein konkretes EEPROM ist in der Aufgabe ja nicht genannt, da steht lediglich "serielles EEPROM". Ein Datenblatt suchen ist also schlecht möglich, und in der Klausur hat man es eh nicht. Vermutlich meint der Prof den "Normalfall" eines EEPROMs (vielleicht weiß er auch gar nicht, dass es verschiedene gibt, er ist eben so ein Theorie-Nerd). Also wenn man diesen "Normalfall" annimmt, wäre meine Lösung richtig?
Die I²C Adresse '0xA0' ist die typische für Chips der 24(LC)02 Klasse. Dafür spricht auch der Restart nach dem Schreiben der EEPROM Addresse fürs darauf folgende Lesen. Das es sich um ein sehr kleines EEPROM handelt, kann man auch daraus schliessen, das die Adressierung in einem Byte ausreicht.
:
Bearbeitet durch User
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.