mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TFT-Display Controller an STM32 über FSMC


Autor: Thomas Burkhart (escamoteur)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt habe ich endlich einen schönen Display-Controller von Epson 
gefunden, den S1D13706

Praktischerweise soll sich dieser Controller über das Flexible static 
memory controller (FSMC) mit dem STM32 verbinden lassen, wodurch sich 
der Displayspeicher vom STM32 direkt adressieren läßt.

Im ST Forum habe ich dazu folgenden Thread gefunden:

https://my.st.com/public/STe2ecommunities/mcu/List...

Besonders diese beiden Abschnitte dürften Interessant sein:
Hi,

We have connected the stm32 to both the SSD1906 and SSD1961.
Solomon pretty much share similar connections as epson - the Generic 2 should work fine.

FSMC_NBL0 - A0
FSMC_NBL1 - WE1
FSMC_A0 - A1
FSMC_A1 - A2
... for rest of addresses
FSMC_A17 - M/R
FSMC_OE - RD
FSMC_WE - WE0
FSMC_NWAIT - WAIT
BS, RD/WR - pullup

using 16bit data mode.


und
Hi,

we are not using burst mode, the fsmc config is as follows:
/* fsmc setup */

p.FSMC_AddressSetupTime = 2;
p.FSMC_AddressHoldTime = 0;
p.FSMC_DataSetupTime = 40;
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision = 0;
p.FSMC_DataLatency = 0;
p.FSMC_AccessMode = FSMC_AccessMode_A;

/* Color LCD configuration --
LCD configured as follow:
- Data/Address MUX = Disable
- Memory Type = SRAM
- Data Width = 16bit
- Write Operation = Enable
- Extended Mode = Enable
- Asynchronous Wait = Disable */
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = SMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_DuringWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Enable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

and the ssd1906 config is:
/* using ssd Generic #2 interface */
/* CLKI: 25MHz BCLK: 25MHz MCLK: 25MHz PCLK: 6.25MHz */
/* PCLKI uses CLKI/4 */
/* MCLK >= PCLK * 2 (16bit/pixel) */

for the clock we use an external 25MHz, but you could easily use the MCO from the stm32.


Hört sich ja erst mal gut an. Als ich versucht habe das nachzuvollziehen 
hab  ich es aber nicht wirklich nachvollziehen können.

Auf Seite 11 des Controller-Datenblatts ist die Generic Bus Variante II 
gezeigt (ab Seite 18 sind dann die Pins des Controllers beschrieben)

Für Generic BUS II steht dort für A0: system adress bit 0 (A0)

Also würde man ja annehmen, dass A0-A15 einfach mit A0-15 Flexible 
static memory controller (FSMC) des STM32 verbindet.

In dem Beispiel aus dem Forum sieht es aber so aus:

FSMC_NBL0 - A0
FSMC_NBL1 - WE1
FSMC_A0 - A1
FSMC_A1 - A2
... for rest of addresses
FSMC_A17 - M/R
FSMC_OE - RD
FSMC_WE - WE0
FSMC_NWAIT - WAIT
BS, RD/WR - pullup

using 16bit data mode.


NBL0 ist laut STM32 Manual Seite 419 Lowed byte enable (memory signal 
name: NLB)

http://www.st.com/stonline/products/literature/rm/13902.pdf

Ich hoffe einer von euch Hardware-Spezialisten blickt da besser durch, 
ich bin mit meinem Latein am Ende.

Gruß
Tom

Autor: Frank A. (_frank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

der Beitrag ist zwar schon etwas älter (fast genau ein Jahr), da ich 
aber auch gerade mit dem FSMC vom STM32 arbeite und ähnliche Probleme 
habe, möchte ich mal Fragen wie weit du gekommen bist.

Zu deinem Problem:
Auf Seite 474 in dem von dir angehängten ST-Handbuch ist eine Tabelle 
(Table 98). Da ist beschrieben, dass im 16 Bit Modus ein automatischer 
shift um ein Bit in der Adressleitung vorgenommen wird, wenn man die 
NBLx Leitungen verwendet.

Vielleicht kannst du ja mal kurz berichten wie deine Ergebnisse mit 
Display-Controller sind?

Gruß Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.