Forum: Mikrocontroller und Digitale Elektronik ENC28J60 - Welche SPI Modi funktionieren?


von Lars (Gast)


Lesenswert?

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?

von Lars (Gast)


Lesenswert?

da kann mir doch sicher jemand 'nen Tipp geben :-)

von holger (Gast)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

na so ein Mist!

Kann ich das Ausgangssignal des µC (SCK ist High, wenn Idle) nicht 
negieren lassen?
0->1
1->0

Ginge das?

von Michael U. (Gast)


Lesenswert?

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

von Lars (Gast)


Lesenswert?

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?

von Lars (Gast)


Lesenswert?

das Problem ist dabei, dass ein AVR nur einmal MOSI, MISO und SCK hat.
Oder gibts AVRs mit mehreren SPI Ausgängen?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Michael U. (Gast)


Lesenswert?

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

von Lars (Gast)


Lesenswert?

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
------                  --------

von Michael U. (Gast)


Lesenswert?

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

von Lars (Gast)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

Wie meinst du das eigentlich mit 2 Inverter in Reihe? Würde das nicht 
den Effekt aufheben?

von A.K. (Gast)


Lesenswert?

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).

von Lars (Gast)


Lesenswert?

ja die Modes kann ich zumindest bei den AVRs umschalten. Ich habe nen 
Fujitsu 91F467 der macht leider das SCK auf High im Idle Zustand. (= 
mode 2/3)

von A.K. (Gast)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

ich glaub das ist das Problem hier...

ich weis auch grad nicht weiter

von A.K. (Gast)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

Welches Datasheet?

Vom µC? Gibts nicht im Netz. Dann hast du etwas anderes.

von A.K. (Gast)


Lesenswert?

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.

von A.K. (Gast)


Lesenswert?

Na ich dachte halt, dass alles was mit MB91F367 anfängt, nicht ganz 
falsch sein dürfte. Und dazu fand ich ein grauenvollen Dings namens 
e716401.pdf.

von A.K. (Gast)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

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..

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.