Forum: Mikrocontroller und Digitale Elektronik STM32F105 bei I2C Read ein Byte zu viel


von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

ich sehe den Wald vor lauter Bäumen nicht.
Es muss eine "dumme" Kleinigkeit sein.
Ich habe mir zum Testen die I2C Routinen von Uwe an meinen STM32F105 
angepasst. Siehe Anhang.
Quelle: http://mikrocontroller.bplaced.net/wordpress/?page_id=720
Dazu musste ich hauptsächlich die GPIO Struktur GPIO_InitStructure an 
die etwas neuere Form mit nur noch 3 Einträgen anpassen.
Außerdem erwartet mein EEPROM am I2C Bus eine Speicheradresse mit 2 
Byte.

Wenn ich mit der Funktion zum Lesen mehrerer Bytes nur ein Byte lese 
(cnt=1), ist alles wie erwartet.
1
UB_I2C1_ReadMultiByte(EEPROM_ADDRESS, (uint16_t)0x001F, 1, I2C_2BYTE_ADR);
In der ersten Übertragung wird ein "A" ausgelesen.
Wenn ich aber die Funktion zum Lesen eines Bytes benutze, wird immer 
noch ein zweites Byte mit 0xFF gelesen.
1
UB_I2C1_ReadByte(EEPROM_ADDRESS, (uint16_t)0x0020, I2C_2BYTE_ADR)
In der zweiten Übertragung wird an der folgenden Adresse im Speicher ein 
"B" ausgelesen, leider gefolgt von einem 0xFF.
Meiner Meinung nach machen die beiden Funktionen für cnt=1 aber das 
gleiche.
Ich sehe den Unterschied nicht. Kann mir jemand auf die Sprünge helfen?
Danke.

Als Anmerkung, die Schreibfunktionen sind noch nicht an den 2-Byte 
Adressmodus angepasst.

von Bernd (Gast)


Lesenswert?

Hm, irgendwie scheint es jetzt doch zu gehen.
Habe eigentlich nichts mehr geändert.
Nun wird auch mit der Funktion zum Auslesen eines Bytes nur ein Byte 
gelesen (kontrolliert mit dem LA).

von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

Es funktioniert jetzt.
Natürlich fehlt für ein EEPROM noch die Behandlung der page Grenzen.
Und ideal ist es ohne IRQ und DMA auch nicht.
Aber zum Testen reicht es erst einmal.

Im Anhang die beiden Files.
Die Schreibfunktionen sind nun auch für 2-Byte Adressen angepasst und 
getestet.

Gruß
Bernd

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.