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.
na so ein Mist! Kann ich das Ausgangssignal des µC (SCK ist High, wenn Idle) nicht negieren lassen? 0->1 1->0 Ginge das?
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?
das Problem ist dabei, dass ein AVR nur einmal MOSI, MISO und SCK hat. Oder gibts AVRs mit mehreren SPI Ausgängen?
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.
Wie meinst du das eigentlich mit 2 Inverter in Reihe? Würde das nicht den Effekt aufheben?
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).
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)
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.
ich glaub das ist das Problem hier... ich weis auch grad nicht weiter
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.
Welches Datasheet? Vom µC? Gibts nicht im Netz. Dann hast du etwas anderes.
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.
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.
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.