PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied SPI SOFT / HARD



stekohl
19.10.2008, 14:21
Folgendes Phänomen:

Ich steueremit einem MEGA644 3 MCP23S17 (16Bit Porterweiterungen) per SPI an.
Nun liegt am SPI Bus auch noch eine SD-Karte, also dachte ich. Ports haste ja genug, steuer die MCP23S17 doch einfach per SOFT SPI an.

Routinen entsprechen umgeschrieben mit folgendem Ergebnis:
Schreibe auf die Porterweiterungen funktioniert bitgenau und ohne Probleme, jedoch beim Lesen von der Porterweiterung werden die Ergebnisse von beiden MCP Ports (a/b) um 1 Bit nach links verschoben? Aus 000000010 wird 00000001.

Arbeite ich mit dem HARD SPI habe ich keinerlei Probleme!!
Laut Scope ändert sich nix am Signaltiming. Ein Bild als Anhang: CH1 = Clock CH2 SPI Out (MISO). Für mich sieht das Bild ok aus.

Mir geht es hauptsächlich um eine Erklärung, ich werde wahrscheinlich in der endgültigen Schaltung für beide Bauteilarten (SD-Karte und Porterweiterung) je einen schaltbaren bipolaren Bustreiber nehmen.
Hat jemand für mich eine Erklärung dafür?

Gruß,

Stephan

Vitis
19.10.2008, 20:05
hard- und soft-spi wird sich vermutlich nicht so ganz vertragen ... wozu auch.
du kannst ja die miso mosi und clk ja einfach durchschleifen, nur den
slave select musste halt separat ansteuern

stekohl
19.10.2008, 20:34
hard- und soft-spi wird sich vermutlich nicht so ganz vertragen ... wozu auch.
du kannst ja die miso mosi und clk ja einfach durchschleifen, nur den
slave select musste halt separat ansteuern

Werd ich auch so machen! Wollte zuerst trennen, da die Portexpander nicht so nah am Prozessor sind. Das SPI Signal für die SD-Karte sollte von den Leitungslängen nicht versaut werden.
Ich teste das jetzt gerade aus, habe beide Bauteilgruppen mit unterschiedlichen CS Leitungen versehen.

Mein Problem war nur, dass ich beim Test mit dem Portexpander entweder SOFT oder HARD SPI genutzt habe. Ich habe da noch nicht die SD-Karte dran gehabt. Bei Config SPI = SOFT , blabla waren alle gelesenen Werte immer um 1 Bit links verschoben. Und da kommt das Scopebild ins Spiel. Egal ob SPI SOFT oder HARD das Clock und MOSI / MISO Timing war immer gleich. Ich denke mir, dass Bascom im SPI SOFT Modus ein Timingproblem hat und nach oder mit dem Clock nicht die Daten vom Eingang holt, und damit das erste Bit verschläft.

Gruß,

Stephan

Vitis
20.10.2008, 08:56
beider soft spi hat man halt nicht die

POLARITY = HIGH|LOW , PHASE = 0|1,

alternativ kann man natürlich auch ne spi von hand
proggen, die das eben hat.