Liebes Forum, ich benötige Hilfe, weil ich folgendes erreichen möchte: Ein Mikrocontroller (STM32) soll seinen eigene Speicher (Flash memory) auslesen und diese Programmier-Daten an einen weiteren Mikrocontroller weiter geben. Wie programmiere ich, dass ein Mikrocontroller Daten aus seinem eigenen Flash ausliest? Vielen Dank im Voraus! LG
har schrieb: > Wie programmiere ich, dass ein Mikrocontroller Daten aus seinem eigenen > Flash ausliest? In C? so: uint32_t data = *((uint32_t*) 0x08000000); Flash, SRAM, CCMRAM, ext. SDRAM, ext. SRAM, ... sind alle in einem 4GB-Speicherbereich eingebunden. Du musst nur kucken, wo der Flash ist und wie groß er ist.
:
Bearbeitet durch User
Mampf F. schrieb: > uint32_t data = *((uint32_t*) 0x08000000); Da war jemand schneller als ich, ich hab das gerade ausprobiert (und codiert):
1 | void sendbyte(uint8_t ch) |
2 | {
|
3 | // hier muss die Sendefunktion implementiert werden, an |
4 | // die ein Byte gesendet wird |
5 | } |
6 | |
7 | void sendownflash(void) |
8 | {
|
9 | uint32_t *flashmem = (uint32_t*)0x8000000; // einen Zeiger auf die Flashspeicheradresse setzen |
10 | // bei STM32 IMHO ist das eben 0x8000000 |
11 | uint8_t b; |
12 | int adr; |
13 | int fl_len = 0xffff; // 64 kByte |
14 | |
15 | for (adr= 0; adr< fl_len+1; adr++) |
16 | {
|
17 | b= (*flashmem >> 24) & 0xff; |
18 | sendbyte(b); |
19 | b= (*flashmem >> 16) & 0xff; |
20 | sendbyte(b); |
21 | b= (*flashmem >> 8) & 0xff; |
22 | sendbyte(b); |
23 | b= *flashmem & 0xff ; |
24 | sendbyte(b); |
25 | flashmem++; |
26 | } |
27 | } |
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.