Selbstbau-Testboard für STM32F4Discovery

OP #2634996
Lesenswert?

Hi,

ich habe ein Stm32f4Dsicovery Board und habe damit schon ein paar 
Programmierversuche gemacht. Um aber nicht immer wieder irgentwelche 
Sachen zusammenlöten zu müssen, wenn ich etwas probieren möchte, will 
ich mir jetzt ein kleines Dev-Board entwickeln, auf das ich das 
Discovery Board draufstecken kann. Das Board möchte ich dann ätzen. Die 
Frage ist, was ich alles drauf packen soll. Ätzen und Löten kann ich 
auch SMD ohne Probleme.

Draufpacken möchte ich:
- Kamera, an das Kamerainterface (entweder direkt auch die Platine oder 
mit nem Kabel)
- mehrere Sensoren, an ADC,I2C und SPI
- ein paar Leds für DAC, und als normale ausgänge
- Taster für den/das EXTI
- einen NAND Flash für das FSMC Interface(kenn ich mich garnicht mit 
aus)
- eine Knopfzelle
- einen SD Karten Slot (Micro SD oder normal?)
- 1 oder 2 Stiftleisten zu den USARTs für ein FTDI Board
- Input Capture vom Timer rausgeführt
- ein kleines LCD

Habt ihr noch Ideen oder Anregungen?
Habt ihr Tipps zu Bauteilen oder Sensoren?

Wenn das ganze Fertig ist, stelle ich es gerne Online, und könnte 
eventuell auch die eine oder andere Platine herstellen, wenn Interesse 
besteht.

MfG
Philipp
Gast #2635025
Lesenswert?

Philipp Maricek schrieb:
> - Kamera, an das Kamerainterface (entweder direkt auch die Platine oder
> mit nem Kabel)

Philipp Maricek schrieb:
> - einen NAND Flash für das FSMC Interface(kenn ich mich garnicht mit
> aus)

Hast du schon mal kontrolliert, ob du an alle Pins ohne Probleme dran 
kommst? Ein paar der DCMI und FSMC Pins werden nämlich schon für andere 
Dinge benutzt. Ich hab noch nicht kontrolliert, ob man die problemlos 
doppelt belegen kann, oder ob die evtl. nicht für die normale Funktion 
gebraucht werden.

Bsp:
PD4: FSMC_NOE, CS43L22 Reset
PC7: DCMI_D1, CS43L22 MCLK
...
OP #2635035
Lesenswert?

Hi,

es gibt da son geniales Tool für: 
http://www.st.com/internet/mcu/product/252140.jsp
Da unter Design SUpport und dann unten unter Boards and Tools, da gibts 
den MicroXplorer. Da kann man sich die Konfigurationen zusammenklicken, 
welcher Pin mit was geht, und man bekommt auch angezeigt, was nicht mehr 
geht, wenn man irgendwas aktiviert hat.

SD und Kamera, beides geht nicht, nur eins.
Was genau ich weglassen muss, werde ich entscheiden, sobald ich passende 
Hardware gefunden habe.

MfG
Philipp
OP #2636328
Lesenswert?

Hallo,

hätte denn vielleicht irgendjemand einen Tipp zu einem Nand Flash Chip?
Ich habe schon viel gesucht aber was ich gefunden habe ist meistens 
abgekündigt.

Laut Datenblatt hat Bank 2 (Bank 3 und 4 gibts nicht bei der 100Pin 
Version)
einen Adressbereich von 4x64MB. Heißt (Datenblatt): "Banks 2 and 3 used 
to address NAND Flash devices (1 device per bank)", dass ich einen Flash 
Chip pro Bank mit 256 MB einsetzten kann?

Wie oebn schon geschrieben, finde ich keine Chips, die noch active sind, 
für meine Anforderungen:
Data Width: 16bit
Spannung: max. 3.6V
Schnitstelle: parallel
Typ: SCL
Speichergröße: ist eig. egal, das ein Testboard ist
Synchron oder Asynchron?

Weiß vielleicht jemand einen passenden Chip? Müssen natürlich nicht alle 
Anforderungen erfüllt sein.


