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.
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 | }
|
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. :-(
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.