Forum: Mikrocontroller und Digitale Elektronik STM32 Primer2, FSMC für LCD ?


von N. C. (nixchecker)


Angehängte Dateien:

Lesenswert?

Hallöchen,

ich habe hier ein Primer2 das ich Schrittweise mit CubeMX und SW4STM32 
zum laufen kriegen möchte. Es blinkt auch schon ;-)

Jetzt bin ich dabei in CubeMX die LCD Belegung fest zu legen.

Allerdings sind die 8 Datenleitungen nicht an die unteren FSMC Bits 
angeschlossen, sondern an FSMC_D4 bis FSMC_D11.
Da muss ich also den 16Bit Modus nehmen.

Dummerweise sind aber auch andere FSMC Leitungen belegt.
Wenn ich diese konfiguriere ist FSMC nicht mehr aktiv.

Die Steuerleitungen passen. Siehe Bild.

Was haben die sich dabei gedacht? Lässt sich das LCD überhaupt mit FSMC 
ansteuern?

Wäre nett wenn mich jemand aufklären könnte. Danke.

von Xaver (Gast)


Lesenswert?

N. C. schrieb:
> Was haben die sich dabei gedacht? Lässt sich das LCD überhaupt mit FSMC
> ansteuern?
Für mich sieht das nicht so aus, als ob die Anschlüsse vom LCD zum FSMC 
passen. Was aber problemlos gehen sollte, die Pins als GPIO zu 
verwenden:
1
void tft_write_command( uint8_t command)
2
{
3
  clear_bit( tft_control_port, TFT_rs);
4
  tft_data_port = command << 4;
5
  clear_bit( tft_control_port, TFT_wr_n);
6
  set_bit( tft_control_port, TFT_wr_n);
7
  set_bit( tft_control_port, TFT_rs);
8
}
9
10
void tft_write_data( uint8_t data)
11
{
12
  tft_data_port = data << 4;
13
  clear_bit( tft_control_port, TFT_wr_n);
14
  set_bit( tft_control_port, TFT_wr_n);
15
}

von N. C. (nixchecker)


Lesenswert?

Danke, das ist auch meine Befürchtung.

Ich wollte eigentlich nichts schieben, so das ich wie gewohnt per DMA 
einfach schnell ein ganzes Bild oder einen Ausschnitt in den 
Grafikspeicher schicken kann.
Scheint aber nicht vorgesehen zu sein.

Das ist sehr Schade. :-(

von N. C. (nixchecker)


Lesenswert?

Ich fürchte sogar, ich muss jedes Bit einzeln setzen oder erst den 
ganzen Port lesen, mit den verschobenen Daten verUNDen und zurücksenden 
um die restliche Peripherie nicht zu stören und so spätere Heimtückische 
Fehler aus zu schliessen.

von Xaver (Gast)


Lesenswert?

N. C. schrieb:
> Ich fürchte sogar, ich muss jedes Bit einzeln setzen...
Da hilft Dir der STM32 mit seinem BSRR-Register:
1
tft_data_port->BSRR = ((~c)<<16) | (c);

Mit DMA wird es komplizierter, weil oft zwischen Kommando und Daten 
umgeschalten werden muss (LCD_RS-Pin). Da lohnt sich DMA nur, wenn man 
viele Daten zu schicken hat. In diesem Fall wird es mit DMA 
wahrscheinlich gar nix, da ja nach jedem Datum mit dem /WR-Pin gewackelt 
werden muss...

von N. C. (nixchecker)


Lesenswert?

Vielen Dank, ich muss nun die schnellste Methode heraus finden.
Die LCD Daten sind Bi-Direktional.

Mal sehen wie das mit HAL so klappt.
Vielleicht spornt mich das sogar an den Inline-Assembler zu probieren.

Ist nur Hobby und mich treibt keiner. ;-)

Für Heute ist es das gewesen.

Gute Nacht und Danke.

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.