Forum: Mikrocontroller und Digitale Elektronik SPI <-> Parallel Ansteuerung OLED + Dataflash


von Thomas (Gast)


Lesenswert?

Hallo

Ich möchte eine kleine Schaltung aufbauen, die Bilder von einem 
DataFlash auf ein OLED schaufelt. Der DataFlash hat 7 Sektoren mit je 
64k. In jedem Sektor würde ich ein Bild platzieren.
Jetzt stelle ich mir im Vorraus ein paar Fragen. Vielleicht können wir 
diese ja gemeinsam klären.
1. Als erste Lösung würde ich Dataflash und OLED in einen sternförmig 
aufgebauten SPI miteinander verbinden. Der µC holt sich die Daten vom 
Flash und schickt sie ans OLED weiter. Als µC setze ich einen AT90CAN128 
mit 16Mhz und als DataFlash ein AT26F004 ein. Was meint ihr, würde der 
SPI Bus für diese Aufgabe reichen oder stosse ich damit an seine Grenzen 
und sollte ich lieber beide parallel ansteuern? Die Bilder werden nur 
einmal übertragen und werden dann im RAM das Displays gespeichert und 
müssen danach nicht mehr refresht werden.
2. Hat jemand eine Idee wie ich die Daten vom Flash ohne den Umweg über 
einen µC direkt ans Display weiterleiten kann, dann parallel. Kann mir 
nicht recht vorstellen, ob das möglich ist würde mir aber dann 
theoretisch jede Menge Pins am µC sparen und den µC nicht so stark 
beschäftigen. Habe hier im Forum mal etwas über einen DMA Baustein 
gelesen geht es mit so etwas und was ist das?


MfG Thomas

von Benedikt K. (benedikt)


Lesenswert?

Wenn OLED und Dataflash am selben SPI Bus hängen, kann man einen Trick 
anwenden:
Das Flash so initialisieren, dass die Daten übertragen werden, und das 
OLED so, dass Daten geschrieben werden. Dann aktiviert man beide 
gleichzeitig, so dass die Daten direkt vom Flash zum OLED wandern. 
Aufgrund der MOSI/MISO Leitungen, müssen die Daten leider durch den µC. 
Das ganze sieht dann in etwa so aus:
1. Byte vom Flash lesen
1. Byte zum OLED senden und gleichzeitig 2. Byte vom Flash lesen
2. Byte zum OLED senden und gleichzeitig 3. Byte vom Flash lesen
usw.

Das spart die Hälfte der Zeit.

von Thomas (Gast)


Lesenswert?

Hi Benedikt

Vielen Dank für deine Antwort. Hört sich nicht schlecht an diese Lösung.
Wenn ich dich richtig verstanden habe stelle ich das OLED auf Schreiben 
und den Flash auf Lesen. Danach triggere ich vom µC einen Lesevorgang 
vom Flash und die Daten bekommt OLED und Controller. Der Controller kann 
die Daten danach wieder verwerfen und den zweiten Lesevorgang starten. 
Ist es so richtig?
Hast du selbst schon mal sowas aufgebaut und kannst Erfahrungen bzgl 
Geschwindigkeit sagen?

MfG Thomas

von Benedikt K. (benedikt)


Lesenswert?

Thomas wrote:
> Danach triggere ich vom µC einen Lesevorgang
> vom Flash und die Daten bekommt OLED und Controller. Der Controller kann
> die Daten danach wieder verwerfen und den zweiten Lesevorgang starten.
> Ist es so richtig?

Das wäre eine Möglichkeit, die allerdings daran scheitern, dass die 
Daten vom Flash über MISO kommen, das OLED die Daten aber über MOSI 
erwartet.

Wenn das OLED die Daten aber parallel bekommt, und der Flash auch 
parallel ist, dann kann man auf diese Art theoretisch >1Mbyte/s 
erreichen.

> Hast du selbst schon mal sowas aufgebaut und kannst Erfahrungen bzgl
> Geschwindigkeit sagen?

Mit 8bit parallelem Interface habe ich das schon gemacht: PC -> OLED 
(über FT245 und mega8) erreicht rund 500kByte/s. Mit dem Flash und SPI 
würde ich eine ähnliche Geschwindigkeit erwarten, und das sollte 
eigentlich reichen.

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.