Andere Frage. Wie lese und schreibe ich den Flash nach dem 
Konfigureiren? Der Adressraum von Bank 2 geht von 0x7000 0000 bis 0x7FFF 
FFFF.
Wenn ich die ersten 8 Byte lesen will, mache ich das direkt über einen 
Pointer? Oder muss ich dem FSMC erst mitteilen, dass ich die Daten lesen 
möchte und bekomme sie dann bereitgestellt?
1
uint64_t read_data = *((uint64_t*)0x70000000);
Wenn ich das Probiere und Debugge bekomme ich 0 ausgegeben, was 
theoretisch richtig ist, weil kein Flash dran hängt.

MfG
Philipp
Gast #2636473
Lesenswert?

Philipp Maricek schrieb:
> Laut Datenblatt hat Bank 2 (Bank 3 und 4 gibts nicht bei der 100Pin
> Version)
...die 100-pin Version der stm32f407(auf Discovery z.B.) hat max.
A23 --> PIN E2;
-würde , glaub ich, für 16 MB reichen.
Allerdings nur 1 Bank(da nur ein FSMC- NE1/NCE2 auf PD7 ) = Bank1;
-alle Zugriffe über Pointer:
   /* LCD /CS is NE1 - Bank 1 of NOR/SRAM Bank1~4       */
#define LCD_BASE   0x60000000UL

dementsprechend:
#define LCD_REG16(*((volatile unsigned short *)(LCD_BASE  )))

write dann: LCD_DAT16 = dat;
read:   return (LCD_DAT16);
-natürlich verpackt in entspr. Funktionen;
OP #2636522
Lesenswert?

Hi,

ok danke.
Jetzt steige ich glaub ich nicht mehr ganz durch.
Der 100 Pinner geht bis PE6 --> A22. Aber sind die Ax Pins nicht nur für 
die NOR Flashes?

Anscheint funtzt das mit dem Flash Interface nicht so, wie ichs mir 
gedacht hatte. Könnte mir bitte jemand erklären, oder einen Link, welche 
Pins ich brauche, wie das ganze in etwa funkioniert und was für ein 
Interface der Flash Chip haben muss?

MfG
Philipp
OP #2636617
Lesenswert?

Hi,

danke. Jetzt hab ich alles kapiert. Nand Flashes brauchen die Ax Pins 
nicht, die sind nur für Nor Flashes. Für Nand Flashes fehlt nur der 
Select Pin für Bank 3, deswegen lässt sich nur Bank 3 mit maximal 256 MB 
betreiben.
In der Erklärung wird die NAND "NAND512W3A" benutzt, der aber leider 
abgekündigt ist. Es wäre weiterhin nett, wenn jemand einen passenden 
Chip kennt, es mir zu schreiben.

MfG
Philipp
OP #2637165
Lesenswert?

Hi,

verkaufste den? Ich wollte mehrere Chips probieren.
Ich habe den hier gefunden, der ist Baugleich mit den aus dem Manual des 
FSMC.
http://datasheet.elcodis.com/pdf/24/88/248837/nand512w3a2sn6e.pdf
Dazu habe ich mal ein Testboard erstellt. Da ich nur einseitig Ätze, und 
nicht alles auf eine Seite geht, sind die Blauen Linien dann 
Kabelbrücken.
Wär nett, wenn mal jemand drüber gucken könnte, ob alles passt.

MfG
Philipp
Angehängte Dateien:
OP #2637238
Lesenswert?

Kommt auch noch mit drauf. Aber vielleicht mach ich auch so ne art 
Stecksystem, dann kann ich die Platinen einfach über einander stecken, 
oder ich muss versuchen das ganze 2Seitig zu machen. Ich muss mir aber 
noch angucken, wie die SD Karte angeschlossen wir, es gibt ja 1,4 und 8 
Wire, weiß aber nochnicht was ich nehmen muss, und wie es verkabelt 
wird.
#2637354
Lesenswert?

Philipp Maricek schrieb:
>  Da ich nur einseitig Ätze, und
> nicht alles auf eine Seite geht, sind die Blauen Linien dann
> Kabelbrücken.
> Wär nett, wenn mal jemand drüber gucken könnte, ob alles passt.

mal davon abgesehen, dass die hälfte der Bauteile/Leitungen sich 
außerhalb des Boards befinden würde ich sagen, dass du unter dem Chip 
keine Brücken plazieren kannst.

lg much
OP #2637381
Lesenswert?

