SPI - Microwire

Gast #273018
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
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)
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

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.