Forum: Mikrocontroller und Digitale Elektronik SPI 1Mbit Flash EEPROM Ansteuerung


von Pascal (Gast)


Lesenswert?

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

von hp-freund (Gast)


Lesenswert?

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

von Werner P. (Gast)


Lesenswert?

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
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.