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.