Hallo Zusammen
Ich arbeite mit dem STM32F407IG und möchte Daten in eine EEPROM 24LC256
schreiben und lesen. Eine Bedienpanel mit LCD Display und dem EEPROM
sind Vorgabe. Text soll ins EEPROM gespeichert werden und bei
entsprechender Anwendung soll der Text vom EEPROM gelesen werden und am
LCD angezeigt werden. Das Ansteuern des Displays habe ich hingekriegt.
Die Kommunikation erfolgt über einen I2C Bus.
Das EEPROM hat laut Datenblatt 32k x 1 Byte. Ich mache ein PageWrite
nach Figure 6-2.
Den Code habe ich im Anhang zusammengestellt.
Mein Problem ist jetzt, dass ich mit einem Sequential Read die Daten aus
dem EEPROM lesen möchte und in mein Array mit 64 Feldern speichern
möchte. Dies klappt nicht. Ich habe auch gelesen, dass man Arrays nicht
als Pointer übergeben kann. Bei Arrays und Pointer habe ich
Nachholbedarf.
Byte-weise lesen geht:
1 | Display_Read(0x0, &Data);
|
1 | bool Display_Read (uint8_t reg, uint8_t *val)
|
2 | {
|
3 | uint8_t data[1];
|
4 | int32_t n;
|
5 |
|
6 | data[0] = reg;
|
7 | n = ptrI2C->SendData(IO_EXPAND_I2C_ADDR, data, 1, true);
|
8 | if (n != 1) return false;
|
9 |
|
10 | n = ptrI2C->ReceiveData(IO_EXPAND_I2C_ADDR, val, 1, false);
|
11 | if (n != 1) return false;
|
12 |
|
13 | return true;
|
14 | }
|
Ich habs noch nicht ganz begriffen, hat jemand einen Tipp oder einen
Hinweis?
Vielen Dank!
Grüsse
M.B.