[Gelöst] Problem mit MAX1270 und IOW24 (SPI-Bus)

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
blip
Posts: 12
Joined: Sun May 09, 2004 11:49 am
Location: Winznau, Switzerland
Contact:

[Gelöst] Problem mit MAX1270 und IOW24 (SPI-Bus)

Post by blip »

Hallo zusammen,

meine ersten Gehversuche mit dem SPI klappen irgendwie nicht so...
(mit dem IOW an sich komme ich sonst schon gut klar, wie der SPI theoretisch funktionieren soll habe ich denke ich auch verstanden)
Das Starten des Wandlers scheint ok (ich schiebe 0x80 (START, Channel 0,
0-5V, normal operation, internal clock) rein und kriege 0x00 raus -
so weit so gut. Ich warte 500 Millisekunden, und versuche 2 Bytes zu lesen.
Die haben aber eher zufällige Werte (auch wenn ich Pin13 = Ch0 auf GND
oder VCC lege) - meisten kommt einfach 0x00, 0x00 raus.
Nur um sicher zu gehen, dass ich die Sache mit CPOL und CPHA richtig
verstanden habe: Ich habe den special mode beim IOW mit CPOL=0 (weil
SCK = idle low) und CPHA=0 (weil er laut Datenblatt bei steigender Flanke
liest und bei fallender schreibt). Hab ich das richtig verstanden ?
Weiterhin werte ich DRDY nicht aus (deshalb auch die grosszügige Wartezeit),
weil ich wenn ich das richtig sehe einen Inverter zwischenschalten müsste ?

Datenblatt des MAX1270 ist hier:
http://www.maxim-ic.com/getds.cfm?qv_pk=1911

Wollte mit dem SPI schlussendlich was anderes ansteuern, das mit dem
MAX1270 (hatte ich noch zwei rumliegen) ist ja leider kein so toller Start mit
dem SPI :-/

Vielen Dank für eventuelle Tips schon im voraus,

Blip
Last edited by blip on Wed May 28, 2008 9:36 pm, edited 2 times in total.
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

CPHA=1 setzen. Die Beschreibung ist jeweils aus der Sicht der beschriebenen Chips.

Ist ganz normal bei SPI, da hat mich auch schon der eine oder andere Chip zur Weißglut getrieben weil CPHA/CPOL nicht passten. Gibt ja aber zum Glück nur 4 Kombinationen...

Das Timing sollte kein Problem sein, der A/D wandelt ja in wenigen Mikrosekunden, da kann der Lesezugriff direkt im nächsten Report folgen.
blip
Posts: 12
Joined: Sun May 09, 2004 11:49 am
Location: Winznau, Switzerland
Contact:

Post by blip »

Hm, das hatte ich auch schon probiert, das Resultat ist mehr oder weniger
das gleiche (ausser, dass ich gelegentlich mal 0x00, 0x40 lese anstatt der
sonst gelegentlich (!) erhaltenen Werte 0x00,0x3f oder 0x00,0xff bei VCC an
Pin 13). In meiner Verzweiflung hatte ich sogar CPOL=1 probiert, obwohl mir
das völlig unlogisch schien, änderte aber auch nicht viel.

Trotzdem danke.
Last edited by blip on Wed May 28, 2008 9:36 pm, edited 1 time in total.
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Hm, also dass müsste eigentlich ganz einfach gehen, wir haben den MAX1270 auch schon mal eingesetzt. Zuerst einen Report schicken, in dem genau ein Byte übertragen wird $80 um Input 0 zu lesen. Dann den zweiten Report, in dem zwei Bytes übertragen werden, in Senderichtung zwei mal $00 übergeben.

Wie hoch ist die Taktrate? Da habe ich schon gelegentlich negative Überraschungen gehabt. Zum Testen setze ich immer erst mal die langsamste Taktrate.
blip
Posts: 12
Joined: Sun May 09, 2004 11:49 am
Location: Winznau, Switzerland
Contact:

Post by blip »

Tja genau so mach ich es auch. Habe auch schon mit verschiedenen
Taktraten gespielt und dann aber die niedrigste gelassen (ist ja immer noch
schnell genug, für 3 Bytes). Ein LCD hängt auch nicht mehr am IOW ,-)
Hm, muss mir das nochmal in Ruhe anschauen... im C-Code kann eigentlich
auch kaum ein Bug sein, weil ich meine Routinen für die Ansteuerung von
einem MAX127 kopiert und entsprechend abgeändert habe (deshalb auch mein
Versuch mit einem MAX1270...), also die report-id's im wesentlichen.
Bleibt ja fast nur noch die Verdrahtung...
Nur nochmal zu meiner Frage, als Sie den MAX1270 benutzt haben, mussten
Sie das DRDY Signal invertieren oder haben Sie das gar nicht benutzt ?
Und CPHA muss wirklich auf 1 ? "Aus Sicht des schreibenden Bausteins",
meint doch dann den IOW. Der muss dann doch erst die Daten ausgeben,
dann SCK auf high, und liest dann die Daten nach der fallenden Flanke von
SCK, oder nicht ?

Besten Dank an dieser Stelle für den *top* Support (bei bisher keinem
anderen von mir erworbenen Produkt wurden eventuelle Anfragen so
schnell und kompetent beantwortet)
Last edited by blip on Wed May 28, 2008 9:37 pm, edited 1 time in total.
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

DRDY ist nicht notwendig und würde auch nicht zu dem Verhalten des MAX1270 passen. Einfach die Übertragung auf zwei Reports aufteilen reicht aus. CPHA = 1 sollte richtig sein, Fig. 5 im MAX1270 Datenblatt zeigt den Zusammenhang des Timings genau und da kann man sehen, dass der MAX mit der ersten Flanke die Daten einliest, also muss der IOW24 die Daten vor der ersten Flanke treiben.

Steht ein Scope oder Logicanalyser zur Verfügung?
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Post by friend-of-rq »

Hallo Blip.

für solche Fälle solltest Du mal das Testprogramm All-in-one versuchen.
blip
Posts: 12
Joined: Sun May 09, 2004 11:49 am
Location: Winznau, Switzerland
Contact:

Post by blip »

@Guido Körber:
Ah ja klar - so betrachtet leuchtet mir ein dass es CPHA=1 sein muss.
Hab leider weder Scope noch Logicanalyzer zur Verfügung.

@friend-of-rq:
Vielen Dank für den Tip, es scheint allerdings nur ein Programm für
Microsoft Windows zu sein. Ich habe zuhause jedoch zum Glück eine Microsoftfreie Zone (ok,ok, meine optische Maus ist von denen) :-)

Nachtrag:
Hab inzwischen die DRDY Verdrahtung entfernt und den Fehler gefunden, der
allerdings tatsächlich in der Software steckte *schäm* Wenn man schon in
einer Funktion einen eigenen Puffer für den Report benutzt, sollte man auch
die übergebenen Daten (in diesem Fall die 0x80 zum starten der Messung
bzw 0x00,0x00 zum dummy-senden) auch da rein kopieren !

Nochmals danke für die Hilfe, auf das CPHA=1 wär ich vielleicht trotzdem
nicht gekommen...
Post Reply