PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : seltsames SPI - Verständnisfrage



Crazy Harry
25.09.2007, 11:25
hallo @ all,

ich habe eine (meine ich) seltsame SPI-schnittstelle. der baustein wird nur schreibend betrieben, hat also folgende leitungen:

- SI .... serial data in
- SCL .... serial clock
- CS1B .... chip select

zusätzlich gibt es aber noch eine leitung

- A0 .... L=Command, H=Data

was mich jetzt etwas verwirrt ist der satz aus dem datenblatt

The A0 input is read and used for detection every 8th
rising edge of the 4-line SPI clock after the chip becomes
active.

heißt das, daß ich A0 bei oder nach jedem 8.bit verändern oder toggeln muß, damit das byte-ende erkannt wird ? nur wie, da ja je nachdem ob daten oder command A0 entweder vorher L oder H war ? oder wie soll ich das deuten ?

und nochwas: anhand der grafik vermute ich mal, daß SPIcpha (phase) = 1 und SPIcpol (polarität) = 1 ist ?

gruss
harry

PicNick
25.09.2007, 12:53
Aus der Graphik würde ich sagen, beim 8. Bit mußt Du A0 hochziehen, damit es bei der rising edge oben ist (saublöde Geschichte für Hw SPI).

soweit, so gut, wenn er das auch als Command/Data versteht.

Das mit der polarität ist, soweit ich mich erinnere, richtig

Was gibt es noch für Informationen über Command / Data ?
Was ist das für ein Trumm ?

Crazy Harry
25.09.2007, 14:03
ich verwende softSPI - muß mir dann aber leider meine ausgaberoutinen selber schreiben. ich probiers mal :)

das ganze ist ein display
http://www.lcd-module.de/deu/pdf/grafik/dogm132-5.pdf

PicNick
25.09.2007, 14:33
Ah so ist das :

Zurück an den Start:

Für die SPI-Übertragung selbst braucht er A0 gar nicht. Nur Clock und Data

A0 gilt nach wie vor als Command/Data Leitung.

Was gemeint ist: er liest A0 erst beim 8.Bit, d.h. spätesten da muß es null oder eins sein.
Du kannst A0 also auch vor der Übertragung setzen. d.h. du kannst auch die HW SPI verwenden, weil die eigentlich nix damit zu tun hat.

is ja doch einfacher

PICture
25.09.2007, 19:47
Hallo Crazy Harry!

Der PicNick hat das sehr gut erklärt, ich versuche es noch einfacher.

Die Signale steuert man bei z.B. einem Handy Display wie folgt:

- durch CSx wird angesprochenes Display gewählt, bei einem ist CSx mit GND verdrahtet.

- man setzt A0 auf H für Befehl bzw. L für Data und schickt seriell 8 Bits. Wenn mehr Databytes gesendet werden braucht man A0 erst vor dem ersten Befehl ändern. Genauso wenn mehrere Befehle gesendet werden, braucht man A0 erst vor dem ersten Databyte ändern.

MfG

Crazy Harry
25.09.2007, 21:09
hi PicNick - hi PICture,

herzlichen dank :) es lag an dem A0-signal. zum einen war es nicht zum richtigen zeitpunkt da und zum anderen (ein oszi hat es gezeigt) hat der µC das L nicht geliefert: meine schuld, denn genau für diesen pin war das ddr-register nicht gesetzt.

das lcd läuft auf jeden fall :) - jetzt kann ich mich an die eigentliche arbeit machen: ein interface für I²C

gruss
harry

Rudi Ratlos
01.03.2008, 16:22
hi PicNick - hi PICture,
das lcd läuft auf jeden fall :) - jetzt kann ich mich an die eigentliche arbeit machen: ein interface für I²C

gruss
harry

Würds Dir was ausmachen den Source zu posten. Ich verzweifele hier an dem Init von so einem DOGM132, das Drecksding will nicht obwohl das auf dem 4 Kanel Speicheroszi alles gut aussieht. Würde mir helfen.

Bei Mikrokontroller.net sind auch schon diverse Leuts am verzweifeln....

Markus

Rudi Ratlos
01.03.2008, 18:30
Hat sich erledigt, war ein simpler Tippfehler (Tilde vergessen beim Bit löschen). Geht jetzt.

Markus