Hallo,
ich verwende das Lattice ECP3 Versa Evaluation Board, auf diesem Board
ist auch ein SPI Flash vom Typ M25P64 drauf.
In diesem Flash wird der Programmcode für den FPGA abgelegt. Ich möchte
nun auch einige eigene Daten mit in dieses Flash ablegen.
In der Eclipse Platform habe ich ein SPI Flash (3.3) eingebunden und im
FPGA verdrahtet. Die Base Address lautet 0x00000000.
Meine eigenen Daten möchte ich im letzten Sektor (7F0000h) ablegen.
So sieht der Zugriff auf den Sektor aus:
Schreiben:
1 | const unsigned int spi_base_addr = 0x00000000;
|
2 | const unsigned int spi_sect_offset = 0x7F0000;
|
3 | Spi_Flash = spi_base_addr + spi_sect_offset;
|
4 | for (spi_index_write = 0; spi_index_write < 40; spi_index_write++)
|
5 | {
|
6 | *Spi_Flash = eeprom[spi_index_write];
|
7 | Spi_Flash++;
|
8 | }
|
Lesen:
1 | Spi_Flash = spi_base_addr + spi_sect_offset;
|
2 |
|
3 | for (spi_index = 0; spi_index < 40; spi_index++)
|
4 | {
|
5 | eeprom[spi_index] = *Spi_Flash;
|
6 | Spi_Flash++;
|
7 | }
|
Das Reinschreiben funktioniert leider nur zweimal, sobald ich ein
drittes Mal Daten reinschreiben möchte, bekomme ich den Wert 0 zurück
beim auslesen.
Hat schon mal jemand das SPI Flash auf diesem Board benutzt und kann mir
weiterhelfen?
Vielen Dank
Peter