Michael N. schrieb:
> Philipp Maricek schrieb:
>>  Da ich nur einseitig Ätze, und
>> nicht alles auf eine Seite geht, sind die Blauen Linien dann
>> Kabelbrücken.
>> Wär nett, wenn mal jemand drüber gucken könnte, ob alles passt.
>
> mal davon abgesehen, dass die hälfte der Bauteile/Leitungen sich
> außerhalb des Boards befinden würde ich sagen, dass du unter dem Chip
> keine Brücken plazieren kannst.
>
> lg much


Stimmt, die Kabekbrücken unter dem Chip habe ich nicht beachtet. Aber da 
liegt nichts außerhalb, Das Board unter dem Discovery ist größer, man 
kann die Dimensionen aber nicht auf dem Bild sehen. War aber auch nur 
maln erster Versuch. Ich werd das ganze nochmal vernünftig ausarbeiten 
und gleich mit SD Karten Slot.
Gast #2637577
Lesenswert?

http://www.conrad.de/ce/de/product/411246/TRANSCEND-MICRO-SD-KARTE-2GB-DUAL/0412037&ref=list
...zum Thema SD-Karte
  -Ein Tip:
ich mache hier keine Schleichwerbung, aber hier stimmen Preis/Leistung
-beim grossen C nicht selbstverständlich ;-)
Der miniSD-Adapter wird mit Lötlack-Draht verkabelt und dient als 
Adapter
(fest montiert-geklebt) auf der LP;
Über den SD-Adapter ist der Zugriff an jedem Lesegerät möglich...

Im Bild 018 oben links, ragt dieser Adapter etwas über den Rand 
hinaus(besserer Zugriff)...
OP #2639306
Lesenswert?

Hi,

ist vielleicht ein bisschen Off-Topic. Da ich mitlerweile SMD ätzen und 
löten kann, und das auch oft anwenden werde, und ich sowieso bei Digikey 
(Nor/Nand Flash usw.) bestellen werde, möchte ich mir ein kleines SMD 
Bauteile Sortiment zusammenstellen. Die Kondensatoren und Widerstände 
werden in 0805 sein.

Hat vielleicht jemand ne Liste mit Bauteilen, die oft verwendet werden, 
und die ich mit bestellen sollte? Preislich habe ich so 100-200Euro 
eingeplant.
Widerstände und Kondensatoren werde ich mir wohl in Rollen bestellen. 
(200,600 oder 5000).

Bisher werde ich bestellen:
-Widerstände (welche Werte wären passend? werden in vielen Schaltungen 
ja die gleichen verwendet, 10k z.b)

-Kondensatoren (Welche Werten empfehlt ihr?)

-Spannungswandler

-Dioden

Noch irgendwelche Tipps?

Wenn ich noch für jemanden mitbestellen soll, einfach ne mail schicken:
philipp.maricek@gmx.de

Bestellen werde ich gegen Ende dieser Woche, oder Anfang nächster Woche.

MfG
Philipp
OP #2640341
Lesenswert?

erhardd schrieb:
> ...schau mal unter "SMD-Sammelbestellung" hier, in diesem Kino;
> Zwar vorbei, -aber alle gängigen Werte...

Danke, werde ich mal durchgehen, scheint sehr umfangreich zu sein.

erhardd schrieb:
> ...und frag' mal die klasse Jungs, was das für Arbeit macht...

Wenn du damit auf die Arbeit anspielst, die ich habe, wenn ich die 
Bestellung weiterleite, ich nehme keine 100te Bestellungen an, lediglich 
ein paar.

MfG
Philipp
OP #2646521
Lesenswert?

Hi,

Wie der Flash angeschlossen wird, weiß ich jetzt. Aber nochmal zum 
Verständnis: Bei der 100pinner Version kann man Bank 1 (nur 64MB) und 
Bank 2 nutzen. Kann ich Bank 1 und Bank 2 (1x nand und 1 x nor Flash) 
gleichzeitig benutzten? Kann ich dann bei der 176pinner Version alle 4 
Bänke gleichzeitig nutzen? Oder jeweils nur Nor, Nand oder PCCard?

Als Flash möchte ich den hier verwenden:
http://de.mouser.com/Search/ProductDetail.aspx?R=SST39VF010-70-4I-WHvirtualkey57940000virtualkey804-39VF0107IWH
Das ist ein Multipurpose Flash. Der hat die D-Pins und A-Pins. Brauche 
ich die A-Pins(Adress), wenn ich das ding als Nand Flash anschließe?

