Forum: Mikrocontroller und Digitale Elektronik ASM für M3 probieren?


von Joachim .. (joachim_01)


Lesenswert?

Moin,
ich hab hiern nen SAM3X der mit 84 MHz läuft und ein Touch-Display, 
272x480, 24bit Farbe ansteuern soll. Eigentlich ziemliche Haushaltsware, 
wenn da nicht das Problem wäre, das komplette Timing (HSYNC,VSYNC + 
Austastung) selber machen zu müssen da die Schnittstelle mehr oder 
weniger nur eine Art großes dummes Schieberegister darstellt. Der Chip 
könnte zwar mehr, jedoch ist der SPI-Bus nicht herausgeführt.

Im Moment habe ich zwei Probleme:
- Obwohl ich nun seit drei Tagen dran rumfrickel und mich ungefähr exakt 
an das etwas chaotische, ursprünglich chinesische Datenblatt des 
Herstellers halte bekomme ich nicht mal einen reproduzierbaren Balken 
hin.

- Ich habe mal auf dem Oszi die Zeit gestoppt um die Farbinformation für 
den nächsten Pixels zu ermitteln: Für ein paar in C geschriebene Zeilen 
Code sind die Zeiten ernüchternd, es reicht nie und nimmer für eine 60Hz 
Wiederholrate.
Verlockend an diesen Dingern ist der niedrige Preis von ca 16EUR im 
Vergleich zu den fast doppelt so teuren Displays mit sog. 
8080-kompatiblen Controller. Bis jetzt habe ich aber nur Code für uC 
gefunden die ein eingebautes LCD-Modul (STM32F427, LPC 1788) nutzen.
Somit stehe ich jetzt am Scheideweg:
Das ganze mühsam in Asm angehen? Lernen schadet zwar nie, aber der 
Aufwand ist mMn halt sehr hoch.
Oder das Ganze lassen lassen und auf nen anderen Chip ausweichen zumal 
eigentlich noch viel mehr Code in den Chip mit rein soll?

: Verschoben durch Moderator
von (prx) A. K. (prx)


Lesenswert?

Und wo war jetzt die Frage, die jemand beantworten kann, der das 
geforderte Timing nicht kennt?

von Rolf Magnus (Gast)


Lesenswert?

Hmm, also 272*480 bei 60 Hz ergibt ohne Austastlücken ca. 23 Mhz 
Pixeltakt, entsprechendt etwa 3,5 Taktzyklen pro Pixel. Daß das nicht 
reicht, ist nicht verwunderlich.

von Rolf Magnus (Gast)


Lesenswert?

Ich sollte nicht so kurz nach dem Aufstehen rechnen...
Es ergibt natürlich 7,8 Mhz (23 MB/s bei 24 Bit) entsprechend ca. 10,7 
Taktzyklen pro Pixel, was immer noch ziemlich sportlich ist.

von (prx) A. K. (prx)


Lesenswert?

Soweit schon - aber muss man unbedingt komplette 24 Bits pro Pixel 
erzeugen? Wenn man sich auf weniger Farben beschränkt, dann reduziert 
sich die Datenrate des µCs dementsprechend. Nur kann es sein, dass man 
dann extern etwas zusätzliche Logik benötigt.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Atmel sagt, der SAM3X habe DMA. Das wär mal eine wahrhaft lohnende 
Anwendung dafür, wenn man Timer plus DMA so verheiratet kriegt, dass die 
Pixel-Übertragung damit automatisch ablaufen kann.

: Bearbeitet durch User
von Guest (Gast)


Lesenswert?

A. K. schrieb:
> Atmel sagt, der SAM3X habe DMA. Das wär mal eine wahrhaft lohnende
> Anwendung dafür, wenn man Timer plus DMA so verheiratet kriegt, dass die
> Pixel-Übertragung damit automatisch ablaufen kann.

Sowas gibt's z.B. bei Renesas, nennt sich dort Direct Drive, bzw. exDMA.

von Joachim .. (joachim_01)


Lesenswert?

>Nur kann es sein, dass man dann extern etwas zusätzliche Logik benötigt.
Das wollte ich halt komplett umgehen. Einige Boards die ich sah haben 
noch externes RAM, das tu ich mir hw-mäßig aber nicht an.
Eine Alternative wäre das neue Discovery-Board mit nem STM32F427 mit LCD 
Controller + LCD auf der Platine.

Was ich noch zum Refresh sagen wollte: Wenn ich das Bild einfriere (den 
uC im Reset halte) fällt es immerhin nicht zusammen, d.h. der letzte 
übergebene Frame wird gespeichert. In sofern wäre das Timing viielleicht 
doch kein so großes Problem, vor allem wenn man mit der Farbauswahl 
runtergeht.
Aber was mich halt fuchst ist dass der Code nicht funktionieren will, 
obwohl es eigentlich nur erweiterte Bitschubserei ist; da werd ich wohl 
alleine durch müssen. Das per DMA zu lösen hätte was; aber ob ich das 
hinbekomme...

von Peter D. (peda)


Lesenswert?

Joachim ... schrieb:
> Für ein paar in C geschriebene Zeilen
> Code sind die Zeiten ernüchternd

Ohne diese Zeilen zu sehen, kann man nichts dazu sagen.
Man kann in C sehr leicht was hinschreiben, wo der Compiler sich echt 
einen abbrechen muß, um daraus Code zu machen.
Oder vielleicht hast Du auch nur die Optimierung ausgeschaltet.

von m.n. (Gast)


Lesenswert?

Ohne DMA geht garnichts. Mit DMA gibt es einige Beispiele. ExDMA der 
Renesas µCs ist ja schon erwähnt worden.
http://www.mino-elektronik.de/TFT-direct-drive/TFT-direct-drive.htm

Vergiss die 24-Bit Farbtiefe; die TFTs sind so blickwinkelabhängig, dass 
es eh nur bunt wird.
Verwechsel den STM32F427 nicht mit dem ..429. Nur der ..429 hat den 
TFT-Controller auf dem Chip.

von (prx) A. K. (prx)


Lesenswert?

Guest schrieb:
> Sowas gibt's z.B. bei Renesas, nennt sich dort Direct Drive, bzw. exDMA.

Möglicherweise geht das auch mit normalem DMA. Der Timer erzeugt dann 
den Pixeltakt am Pin und löst ausserdem einen DMA-Transfer zum Port aus. 
Worst case ist, wenn das DMA zufällig mal zu lange braucht und es dann 
ein falsches Pixel gibt.

: Bearbeitet durch User
von Joachim .. (joachim_01)


Lesenswert?

Ich werde mich das Wochenende über mal einlesen und die DMA-Examples 
ausprobieren.

Autor: A. K. (prx) schrieb:
>Und wo war jetzt die Frage,
So wie's aussieht also doch kein ASM ;-) Danke an Alle für einen 
"Stolperstein in eine neue Richtung".

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.