Hallihallo! Gibt es die Möglichkeit an den FMC bzw. den FSMC zwei verschiedene Geräte anzuschließen, in meinem speziellen Fall wäre das über FMC einmal einen SDRam und zusätzlich einen AD7606 ADC-Wandler. Falls ja, wie funktioniert das? Habe versucht da schon ein wenig zu googlen, aber wurde nicht wirklich schlau dadurch, etwas vom "multiplexen" habe ich gelesen. Werden die Anschlüsse einfach doppelt belegt und der Controller kümmert sich nach der Initialisierung um alles weitere? Wie schaut es da mit dem Tempo aus, zugegriffen kann ja immer nur auf ein Device, kommt da noch zusätzliche Zeit ins Spiel für den Wechsel von einem Device auf das andere? Danke euch! Grüße Reggie
@ Reginald Leonczuk (Firma: HS Ulm) (reggie) >Gibt es die Möglichkeit an den FMC bzw. den FSMC zwei verschiedene >Geräte anzuschließen, in meinem speziellen Fall wäre das über FMC einmal >einen SDRam und zusätzlich einen AD7606 ADC-Wandler. Wahrscheinlich schon. >Falls ja, wie funktioniert das? Den SDRAM schließt man ganz normal gemäß Datenblatt an. Den AD-Wandler schließt man ebenfalls an den gleichen Datenbus an. >Habe versucht da schon ein wenig zu >googlen, aber wurde nicht wirklich schlau dadurch, etwas vom >"multiplexen" habe ich gelesen. Ja, das wird gemultiplext. Genauer, Zeitmultiplex. https://www.mikrocontroller.net/articles/Multiplexen#TDMA >Werden die Anschlüsse einfach doppelt >belegt und der Controller kümmert sich nach der Initialisierung um alles >weitere? Ja. Die einzigen Signale, welche nicht doppelt belegt werden, sind die CS (chip select) Signale. Diese wählen beim Buszugriff den jeweiligen Chip aus. Alle anderen geben dann Ruhe. >Wie schaut es da mit dem Tempo aus, zugegriffen kann ja immer >nur auf ein Device, kommt da noch zusätzliche Zeit ins Spiel für den >Wechsel von einem Device auf das andere? Das kommt auf den Controller im uC an, meistens sind das nur sehr wenige Takte.
hier mal als Anhaltspunkt ZBV: -aus readme: /** @page DMA_FLASH_RAM DMA_FLASH_RAM @verbatim ******************** (C) COPYRIGHT 2011 STMicroelectronics ******************* * @file DMA_FLASH_RAM/readme.txt * @author MCD Application Team * @version V1.0.0 * @date 19-September-2011 * @brief Description of the DMA FLASH to RAM example. ************************************************************************ ****** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. ************************************************************************ ****** @endverbatim @par Example Description This example provides a description of how to use a DMA channel to transfer a word data buffer from FLASH memory to embedded SRAM memory. DMA2 Stream0 channel0 is configured to transfer the contents of a 32-word data buffer stored in Flash memory to the reception buffer declared in RAM. The start of transfer is triggered by software. DMA2 Stream0 channel0 memory-to-memory transfer is enabled. Source and destination addresses incrementing is also enabled. The transfer is started by setting the Channel enable bit for DMA2 Stream0 channel0. At the end of the transfer a Transfer Complete interrupt is generated since it is enabled. The Transfer Complete Interrupt pending bit is then cleared. When the DMA transfer is completed the DMA Stream is disabled by hardware. The main application can check on the Stream Enable status to detect the end of transfer or can also check on the number of remaining transfers which should be equal to 0 at the end of the transfer. A comparison between the source and destination buffers is done to check that all data have been correctly transferred. STM32 Eval board's LEDs can be used to monitor the transfer status: - LED4 is ON when the program starts. - LED3 is ON when the configuration phase is done and the transfer is started. - LED5 is ON when the transfer is complete (into the Transfer Complete interrupt routine) - LED6 is ON when the comparison result between source buffer and destination buffer is passed. It is possible to select a different Stream and/or channel for the DMA transfer example by modifying defines values in the file main.h. Note that only DMA2 Streams are able to perform Memory-to-Memory transfers. There are different options to check on the DMA end of transfer: 1. Use DMA Transfer Complete interrupt. 2. Use DMA enable state (the DMA stream is disabled by hardware when transfer is complete). 3. Use DMA Stream transfer counter value (the counter value is decremented when transfer is ongoing and is equal to 0 at the transfer end). 4. Use DMA Transfer Complete flag (polling mode). In this example methods 1, 2 and 3 are provided (you can select between method 2 and 3 by uncommenting relative code in waiting loop in the main.c file). @par Directory contents - DMA_FLASH_RAM/system_stm32f40x.c STM32F4xx system clock configuration file - DMA_FLASH_RAM/stm32f4xx_conf.h Library Configuration file - DMA_FLASH_RAM/stm32f4xx_it.c Interrupt handlers - DMA_FLASH_RAM/stm32f4xx_it.h Interrupt handlers header file - DMA_FLASH_RAM/main.c Main program - DMA_FLASH_RAM/main.h Main program header file @par Hardware and Software environment - This example runs on STM32F4xx Devices Revision A. - This example has been tested with STM32F4-Discovery (MB997) RevA and can be easily tailored to any other development board. @par How to use it ? In order to make the program work, you must do the following : + EWARM - Open the DMA_FLASH_RAM.eww workspace - Rebuild all files: Project->Rebuild all - Load project image: Project->Debug - Run program: Debug->Go(F5) + MDK-ARM - Open the DMA_FLASH_RAM.uvproj project - Rebuild all files: Project->Rebuild all target files - Load project image: Debug->Start/Stop Debug Session - Run program: Debug->Run (F5) + TASKING - Open TASKING toolchain. - Click on File->Import, select General->'Existing Projects into Workspace' and then click "Next". - Browse to TASKING workspace directory and select the project "DMA_FLASH_RAM" - Rebuild all project files: Select the project in the "Project explorer" window then click on Project->build project menu. - Run program: Select the project in the "Project explorer" window then click Run->Debug (F11) + TrueSTUDIO - Open the TrueSTUDIO toolchain. - Click on File->Switch Workspace->Other and browse to TrueSTUDIO workspace directory. - Click on File->Import, select General->'Existing Projects into Workspace' and then click "Next". - Browse to the TrueSTUDIO workspace directory and select the project "DMA_FLASH_RAM" - Rebuild all project files: Select the project in the "Project explorer" window then click on Project->build project menu. - Run program: Select the project in the "Project explorer" window then click Run->Debug (F11) * <h3><center>© COPYRIGHT 2011 STMicroelectronics</center></h3> */
FMC = flexible memory controller - kann SD-RAM FSMC = flexible STATIC Memory Controller - kein SD-RAM einen FMC haben nur die großen uCs von ST, F4/F7 High Performance Linie. der AD-Wandler kann vielleicht an das i80 Interface vom F(S)MC angeschlossen werden. Optional ist vielleicht das serielle Interface vorzuziehen. Kommt auf die gewünschte Samplerate an. Gruß, dasrotemopped.
Also ich arbeite schon mit den Parallelen Ports mit FMC (F429) sowie FSMC (F407), auch mit DMA. Allerdings jeweils immer nur ein Device das da dran hängt. Meine Frage richtete sich an die Möglichkeit zwei Devices an einem MemoryController anzubinden und abwechselnd anzusprechen (selbstverständlich ohne abwechselndes De/Init). Der AD-Wandler läuft im übrigen eher langsam, maximal einige Dutzend kHz, allerdings mit zwei Kanälen. Im Internet habe ich bisher leider nichts zu dem Thema gefunden.
>Im Internet habe ich bisher leider nichts zu dem Thema gefunden.
Dein ADC entspricht in etwa dem Anschluss eines LCD am F(S)MC.
Schau dir das mal an. Da findest du genug. Zieh dir mal
die Schaltpläne von den grossen EVAL Boards von ST.
Da sind oft SRAM, FLASH und LCD gemeinsam am F(S)MC
angeschlossen.
holger schrieb: > Dein ADC entspricht in etwa dem Anschluss eines LCD am F(S)MC. > Schau dir das mal an. Da findest du genug. Zieh dir mal > die Schaltpläne von den grossen EVAL Boards von ST. > Da sind oft SRAM, FLASH und LCD gemeinsam am F(S)MC > angeschlossen. Ui, Geheimtipp! Danke hierfür!
Reginald L. schrieb: > Meine Frage richtete sich an die Möglichkeit zwei Devices > an einem MemoryController anzubinden und abwechselnd anzusprechen > (selbstverständlich ohne abwechselndes De/Init). Schau nach in der Doku, was für welche und wieviele Chip-select-signale die Businterfaces bieten. Von ST vorgesehen ist jedenfalls durchaus, daß man sowohl SDRAM als auch anderes wie z.B. statischen RAM oder externen Flashrom oder sonstwas an den Bus anschließen kann. ABER: Die signale für den SDRAM sind doch eher schnell, so im Rahmen von einigen Nanosekunden und da sollte man sich vorher gut überlegen, mit wieviel Längen an Leiterzug und mit wieviel sonstigen IC-Pins man diese Signale belasten darf, ohne daß deren Funktion beeinträchtigt wird. Ich wäre da bei vorhandenem SDRAM mit allen weiteren Verwendungen des herausgeführten Busses sehr vorsichtig. Ach ja, die ersten Musterserien der F7xx im 208er Gehäuse hatten/haben da noch nen Bug drin: man kann bei denen nichts mischen, sondern nur exclusiv entweder SDRAM oder was Statisches dranhängen. W.S.
W.S. schrieb: > Ach ja, die ersten Musterserien der F7xx im 208er Gehäuse hatten/haben > da noch nen Bug drin: man kann bei denen nichts mischen, sondern nur > exclusiv entweder SDRAM oder was Statisches dranhängen. Das ist schon mal klasse, dass du das erwähnst, ich schaue nämlich schon seit ein paar Tagen nach der 7er Serie.
> Ich wäre da bei vorhandenem SDRAM mit allen weiteren Verwendungen des
herausgeführten Busses sehr vorsichtig.
Wenn wir 74LV245 o.ä. nah dranhängen sollte das doch gegessen sein?
*.* schrieb: > Wenn wir 74LV245 Guck mal in die Spec's der gängigen SDRAM's. Hier geht es eher um Dämpfungs-Widerstände (so 22..33 Ohm) in den Adress- und Steuerleitungen, damit Reflexionen kein Fehlverhalten auslösen. So langsam wird die Sache zu kritisch für normale Bastler. Mit den 50..70 MHz vor paar Jahren war das noch recht leicht, mit den jetzigen rund 120 MHz Systemtakt geht's grad noch so (die 180 MHz bei den 'F4xx' brauchen so viele Waitstates, daß es ein bissel witzlos wird) und mit den nächsten Chips und mehr als 200 MHz sehe ich ein dezentes Warnschild am Wegesrand. Wenn man nicht über nen engen Kontakt zum Hersteller und über Meßtechnik und viel Zeit+Geld verfügt, wird das Designen der engeren Peripherie (SDRAM usw.) leicht zum Fiasko. W.S.
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.