MfG
Philipp
Gast #2647061
Lesenswert?

...ach, der meinte mich!
Nun, lieber Bastelfreund! Dies ist meine Art, die freiliegenden
Lötlackdrähte zu fixieren.
Sehr oft reisst man sonst unbeabsichtigt einen Draht ab.
Das "wie" sei jedem selbst überlassen, -dennoch ist es ratsam , es zu 
"tun"...

@ Philipp
...schau mal hier
Beitrag "Baseboard Discovery f4"
-mein Ansatz für ein Bord;
Bin dabei, die Software auf eine freie Toolchain anzupassen...
Gast #2647553
Lesenswert?

...zu deiner Frage
Philipp Maricek schrieb:
> Kann ich Bank 1 und Bank 2 (1x nand und 1 x nor Flash)
> gleichzeitig benutzten?

Du sprichst verschiedene Adressbereiche an. Dies führt zu 
unterschiedlichen Chip-select Signalen. Je nachdem welche Bank, ist dies 
NE1 bis 4 oder NCE2
oder ähnliches.
Für Memory-übergreifenden Zugriff ohne Zutun der CPU gibt's dann noch
DMA. Aber das steht auf einem anderen Blatt ...

Bei mir(meinem Board) führe ich NE1 als CS auf einen 74HC00.
Einmal negiert und "ver-nandet" mit den Adressleitungen für A23 (LCD_CS) 
und
nochmal mit A22 (EXP_CS) (und A21 für SRAM);
Je nachdem, was ich ansprechen will, setze ich die Adressleitungen;
Dies geschiet bereits automatisch durch das Festlegen der 
address-base...

Hoffe, ich konnte helfen ...
OP #2647803
Lesenswert?

Hi,

ja danke.
Als Nor Flash wollte ich den hier verwenden.
http://de.mouser.com/ProductDetail/Spansion/S29GL256P11TFI010/?qs=boflksbqthq5DfGNsW9NejUUe%2f6N%2fuhrXbhY9Uv3p9g%3d
 der hat als Schnittstelle "Page Mode", es sind allerdings die gleichen 
Pinbezeichnungen, oder bei Flashes mit "CFI" sind auch die gleichen 
Pinbezeichnungen. Kann ich einen Flash mit CFI oder Page Mode auch 
verwenden, oder muss es parallel sein?

Ich hab bei mouser keinen passenden NAND Flash gefunden, und möchte 
nicht noch extra irgendwo anders für einen Flash bestellen. Deswegen 
habe ich mir diesen MultiPurpose Flash ausgewählt:
http://de.mouser.com/Search/ProductDetail.aspx?R=SST39VF010-70-4I-WHvirtualkey57940000virtualkey804-39VF0107IWH
Der hat allerdings auch Adress Pins, wenn ich den als NAND verwenden 
will, muss ich die Adress Pins trotzdem verwenden?

MfG
Philipp
Gast #2649022
Lesenswert?

@Dimitri M. (dimitri)
...und vergess nicht den Spass an der Freude, wenn man ein Board, das in 
den Staaten und Canada verschenkt wird, Stück für Stück ebenso wertvoll 
macht, wie ein gekauftes (um die 200€ von Olimex u.a.);...
#2649068
Lesenswert?

In der Schweiz macht der Zoll keine Probleme. Bis 60 CHF wird 
durchgewinkt. Der nette Chinese gibt den Wert bei 20 USD an. Ich habe 
bei ihm bereits bestellt und die Ware erhalten. Das Board mit STM32F407 
hatten sie damals noch nicht. So kaufte ich eines mit STM32F207 drauf.

Und dann... schickten sie es nach Swaziland statt Switzerland :-D Es 
ging noch mal gut: die Post korrigierte die Adresse.

Er hat übrigens mehr als 10 (more than 10 available) ;-)
#2649089
Lesenswert?

Mehr wirst du wohl auch nicht bieten können, oder?
Grundsätzlich musst du nichts nachweisen. Der Verkäufer deklariert den 
Wert und basta. Ich glaube nicht, die beim Zoll würden irgendwie dagegen 
argumentieren können. Das Board sieht "billig" aus. Es ist kein 
Tablet-PC oder so.
Gast #2649112
Lesenswert?

... der Zoll beanstandet, das die Rechnung nicht, wie vorgeschrieben 
(vom deutschen Zoll für den Rest der Welt), aussen sichtbar angebracht 
wurde und somit eine Berechnung der Zollgebühren nicht möglich ist...
OP #2649153
Lesenswert?

Danke,

wir wollen ein autonomes Fluggerät mit dem Stm32f4 entwickeln, bzw. ein 
Modellflugzeug mit Flugstabilisierung und Autopilotfunktion. Vielleicht 
sogar Auto-Landungen. Dazu gehört z.b. eine Sensorfusion von 3-Achs Gyro 
+ Acc und Magnetometer. Der Gyro wird mit 8kHz und der Acc mit 1kHz 
geupdatet. Da ist auch die DMA und FPU sehr hilfreich.

Philipp

P.S. Ich möchte hier bitte kein Beiträge zu Gesetzten usw. haben, die 
z.b. UAV's verbieten. Wir kennen unsere Rechte und Pflichten und halten 
die ein.
OP #2654793
Lesenswert?

Hi,

sorry dass ich schon wieder damit nerve, aber ich habe heute dieses 
Display modul bekommen und werde damit ein bisschen mit meinem Discovery 
Experementieren, bis das Board vom Chinamann mit der 144pinner Version 
kommt.
http://de.mouser.com/ProductDetail/mikroElektronika/MIKROE-495/?qs=jBNCx3lXxWvH4dQ1aeiElfFbOEUFzRAgm6jooJRy7Pk%3d
Das mit der Adressleitung und Adressbase habe ich irgenttwie noch nicht 
so ganz gerallt.

Die Pins D1-8 und 10-17 werden an den MCU angesclossen, extra 
Adresslines gibt es nicht -> also Multiplexed Mode?

Die Adresse hat 12bit, also 2^12 = 4096byte bzw. 8192, weil immer 2 byte 
gelesen wird?

Der RS Pin soll an einen Ax Pin, und das LCD sollte dann über die 
Adress-Base ansprechbar sein, aber wie funktioniert das genau? Welcher 
Pin genau, und wie finde ich die Adress Base für Register und Ram des 
LCD's raus?

Man gibt bei Bank 1 zwar eine Adresse von 0x60000000 - 0x6FFFFFFF an, 
aber der FSMC müsste das doch theoretisch umrechnen, dass er von 0x00 
anfängt?
Aber der FSMC hat doch nur 24 Adress Pins, das entspräche doch nur einem 
Adressraum von 16Mbyte, bzw. 32Mbyte, wenn der FSMC immer in 16bit 
schritten liest? Wie kommt man dann auf die 64Mbyte pro NOR/SRAM 1/4 
Bank?

Ich hoffe ihr könnt mich nochmal helfen.

MfG
Philipp

P.s. Das hier habe ich noch gefunden, da steht aber auch nur drin, dass 
ich den LCD RS Pin an Ax anschließen muss und die zwischen Register und 
Ram mittels Adres base wechsel.
Gast #2655435
Lesenswert?

...da geht einiges munter durcheinander;
-bereits in meinem ersten post habe ich darauf hingewiesen:

erhardd schrieb:
> Allerdings nur 1 Bank(da nur ein FSMC- NE1/NCE2 auf PD7 ) = Bank1;
> -alle Zugriffe über Pointer:
>    /* LCD /CS is NE1 - Bank 1 of NOR/SRAM Bank1~4       */
> #define LCD_BASE   0x60000000UL
>
> dementsprechend:
> #define LCD_REG16(*((volatile unsigned short *)(LCD_BASE  )))

-pointer sind Zeiger auf die Adresse eines Registers;
wenn die Adresse "LCD_BASE" gleich 0x60000000 (32-bit = 8x4bit) ist,
besagt bit[27:26] == b00 , das es Bank 1 ist.
bei b01 entspricht Bank2
    b10            Bank3
    b11            Bank4

-bei 8-bit ext.Memory HADDR[25:0] 64Mbytesx8bit
-bei 16-bit              [25:1 >> 1] 64Mbytes/2 x 16bit;

#define LCD_REG16(*((volatile unsigned short *)(LCD_BASE  ))) bedeutet,
 die 16bit Daten, die auf den Registerplatz, auf den der Pointer zeigt,
 gelegt werden, -- sind für das LCD-Kommandoregister bestimmt;
dementsprechend:

#define LCD_DAT16  (*((volatile unsigned short *)(LCD_BASE | 
0x00020000)))  // A16(RS) = 1
 die 16-bit Daten sind für den RAM des LCD bestimmt(Pixeldaten);

A16 ist auf RS, die Command/Daten - Umschaltung des LCD zu legen;

-all dies ist hier angewendet worden, Du hättest es nur lesen müssen :-(
http://www.mikrocontroller.net/attachment/142183/myboard.7z
OP #2679030
Lesenswert?

Hi,

das DevBoard vom Chinamann ist heute gekommen, mit dem SRAM und NAND 
Flash drauf. Der SRAM ist auch schon in betrieb, aber beim Nand Flash 
habe ich noch so Probleme. Wenn ich das "Hello" in den Flash schreibe, 
und danach wieder auslese, bekomme ich nur "O" ausgegeben, und ich frage 
mich wo der rest abgeblieben ist.
Der NAND hängt an Bank2.
Hier die Initfunktion:
1
void NAND_Init(void) {
2
  RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
3
  RCC_AHB1PeriphClockCmd(
4
      RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOE,
5
      ENABLE);
6

7
  GPIO_InitTypeDef gpio;
8
  gpio.GPIO_Mode = GPIO_Mode_AF;
9
  gpio.GPIO_OType = GPIO_OType_PP;
10
  gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
11

12
  //GPIOD
13
  gpio.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5
14
      | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10
15
      | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15;
16
  GPIO_Init(GPIOD, &gpio);
17

18
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FSMC);
19
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FSMC);
20
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC);
21
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC);
22
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource6, GPIO_AF_FSMC);
23
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource7, GPIO_AF_FSMC);
24
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FSMC);
25
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FSMC);
26
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC);
27
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource11, GPIO_AF_FSMC);
28
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_FSMC);
29
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC);
30
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC);
31

32
  //GPIOG
33
  gpio.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9;
34
  GPIO_Init(GPIOG, &gpio);
35

36
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource6, GPIO_AF_FSMC);
37
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource7, GPIO_AF_FSMC);
38
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource9, GPIO_AF_FSMC);
39

40
  //GPIOE
41
  gpio.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10
42
      | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14
43
      | GPIO_Pin_15;
44
  GPIO_Init(GPIOE, &gpio);
45

46
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource7, GPIO_AF_FSMC);
47
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource8, GPIO_AF_FSMC);
48
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_FSMC);
49
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource10, GPIO_AF_FSMC);
50
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_FSMC);
51
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource12, GPIO_AF_FSMC);
52
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_FSMC);
53
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource14, GPIO_AF_FSMC);
54
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource15, GPIO_AF_FSMC);
55

56

57
  //FSMC
58
  FSMC_NANDInitTypeDef fsmc;
59
  FSMC_NAND_PCCARDTimingInitTypeDef time_1;
60
  FSMC_NAND_PCCARDTimingInitTypeDef time_2;
61
  fsmc.FSMC_AttributeSpaceTimingStruct = &time_1;
62
  fsmc.FSMC_CommonSpaceTimingStruct = &time_2;
63

64
  FSMC_NANDStructInit(&fsmc);
65
  FSMC_NANDInit(&fsmc);
66
  FSMC_NANDCmd(FSMC_Bank2_NAND,ENABLE);
67

68
}

Und hier die Main Funktion:
1
#define Bank1_SRAM2_ADDR  ((uint32_t)0x64000000)
2
#define Bank2_NAND_ADDR ((uint32_t)0x70000000)
3

4
/* Includes */
5
#include "stm32f4xx.h"
6
#include "stdio.h"
7
#include "stdlib.h"
8
#include "arm_math.h"
9
#include "arm_common_tables.h"
10

11

12
void SRAM_Init(void);
13
void SRAM_WriteBuffer(uint16_t* pBuffer, uint32_t WriteAddr,
14
    uint32_t NumHalfwordToWrite);
15
void SRAM_ReadBuffer(uint16_t* pBuffer, uint32_t ReadAddr,
16
    uint32_t NumHalfwordToRead);
