Es gibt SPI Modus 0,1,2 und 3
Kriterium ist der SCK-Clock Ruhepegel und on auf fallender oder
steigender Flanke gesampelt wird.
Wenn ich jetzt nur SPI Modus 2 kann, was dann? Geht der ENC damit?
Kann man die Modi nicht durch ein nachgeschaltetes Bauteil umwandeln?
Ein Negierer z.B. sollte doch schon was bringen..oder?
The implementation used on this
device supports SPI mode 0,0 only. In addition, the SPI
port requires that SCK be at Idle in a low state;
selectable clock polarity is not supported.
Hallo,
schau dir das Timing von ENC und Deinem SPI-Mode an, invertiere, denke
an die Gatterlaufzeiten und bete. ;)
Natürlich kann man das machen, ob das Timing so hinzubekommen ist, kann
man mit den Laufzeiten abschätzen. Falls die Daten zu früh oder zu spät
kommen, mußt Du da eben auch noch Gatter reinhängen.
Bei 8NHz SPI-Takt und passend schnellen Gattern (ACT-Serie wohl), geht
das sicherlich.
Die Dinger kosten ein paar Cent, also 74ACT04 besorgen und probieren.
Vorsichtshalber nich ein paar Cs so zwischen 22p und 470p dazu, 2
Inverter in Reihe und zwischen beiden ein paar pF gegen GND gibt eine
simple einstellbare Verzögerung.
Und ja, sowas geht, meine Text-Videokarte als TTL-Grab vor zig Jahren
war auch so abgeglichen und lief trotzdem stabil.
Mit den paar Cent riskiert man da schließlich nicht viel.
Gruß aus Berlin
Michael
OK, danke das werde ich ausprobieren!!!
Ein anderer Gedanke wäre es, es mit einem AVR als Konverter zu
versuchen.
SPI(Mode2) <-> AVR <-> SPI(Mode1)
Die Modes kann man m.E. bei Laufzeit umschalten....
Kann das gehen?
Software-SPI? Muß doch sicher nicht sooo schnell sein? Hauptsache die
Spezifikationen bezüglich minimaler Clockzeiten werden eingehalten. SPI
ist durch seine synchrone Arbeitsweise doch recht robust und tolerant.
Hallo,
naja, ich fürchte, er muß dann etwas Intelligenz rein packen.
Ich sehe das Problem im Versatz. SPI sendet und empfängt ja
gleichzeitig.
Wenn er jetzt ein Kesekommando zum ENC schickt und anschließend per
Dummy die Antwort liest, kann die aber noch nicht kommen, weil je der
"Konverter-AVR" den Kram erstmal rausgetaktet haben muß, bevor der die
Antwort holen kann, die eigentlich schon erwartet würde.
Macht zumindest irgendwelche Dummy-Read- und Write-Byte-Sachen in der
eigentlichen Software nötig.
Dann eher einen kleinen AVR Parallel an den eigentlichen Controller
hängen und die SPI-Routinen durch Parallel-Routinen erstzen. Kosten dann
aber 10 Pins, 8x Daten und ein RD und WR-Signal. Richtungsumschaltung
usw. könnte dann knapp in einen SPI-Zyklus passen.
Wäre mir aber wohl zu chaotisch. ;)
Gruß aus Berlin
Michael
Leider habe ich nur den 74HCT04 und nicht 74ACT04 bekommen. Die Latenzen
sind glaube ich doppelt so groß (10ns). Ich nutze einen SPI Takt von
2MHz. Das sollte also überhaupt kein Problem darstellen.
Ich habe den SCK Pin vom µC (Mode2) an den Inverter geklemmt und dessen
Ausgang geht zum SPI Bauteil mit Mode0 (zur Zeit mcp2515).
Mit einer sehr niedrigen Frequenz von 9600bps läuft alles so wie es
soll, als hätt ich Mode0 :-)
Wenn ich dann mal mit dem Oszi auf die Leitung gehe um das
mitzuschneiden, kommt nur noch Mist an. Wie kann das sein, das das Oszi
so sehr stört??
Sobald ich die Messleitung abklemme läuft wieder alles normal.
µC (Mode2) Mode0-SPI Gerät
------ --------
SCK |----[Inverter]----|SCK
MOSI |------------------|MOSI
MISO |------------------|MISO
/CS |------------------|/CS
------ --------
Hallo,
naja, wenn jetzt z.B. die Übernahmeflanke des Mode-0 Gerätes sehr kanpp
mit dem "schon-Anliegen" oder "noch-Anliegen" der gültigen Daten
zusammenfällt, reicht die Oszi-Kapazität schon aus, um die SCK-Flanke
soweit zu verzägern, daß das Mode-0-Gerät nur noch Müll übernimmt, weil
die Daten noch/schon wechseln...
Die SCK-Flanken kommen ja um die Gatterlaufzeit später, die Frage ist
also, ob die Daten des Mode-2-Gerätes im Verhältnis zur Übernahme-Flanke
des Mode-0-Gerätes auch stabil gültig sind.
Wenn der Datenwechsel zu früh erfolgt, könntest Du ja mal 2 Gatter in
MOSI reinhängen. Dann bleibt aber noch die Frage, wie sich MISO verhält.
Man müßte die Timingdiagramme der beteiligeten Bauteile dann schon im
Detail vergleichen, speziell, wann die Daten gültig sind im Verhältnis
zur invertierten und verzägerten SCK-Flanke, mit der Übernommen wird.
Ist in Rückrichtung natürlich genauso ein Problem.
Gruß aus Berlin
Michael
du meinst man müsste dieselben Latenzen auch bei der Leitung MOSI
einbringen damit die wieder synchron sind?
Da gehe ich mit. Eigentlich ist es ja nur kritisch bei Flankenwechseln
der MOSI Leitung.
Ich habe bei meinem µC noch die Optionen
- SCK um 1/2 Periode verzögert zu senden und
- Sampling auf steigender oder fallender Flanke
letzteres würde mode2/3 ergeben
Jetzt brauche ich also noch irgendein Gatter mit auch 10ns.
Danach ist dann Beten angesagt..wie ist das mit der MISO Leitung die ja
unverändert bleiben muss.
Welcher Controller kann denn nur Mode 2?
Falls es daran liegen sollte, dass die SPI-Schnittstelle für mehrere
Geräte benutzt wird: Du kannst durchaus das eine Gerät im Mode 0
ansprechen (z.B. ENC), das andere beispielsweise in Mode 3 (z.B.
Dataflash).
Den Fuji habe ich nicht parat, aber normalerweise sind die SPI Timings
alles andere als knapp und 10nsec spielen unterhalb 15-20MHz keine
Rolle. Üblicherweise wird der Ausgang einen halben Takt vor dem
Sample-Punkt ausgegeben, in beiden Richtungen. Dadurch liegen die
tatsächlichen gewährten setup und hold times etwas unterhalb von einem
halben Takt.
Immer vorausgesetzt, die Modi passen zusammen. Wenn natürlich der eine
die Daten mit der negativen Flanke ausgibt, der andere mit ebendieser
Flanke sampelt, dann ist ungut.
Hab grad mal einen Blick in das Datasheet geworfen. Ich kann eigentlich
nur annehmen, dass die japanische Version besser ist. Ich verstehe
nämlich nicht, wie jemand mit diesem bunt zusammengewürfelten Haufen
Seiten ohne nennenswertem Inhaltsverzeichnis etwas anfangen kann.
Das Manual vom FR50 habe ich auf die Schnelle nicht gefunden (sch...
Seite), bloss vom FR60. Wenn dessen "multi function serial" dein Problem
sein sollte: Das entspricht nicht Mode 2 sondern Mode 3 und damit wird
die Sache haarig, weil einen halben Takt daneben.
Abhilfe: Vergiss diese vergewaltigte UART und programmiere das SPI mit
Pingewackel zu Fuss.
Ok, ich seh grad den Tippfehler. Also liege ich mit dem Manual für
MB91F470 zumindest numerisch nicht weit weg - ob inhaltlich kann ich bei
Fujitsus Nomenklatur nicht erkennen.
ja also des ist nen anderer. Mit dem kenn ich mich nicht aus.
Nen Soft SPI wird wahrscheinlich am Ende zu belastend sein. Es muss über
Hardware gemacht werden.
Wie oben beschrieben, ich kann
- SCK um 1/2 Periode verzögern
- Sampling auf steigender oder fallender Flanke definieren
aber ich habe glaub schon ale Kombis durch.. selbst bei Raten von
115200bps
kommt Mist am Master an.
Wenn nichtmal nen Oszi hilft... ohje..