SPI 1Mbit Flash EEPROM Ansteuerung

Gast #4536510
Hallo,
Ich würde gerne einen Flash-Speicher 
(https://www.conrad.de/de/flash-sst25vf010a-33-4i-sae-soic-8-microchip-technology-651814.html?gclid=CJLu6pyE-ssCFeEp0wodStIKrw&insert_kz=VQ&hk=SEM&WT.srch=1&WT.mc_id=google_pla&s_kwcid=AL!222!3!87572758017!!!g!!&ef_id=VwEvQAAAAF8m4unh:20160406124018:s) 
für meine Schaltung nutzen.
Leider verstehe ich die Ansteuerung nicht ganz.
Kann jemand von euch mir diese bitte erklären?
Ich weiß, dass ihr gleich schreiben werdet "Guck doch einfach ins 
Datenblatt..."
1. Ist die Anleitung auf Englisch, 2. ICH VERSTEHE FIGURE 4 nicht
Ich weiß, was SCK, CE, SI, SO etc. ist
Aber ich verstehe z.B. nicht, wie, in welcher Form, wahrscheinlich 
binär, der Befehl "03" zum Auslesen gesendet wird.
Was ist "ADD."?
Was ich aber glaube verstanden zu haben: es können nur bestimmte 
Sektoren gelöscht werden. Und wenn man etwas auslesen will, muss der 
"Block" angesteuert werden, dann werden nacheinander die Zustände des 
jeweils folgenden Bits ausgegeben...
Könnt ihr mir helfen?
Wenn nicht: kennt ihr ein einfacher ansteuerbares dauerhaftes 
Speicherelement?
Danke im Voraus aus Berlin
Pascal
Gast
Pascal schrieb:
> Ich weiß, was SCK, CE, SI, SO etc. ist

Dann sollte man meinen das Du SPI verstehst.

Pascal schrieb:
> Aber ich verstehe z.B. nicht, wie, in welcher Form, wahrscheinlich
> binär, der Befehl "03" zum Auslesen gesendet wird.

Das spricht allerdings dagegen.

Pascal schrieb:
> Was ist "ADD."?

Die Adresse.

Pascal schrieb:
> Wenn nicht: kennt ihr ein einfacher ansteuerbares dauerhaftes
> Speicherelement?

Einfacher geht es kaum bei dieser Speichergröße.


https://www.mikrocontroller.net/articles/Serial_Peripheral_Interface
Gast
Ist zwar ein FRAM sollte aber funktionieren

m_hspi ist eine C++ Klasse welche die SPI Funktionen und Clock,cs usw. 
enthält. Ist aber jetzt nicht entscheidend. Wichtig für dich ist die 
Funktion prepareDataTransfer.
1
// commands
2
#define CMD_READ            0x03
3
#define CMD_WRITE           0x02
4
#define CMD_RDMR            0x05        // read mode register
5
#define CMD_WRMR            0x01        // write mode register
1
int Sram_23LC1024::read(uint32_t address, uint8_t *buffer, uint32_t len)
2
{
3
    prepareDataTransfer(CMD_READ, address);
4

5
    int i = 0;
6
    for (; i < len && i < RAM_SIZE; i++) {
7
        buffer[i] = m_hspi.r8();
8
    }
9

10
    m_hspi.deselect();
11

12
    return i;
13
}
1
void Sram_23LC1024::prepareDataTransfer(uint8_t cmd, uint32_t address)
2
{
3
    m_hspi.setClock();
4
    m_hspi.select();
5

6
    // clear top 8 bits (just in case)
7
    address &= 0xFFFFFF;
8

9
    m_hspi.w8(cmd);
10
    // 24 bit address
11
    m_hspi.w8(address >> 16);
12
    m_hspi.w8(address >> 8);
13
    m_hspi.w8(address & 0xFF);
14
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.