SPI - Microwire

Gast #273018
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
Gast #273020
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
(Firma: privat) #1035188
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren