Forum: Mikrocontroller und Digitale Elektronik SPI -> Parallel (aber diesmal DMA-fähig!)


von Der A. (der-albi)


Lesenswert?

Hallo. Ich möchte ein Grafikdisplay ansteuern.
Problem: das Dingens hat einen 8 bzw 16bit breiten Parallel-Eingang und 
die IOs meines Controllers (AVR32) sind recht lahm.
Deswegen möchte ich (auch wegen der Pinersparnis) auf SPI umschwenken.

Es gibt dazu ja diverse Schieberegister, die auch bis 100MHz SPI 
funktionieren, aber das alleine ist mir nicht genug.
Ich möchte die Daten per DMA aus der SPI pumpen können und da ist keine 
Zeit, mich vor/nach jedem gesendeten Byte um das setzen des EN  WR  RD 
/ RS kümmern zu müssen.

Gibts dafür ordentliche Logik-Lösungen, die nach dem Empfang von 8 oder 
16bits automatisch das WR setzen?
Ich sag mal so: um RS und EN kann man sich ja auch noch selbst kümmern, 
das ist von der SPI unabhängig.

Es wäre seeeehr schön, wenns das ganze auch noch BI-Direktional gäbe.
(RD-Handling?)

Oder muss man sowas selber in nem LogikChip brennen? (CLPD)

SPI geht bis 60Mhz.
Angestrebt sind 16bit.
Oder 8bit :-/

MFG

von Der A. (der-albi)


Lesenswert?

Na Leute.. wasn los mit euch ;-)

ICh brauch doch nur einen Schieberegister-IC, der nach 16clk-Signalen 
automatisch einen 17 Impult erzeugt, den mann dan auf WR legen kann.


Eventuell kann man das ja auch mit 2 kaskadierten 74HC595 und ne 
Zählerlogik machen um den WR-Impuöls zu erzeugen?


Vorschläge... BITTE :-(
Ich kenne mich mit reinen Logik-ICs nicht aus.

von Joerg W. (joergwolfram)


Lesenswert?

CPLD würde ich für sinnvoller halten, schon alleine wegen der 
angepeilten Geschwindigkeit und der einfachen Möglichkeit, das Ganze 
noch nachträglich ohne großen Aufwand zu modifizieren.
Ansonsten lässt sich das auch über Logik und ein paar RC-Glieder bzw. 
Monoflops erreichen. Wichtig ist halt nur, dass zwischen zwei Words eine 
genügend lange Pause ist (kein Clock), um einen WR-Impuls auszulösen.

Gruß Jörg

von Der A. (der-albi)


Lesenswert?

Hallo :-)
Danke für die Antwort..!

Ich kenne mich leider weder mit CPLDs aus, noch mit Logik-ICs.

Ein CPLDs  bräuchte min 16+4 IOs d.h. da kommen nur die großen in Frage 
mit min TQFP44.. oder?? Am liebsten wäre mir so ein 28pin Gehäuse.
Wenn dafür jemand Vorschläge hat, wäre ich froh. ich habe nicht viel 
Platz auf der Platine.

Für den Aufbau mit Logik-ICs bräuchte ich auch ne Designhilfe.


Sehr wichtig ist auch noch, dass es seeeehr sehr wenig Strom zieht. (max 
1mA)

Bekommt man sowas hin?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Der Albi wrote:

> Ein CPLDs  bräuchte min 16+4 IOs d.h. da kommen nur die großen in Frage

Das ist ein eher kleines CPLD. ;-)  Große CPLDs haben 144 Pins...

> mit min TQFP44.. oder?

Habe nur mal bei den Xilinxern geguckt.  Neben PLCC-44 hast du auch
noch TQFP-44 mit 12·12 mm² Außenabmessungen (über die Pins) oder
BGA-48 mit 7·7 mm² Kantenlänge als Varianten.  Letzteres hat 0,8 mm
Ballabstand, das sollte noch ohne Multilayer zu routen sein.

von Benedikt K. (benedikt)


Lesenswert?

Der AVR32 hat doch einen parallelen Bus. Wiso verwendest du den nicht ?

1mA mit einem CPLD wird glaube ich ziemlich schwer werden...

von Der A. (der-albi)


Lesenswert?

Ich nehme UC3B (Stromsparen ;-) ) Der hat kein paralleles interface.

BGA scheidet aus, TQFP-44 ist ganz schön groß. aber was anderes scheints 
nicht zu geben :-(

Wenn CPLD nicht geht bzw ungünstig ist.. wie sähe denn die reine 
Logik-Lösung aus? Die geht doch auch bis 60Mhz... bestimmt.

Ich hab mir das bisher so gedacht:
-2 Kaskadierte 8bit schieberegister
-parallel einen inärzähler, der die Clock durch 4 teilt.
-daran hängt ein 1 zu 4 demultiplexer oder wie das heißt.
-wenn der durchschaltet über verzögerungselemente das WR setzen und 
nocheinmal über ein verzögerungselement die resetpins anstupsen.

geht das so in etwa?

MFG

von Benedikt K. (benedikt)


Lesenswert?

Welches Display hast du denn ? Und wie schnell brauchst du es ?

von Der A. (der-albi)


Lesenswert?

Ich glaube ich darf die Spezifikation des Dispaly nicht so ohne weiteres 
veröffentlichen.. rotwerd

Es ist ein 240x320px 16/18bit TFT-Display. Der Controller ist ein "HX 
acht drei vier sieben" im 16bit modus.

Was haltet ihr vom
http://www.xilinx.com/support/documentation/data_sheets/ds310.pdf
?
4mA/16µA

Geschwindigkeit hab ich schon festgelegt: 60MHz spi. (vllt aber auch 
120? min 60 auf jeden Fall)

von Benedikt K. (benedikt)


Lesenswert?

Diesen Himax Controller kenne ich jetzt nicht (und finde natürlich auch 
kein Datenblatt dazu), aber einige von denen können direkt SPI. Ist es 
bei dem vielleicht auch so ?

von Der A. (der-albi)


Lesenswert?

Ja der kann auch direkt SPI. Leider sind die entsprechenden Pins des 
Controllers auf der Anschlussfolie nicht herausgeführt und die 4 
Konfigurations-Pins mit denen man das Interface wählen kann auch auf 
16bit festgelegt. Um das Parallel-Interface kann ich mich leider nicht 
drücken, auch wenn ich das gerne tun würde. :-(
Der Hersteller macht das in gewisser Weise einfach dumm und unflexibel.

Aber wenigstens bekomme ich für wenig geld als Privatmann solche 
Displays.
In Deutschlad ist das irgendwie nicht möglich. NEEEE, Da muss man halt 
nach China chatten :-/

MFG

von Benedikt K. (benedikt)


Lesenswert?

Das ist etwas dumm. Ich habe gerade ein Display hier liegen, wo alle 
Pins schön rausgeführt sind.

Dann führt wohl kein Weg an etwas Logik vorbei.
Das Problem an dem CPLD ist, dass dieser programmiert werden muss.

Erzeugt der UC3 eventuell ein CS\ Signal, das nach 16bit kurz auf high 
geht ?

von Der A. (der-albi)


Lesenswert?

hrhr. ich weiß was du meinst :-D
Na mom, da schaue ich mal nach.

Also: es gibt so eine Optoin ja, aber die ist mit DMA nicht 
durchsetzbar.
Außer man verdoppelt den genutzen Speicher und das is ja eigentlich 
unfug.

Das Programmieren eines CPLDs ist kein Problem. JTAG ist ja eh 
vorhanden. Ein Leidensgenosse per ICQ der das kann(?) auch.

:-)

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.