Forum: Mikrocontroller und Digitale Elektronik mit SPI mehr als 8 Bit auf einmal senden (für Display)


von nicart (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich würde gerne ein kleines Display (kein Dot-Matrix) ansteuern.
Das Display hätte 32 Segmente die ich ansteuern kann.
Diese Segmente werden über einen HOLTEK HT1621 Display Controller 
angesteuert.

Der Displaycontroller kommuniziert mittels 3 Leitungen mit meinem uC.
Diese wären CS (chip select), WR Clock und Data.
Für mich scheint dies ja wie eine kastrierte kastrierte SPI 
Schnittstelle.

Somit ist mir eigentlich noch alles klar, jedoch sollte der 
Mikrocontroller an den Displaycontroller mehr als 8 Bit auf einmals 
senden.
Siehe Bild 1

Die ersten 3 Bit um den Write Modus zu erkennen.
Die nächsten 6 sind für die Adresse und dann noch 4 für die Daten.

Wenn ich 2 Zeichen hintereinander schalten will setzt der Clock des 
Mikrocontrollers jedoch für kurze Zeit aus.
Siehe Bild 2

Ist das überhaupt der richtige Weg??
Was könnte ich noch versuchen?

Vielen Dank.
nicart

von Thomas B. (escamoteur)


Lesenswert?

es wäre hilfreich zu wissen, welchen µC Du verwendest.

Gruß
Thomas

von nicart (Gast)


Lesenswert?

Einen uPD78F0500 von NEC / Renesas aus der 78k0/KB2 Familie.

von Falk B. (falk)


Lesenswert?

@  nicart (Gast)

>Für mich scheint dies ja wie eine kastrierte kastrierte SPI
>Schnittstelle.

Wieso kastriert? Das IST SPI, einfach und robust.

>Wenn ich 2 Zeichen hintereinander schalten will setzt der Clock des
>Mikrocontrollers jedoch für kurze Zeit aus.

Das ist normal, du musst ja nachladen. Es wird immer nur ein Byte am 
Stück gesendet. Spielt bei SPI aber keine Rolle.

>Ist das überhaupt der richtige Weg??

Ja.

>Was könnte ich noch versuchen?

Was geht denn nicht? Die Lücke im Datentransfer stört keinen.

MFG
Falk

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ja, das ist wohl normal.
Der Controller erkennt diese Lücke gar nicht, weil das Protokoll nur auf 
die Flanken des Taktes basiert, egal was dazwischen für Pausen sind.

von spess53 (Gast)


Lesenswert?

Hi

>Wenn ich 2 Zeichen hintereinander schalten will setzt der Clock des
>Mikrocontrollers jedoch für kurze Zeit aus.

So lange du CS nicht deaktivierst ist das egal. Den Displaycontroller 
interessieren nur 16 aufeinander folgende Flanken, nicht deren Abstand.

MfG Spess

von nicart (Gast)


Lesenswert?

Echt?
Super, dann werde ich das ganze mal an den Controller schicken.

Vielen Dank an Alle

von Falk B. (falk)


Lesenswert?


von nicart (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Ich hätte da nochmals eine kleine Frage.

Wie würdet ihr das Datenpaket zusammenstückeln?
Da ich ja 13 Bit senden sollte, aber ich ja nur vielfache von 8 senden 
kann.
Die Taktleitung taktet ja mit, solange zeichen gesendet werden.
Siehe Bild.
Gelb Clock / Takt.
Violet ChipSelect CS.
Blau Daten.

Danke vorab

von Falk B. (falk)


Lesenswert?

@nicart (Gast)

>Wie würdet ihr das Datenpaket zusammenstückeln?
>Da ich ja 13 Bit senden sollte, aber ich ja nur vielfache von 8 senden
>kann.

Mit SPI in Software kannst du belibige Datenpakete senden, ist halt 
etwas langsamer.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

Und die Jungs, die den IC gebaut haben, sollten noch mal ein paar 
Nachhilfestunden nehmen.

MfG
Falk

von Falk B. (falk)


Lesenswert?

Nachtrag. Möglicherweise kann man aber auch einfach führende Nullen 
auffüllen und dann Vielfache von 8 Bit senden, denn der IC scheint ja 
feste Bitkombinationen als Erkennung der Kommandos zu nutzen. Dann 
klappts auch mit Hardware-SPI.

MFG
Falk

von nicart (Gast)


Lesenswert?

Hallo

@Falk:
Diese Idee hatte ich gerade auch
und somit auch gleich umgesetzt.

Mal schauen obs funktioniert.

Danke.

von Olaf (Gast)


Lesenswert?

> Das ist normal, du musst ja nachladen. Es wird immer nur ein Byte am
> Stück gesendet. Spielt bei SPI aber keine Rolle.

Das ist eine Frage des Controllers. Es gibt auch welche die koennen 
durchaus 64Bit oder mehr am Stueck senden.

Olaf

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.