PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OSD Chip MAX7456 SPI über Mega8



sast
02.03.2009, 11:04
Versuche mich gerade an einer OSD Ansteuerung mit dem MAX7456. Hab da aber irgendwie ein Verständnisproblem mit dem SPI.

Um eine Adresse zu lesen sende ich ein Byte über die SPI MOSI an den Max. Nun sollte dieser mir aber doch laut Datenblatt den Inhalt der Adresse ausgeben über MISO. Macht er aber nicht. Enable ist auf Low auch noch nach der Adressangabe und laut DB sollte die Antwort bereits mit der letzten fallenden Flanke des Clocksignals beim Adressauslesen beginnen. Da passiert nichts.

Nun meine Fragen wer gibt denn eigentlich beim Hardware SPI den Takt an? Ist das immer der Master? und Wie bekomme ich den dazu, dass er weiter taktet?

Hänge mal ein Stück mitgeloggte Kommunikation an.

sast
(in der Hoffnung das es nur an meiner Unfähigkeit und nicht am bereits dahingeschiedenen Mäxchen liegt)

Ceos
02.03.2009, 13:07
einfach ein dummybyte in das SPI-register dann taktet er weiter, der schieb bei jeder steigenden flanke 1 bit zum slave und bei der fallenden ein bit zum master

du bekommst während du die addressbytes schreibst bereits werte zurückgeliefert, was da drin steht kann ich dir nicht sagen, meist wird einfach eine zahl inkrementiert, sozusagen als empfangsbestätigung!

also h-addressbyte rein, 0 raus, l-addressbyte rein, 1 raus, dummybyte rein, wert raus ... das ist nur zur veranschaulichung, hab mir das datenblatt jetzt nicht angesehn


EDIT: hab das bild grad gesehn, lass mal SPI enabled an während du das 3te byte reinjagst!

PS: versuch mal aus dem datenblatt fig.20 auf seite 22 vielleicht kannst du das rekonstruieren



ist dein MISO auf input gestellt ?!! hab ausversehen miso und mosi mal vertauscht beim input und output einstellen und so die hardware gegrillt ^^

sast
02.03.2009, 13:58
Das mit dem dummy scheint zu funktionieren.
0x00 und 0x40 war Schreiben des Registers 0x00 und 0x80 ist Lesen von 0x00.
Hab nur ans Lesen von 0x00 ein dummybyte angehängt, da er sonst die 0x00 bestimmt als Adresse verstanden hätte.

Scheint also noch alles im Lot zu sein, hatte nämlich beim SMD Löten etwas viel gekleckst.

Hier mal das Logikbild wie es jetzt läuft.