Hallo, ich kämpfe mich gerade durch das Tutorial von Geoffrey M Brown. Um I2C zu üben möchte ich einen BMP085 auslesen. Zuerst sah es so aus als ob komplett Stille herscht auf dem Bus. Dann habe ich den Logicanalyzer mal früh genug gestartet und sehe nun dass eine 0x76 gefolgt von einem NACK gesendet wird. Dann bleibt es ruhig. Wenn das die Slave Adresse sein soll, scheint so denn kein Register oder Befehl fängt mit 7 an, dann kann das nichts werden weil die 0x77 ist. Was geht da ab ? Grüße, Stephan
Gast
#3830624
Sende statt 0x77 halt mal 0xEE.
Aha, woher kommt die, 0x77 einen nach links geschoben ? Dann geht es einen Hauch weiter. Die Registeradresse die gelesen werden soll wird noch korrekt nachgeschoben. Ich vermute das STOP darf nicht sein ? Auf jeden Fall ist generell Leben drin. Da werde ich morgen mal die Kommunikation untersuchen. Ich hab das schon auf Tiva-Launchpad gemacht vor ein paar Wochen, da musste ich auch drei I2C Routinen "maßschneidern" bis es Rund lief. Danke
Keine Ahnung wo das Problem ist, ich habe einfach dreist die Abfrage des Flags auskommentiert und ich bekomme sinnvolle Sensordaten. Sicher nicht die reine Lehre aber es spielt... Stephan
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Gast
#7075193
Stephan G. schrieb: > Keine Ahnung wo das Problem ist, ich habe einfach dreist die > Abfrage des > Flags auskommentiert und ich bekomme sinnvolle Sensordaten. > // Initiate Start Sequence (wait for EV5) > I2C_GenerateSTART(I2Cx, ENABLE); > // Timed(!I2C_GetFlagStatus(I2Cx, I2C_EVENT_MASTER_MODE_SELECT)); <- > RAUSGESCHMISSEN und es LÄUFT Wenn man auf das Event I2C_EVENT_MASTER_MODE_SELECT wartet, sollte man auch die Funktion I2C_CheckEvent() verwenden und nicht I2C_GetFlagStatus(). Was ST geraucht hat, als es sich die I2C-Implementierung ausgedacht hat, weiß ich auch nicht. Da sind eindeutig zu viele Bibliotheken, Events, Funktionen, Flags, States, etc.pp. im Spiel...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.

