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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.