Forum: Mikrocontroller und Digitale Elektronik SPI - Microwire


von Florian Sassanelli (Gast)


Lesenswert?

Hallo,

ich habe jetzt schon viel gegoogelt aber immer noch keine Antwort auf
meine Frage bekommen.

Gibt es einen Unterschied zwischen SPI und Microwire???
Wenn ja, welcher?

Grund meiner Frage: Ich möchte über einen Microwire Interface Device
(TP3465) einen Maussensor (ADNS6010) ansprechen, welcher nur über SPI
kommunizieren kann.

Vielen Dank,
Florian

von Michael Nagler (Gast)


Lesenswert?

Hallo Florian,
an dieser Frage habe ich auch lange herumgerätselt. Die Antwort fand
ich hier im Forum:

http://www.mikrocontroller.net/forum/read-1-269281.html

Gruß
Michael

von Florian Sassanelli (Gast)


Lesenswert?

Hallo Michael,

vielen Dank für diesen Link. Ich hab immer nur unter SPI oder Microwire
im Forum gesucht und bin so nie auf diesen Beitrag gekommen.
Ich habe das zwar noch nicht ganz verstanden, bin mir aber jetzt
sicher, dass ich meinen Maussensor mit dem MID ansprechen kann.

Gruß,
Florian

von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Michael Nagler wrote:
> Hallo Florian,
> an dieser Frage habe ich auch lange herumgerätselt. Die Antwort fand
> ich hier im Forum:
>
> http://www.mikrocontroller.net/forum/read-1-269281.html

Hallo!!

Mir gibt das Thema derzeit auch Rätsel auf, aber der Artikel beantwortet 
meine Fragen leider nicht ganz.

Allgemein bekannt:

Microwire ist ein Subset von SPI (nach Motorola/Freescale) und 
entspricht dem Mode 0.

SPI legt die Daten an der jeweils entgegengesetzten Flanke an als es 
liest.
Das ist immer so. Egal welchen Mode ich konfiguriere.

Auch in Mode 0:
 Lesen der Daten: steigende Flanke
 Anlegen der Daten: fallende Flanke

Wenn Master und Slave das genauso machen ist alles ok.

Problem:

Laut National Application Note 452 1/92 macht Microwire aus
Prozessorsicht folgendes:

a.) SO will be shifted out upon the falling edges of SK (Clock)
b.) SI will be shifted in upon the rising edges of SK

passt also bestens zu SPI Mode 0.

Nur wenn man sich jetzt ein beliebiges Microwire Slave Device anguckt
(hier z.B. das serielle EEPROM AT93C86(A)), scheint es so, als ob dieses 
die Daten bei der steigenden Flanke sowohl ANLEGT als auch LIEST.

Selbst in einem Orginal Datenblatt von National für das NM93C06A heisst 
es:

  "All commands, data in, and data out are shifted in/out on rising edge 
of SK clock"

Ich frage mich:

   WARUM IST DAS SO?

Und warum funktioniert das überhaupt?

Kann eigentlich nur deshalb funktionieren, weil die alten Daten am Slave 
Device noch so lange anliegen, dass trotz gleichzeitigem Lesen durch den 
Master und Neusetzen durch den Slave noch korrekt gelesen werden kann.

Atmel gibt bei den Microwire kompatiblem EEPROMs hier Maximalzeiten (!) 
von 250-500ns an. Was aber irgendwie auch keinen Sinn macht, denn es 
müsste ja eine Minimalzeit gewährleistet sein, innderhalb derer der 
Prozessor die Daten gelesen haben muss.


Wo ist hier der Denkfehler?

Viele Grüße,
Klaus

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.