17

18
void NAND_Init(void);
19

20
int main(void) {
21
  int i = 0;
22

23
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
24

25
  SRAM_Init();
26
  NAND_Init();
27

28
  uint16_t out[50];
29
  uint16_t in[50];
30

31
  SRAM_WriteBuffer(out, 0x00, 50);
32
  SRAM_ReadBuffer(in, 0x00, 50);
33

34
  *(uint8_t*)(Bank2_NAND_ADDR+0) = 'H';
35
  *(uint8_t*)(Bank2_NAND_ADDR+1) = 'E';
36
  *(uint8_t*)(Bank2_NAND_ADDR+2) = 'L';
37
  *(uint8_t*)(Bank2_NAND_ADDR+3) = 'L';
38
  *(uint8_t*)(Bank2_NAND_ADDR+4) = 'O';
39

40
  uint8_t aa[] ={0,0,0,0,0};
41
  for(int i=0;i<5;i++)
42
  {
43
    aa[i] = *(uint8_t*)(Bank2_NAND_ADDR+i);
44
  }
45

46
  while (1) {
47
    i++;
48
  }
49
}

Die Timingwerte habe ich direkt in fsmc.c angepasst. Aber nur tar und 
tclr musste ich anpassen, der rest hat gepasst.

Hab ich was vergessen oder einen Pins falsch initialisiert?

MfG
Philipp
OP #2680128
Lesenswert?

So, nochmaln kleines Update, aber es läuft immer nochnet. Ich habe das 
Waitfeature aktiviert, und warte mit schreiben und lesen immer bis ich 
eine Steigende Flanke bekomme, dann müsste er ja fertig sein, aber immer 
noch das gleiche. Wenn ich als letztes nen anderen Buchstaben sende, 
bekomme ich dann den in allen Array Elementen.
1
*(uint8_t*)(Bank2_NAND_ADDR+0) = 'H';
2
  while(!FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_RisingEdge));
3
  *(uint8_t*)(Bank2_NAND_ADDR+1) = 'E';
4
  while(!FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_RisingEdge));
5
  *(uint8_t*)(Bank2_NAND_ADDR+2) = 'L';
6
  while(!FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_RisingEdge));
7
  *(uint8_t*)(Bank2_NAND_ADDR+3) = 'L';
8
  while(!FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_RisingEdge));
9
  *(uint8_t*)(Bank2_NAND_ADDR+4) = 'O';
10
  while(!FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_RisingEdge));
11

12
  uint8_t aa[] ={0,0,0,0,0};
13
  for(int i=0;i<5;i++)
14
  {
15
    aa[i] = *(uint8_t*)(Bank2_NAND_ADDR+i);
16
    while(!FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_RisingEdge));
17
  }

Irgentwleche Tipps?

MfG
Philipp
#2698083
Lesenswert?

erhardd schrieb:
> ...das Stecksystem habe ich schon für meine SRAM-Erweiterung verwendet;

Hi Erhard,

mich würde interessieren, ob du um das RAM verwenden zu können noch 
etwas auf dem Discovery-Board verändert hast?
Was ist mit den Ausgängen INT1 und INT2 vom Gyroskop? Wie sieht das mit 
der Over-Current-Signalisierung vom USB-Host aus. Hast du R50 
ausgelötet?

Könntest du die Eagle-Datei vom Schaltplan mit anhängen.
Gast #2699196
Lesenswert?

...wenn Du die Komponenten des Boards nicht aktivierst
(sprich-enable), stören die auch nicht;
Ob im Einzelfall ein Pin per SW auf z-impedanz(oder hochohmig und 
Eingang)
zu schalten ist, hätte ich als nächstes überprüft;
...ansonsten, billiger geht's nur in den Staaten und wohl auch Kanada.
Da gibt's (gab's?) das Board als Werbegeschenk...
Gast #2699242
Lesenswert?

...sind, soweit ich mich erinnere(4 Wochen sind die halbe Ewigkeit),
die gleichen Addr/Datenltg. ;
- nur NE2-Pin negiert und vernandet, damit SRAM und Porterweiterung
getrennt angesprochen werden können;
Frag bitte nicht nach einem Schaltplan.
Die "Kleinigkeit" habe ich aus dem Gedächtnis(und Datenblatt :)   )
verdrahtet...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren