STM32F105 bei I2C Read ein Byte zu viel

Gast #4200214
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.
Angehängte Dateien:
Gast #4200381
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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren