Forum: Mikrocontroller und Digitale Elektronik STM32F4 Discovery - SSD1963 TFT


von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Servus mal wieder!

Der STM ist mit dem SSD1963 verbunden, habe soeben versucht die ID 
auszulesen.

1. Wenn ich die ID auslese, spreche ich direkt das Register des SSD1963 
an? Ich beschreibe doch eine bestimmte Stelle im SSD-RAM, danach kann 
ich an anderer Stelle im RAM die Werte entnehmen. Mir fehlt hier das 
Verständnis.

2. Mit den Timings komme ich gar nicht zurecht. Habe in die ST-Sheets 
geschaut, um die benötigten Timings einzustellen, aber im SSD-Sheet 
stehen manche Werte nicht drin, bzw. heißen anders. Habe ein bisschen 
mit den Werten gespielt und es auch geschafft die ID auszulesen. 
Allerdings muss ich zwischen Registeraufruf und auslesen zwischen 5 - 10 
HCLK-Clocks warten, ansonsten kommt nur Quatsch raus.
Das sind meine Timings:
1
#define SSD1963_TIMING_ADDRESSHOLDTIME      1  // 1 - 15
2
#define SSD1963_TIMING_ADDRESSSETUPTIME      9  // 0 - 15
3
#define SSD1963_TIMING_BUSTURNAROUNDDURATION  0  // 0 - 15
4
#define SSD1963_TIMING_DATALATENCY        2  // 2 - 17 // Don't care?
5
#define SSD1963_TIMING_CLKDIVISION        2  // 2 - 16 // Don't care?
6
#define SSD1963_TIMING_DATASETUPTIME      7  // 1 - 255

Mit folgendem Code (Mainloop), kann ich die IDs (lcdidn)auslesen, je 
nach Timing, zündet beim letzten Byte allerdings die if-Bedingung.
1
  LCD_REG = 0xA1;
2
  for (int i = 0; i < 10; i++) {}
3
  lcdid = LCD_RAM;
4
  if (lcdid != 0x0001)
5
    er++;
6
  //for (int i = 0; i < 10; i++) {}
7
  lcdid1 = LCD_RAM;
8
  if (lcdid1 != 0x0057)
9
    er1++;
10
  //for (int i = 0; i < 10; i++) {}
11
  lcdid2 = LCD_RAM;
12
  if (lcdid2 != 0x0061)
13
    er2++;
14
  lcdid3 = LCD_RAM;
15
  //for (int i = 0; i < 10; i++) {}
16
  if (lcdid3 != 0x0001)
17
    er3++;
18
  //for (int i = 0; i < 10; i++) {}
19
  lcdid4 = LCD_RAM;
20
  if (lcdid4 != 0x00ff)
21
    er4++;

Habt ihr mir eine gute Lektüre zu diesem Thema, wenns geht, online? Ich 
denke es geht eher in Richtung SRAM als TFT? Wer Lust und Laune hat, 
darf mir das natürlich auch hier direkt im Forum erläutern, was mir 
natürlich lieber wäre :)


Vielen Dank euch!

Grüße
Reggie

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Aha:

Ich hatte das SDD-Datenblatt von 2008. Jetzt habe ich eins von 2010 
gefunden -.- da sind alle timings drin :> maaaaan...

EDIT: Ich komme auf DataSetupTime von 14*t_HCLK und AddressSetupTime von 
1*t_HCLK. Hört sich das OK an?

: Bearbeitet durch User
von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

So, falls es außer mir noch jemand stundenlang sucht:

http://www.solomon-systech.com/files/ck/files/SSD1961_2_3_Application_note_v1.7.pdf

von m.n. (Gast)


Lesenswert?

Was soll Dein TFT überhaupt anzeigen?
Wenn Du mit 320x240 und wenigen (lesbaren) Farben auskommst, kann der 
F407/F427 das Display doch selber ansteuern. 
Beitrag "TFT-direct-drive, WQVGA-TFT an STM32F4"
Alternativ kann man den F429 einsetzen und mit einer FLUT arbeiten. Wenn 
höhere Auflösung bzw. mehr Farben benötigt werden, braucht der F429 noch 
externes RAM (512K, 10ns) oder auch SDRAM.

Das sieht auf den ersten Blick vielleicht etwas kompliziert aus, hat 
aber den großen Vorteil, daß der Bildspeicher im Adressraum des µC 
liegt, was schnellste Zugriffe erlaubt.

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

m.n. schrieb:
> Was soll Dein TFT überhaupt anzeigen?

Hauptsächlich Text, hohe Bildwiederholrate ist nicht nötig. Es soll über 
das TouchPanel auch Input entgegennehmen.

m.n. schrieb:
> Wenn Du mit 320x240 und wenigen (lesbaren) Farben auskommst, kann der
> F407/F427 das Display doch selber ansteuern.
> Beitrag "TFT-direct-drive, WQVGA-TFT an STM32F4"
> Alternativ kann man den F429 einsetzen und mit einer FLUT arbeiten. Wenn
> höhere Auflösung bzw. mehr Farben benötigt werden, braucht der F429 noch
> externes RAM (512K, 10ns) oder auch SDRAM.

Ich habe bewusst zu einem fertigen 800x480 TFT mit Controller und 
Speicher gegriffen, da ich diese Auflösung benötige. Den F429 und F746 
habe ich mir auch angeschaut, allerdings hätte der F429 keine Vorteile 
gebracht und beim F746 ist mir zu viel Peripherie auf dem Board.
Am liebsten wäre mir ein F7xxx-Board mit vielen IOs und nur der zum 
Start notwendigen Bestückung. Da bleibt dann aber nur die Lösung mit 
selber löten.

m.n. schrieb:
> Das sieht auf den ersten Blick vielleicht etwas kompliziert aus

Sieht es am Anfang immer für mich aus. Aber nachdem es läuft denke ich 
mir: "F***, das war alles?" :)

PS: Servus m.n. :)

PPS: Ach übrigens, das Display läuft jetzt, heute versuche ich mal Text 
anzeigen zu lassen :>

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.