SPI mit 2 Leitungen

OP #2093772
Hy,
ich möchte zwei XMegas per SPI verbinden aus platzgründen auf meinem Bus 
will ich hierzu aber nur 2 Leitungen benutzen. Also Miso und Mosi auf 
einer Leitung. Die Zweite Leitung soll mein Clk sein.

Wie mache ich das am geschicktesten?
Soll ich Miso und Mosi mit nem Multiplexer vor dem Bus realisieren ? 
Oder kann ich einfach Miso und Mosi verbinden und das ganze Software 
technisch lösen? Oder gibts einfachere Wege?

Schon mal danke für die Hilfe im Vorraus
Gast
Hans W. schrieb:
> ich möchte zwei XMegas per SPI verbinden aus platzgründen auf meinem Bus
> will ich hierzu aber nur 2 Leitungen benutzen. Also Miso und Mosi auf
> einer Leitung. Die Zweite Leitung soll mein Clk sein.

Verdrahtest du dann auch das Schieberegister im uC um?

Warum nimmste nicht einfach eine zusätzliche Leitung oder gleich i2c?
OP
Das Problem ist das I2C beim XMega nur maximal 400kHz kann.Ich brauche 
aber da über den Bus z.b USB Daten sollen einen größeren Datendurchsatz.
Zusatzliche Leitung wäre das einfachste, ich habe aber Leider auf meinem 
Bus keinen Platz mehr.
Gast
Hans W. schrieb:
> Ich brauche
> aber da über den Bus z.b USB Daten sollen einen größeren Datendurchsatz.

Nimm doch gleich D+ und D-.
Am besten, du erklärst mal genauer, was du für ein Problem hast.
Sonst wird das hier nur ein Rumgerate.
Gast
Hans, schielst Du nach den ARMs, die eine 2-Draht-SPI-Leitung 
unterstützen? Schau Dir mal STM32F107VCT6 o.ä. an - SPI u.a. ist im 
RM0008 erklärt. Die Steuerung von Eingang/Ausgang ist aber tückisch, 
weil sie synchron auf allen angeschlossenen Geräten stattfinden muß!

Gruß - WPö
OP
Die Grundvorrausetzungen sind schwer zu erklären ich versuchs aber mal:
-> Ich werde ein 19" Gehäuse benutzen in die ich alle Einschübe die ich 
baue reinkommen.
-> Es soll so sein das ich z.B später einfach Module miteinander 
verbinde und dann einen Wandler habe z.b USB to xyz. Wenn ich jetzt ein 
Modul brauche das USB to I2C können soll, ist USB schon als SPI 
vorhanden und muss nurnoch in I2C gewandelt werden.
-> Es gibt einen I2C-Bus der als Service Bus funktioniert.
-> XMegas sind schon einige beschafft deshalb probier ich es mit denen.

Ich habe auch schon probiert I2C hochzutakten, ging auch bis 600kHz 
problemfrei, aber ab 600kHz wurde es problematisch und die Daten wurden 
nicht mehr einwandfrei interpretiert.
OP
So, also hab das ganze dann jetzt auch hinbekommen. Und zwar indem ich 
MISO und MOSI einfach verbunden habe und Software mäßig immer nur bei 
einem (Mast oder Slave) einen Ausgang habe. Ist zwar einiges an 
Umschalten und ein ziehmliches gefriemel, aber es funktioniert.

Danke für eure Hilfe
Gast
Hallo Hans,

könntest du vielleicht deinen Code für die SPI Verbindung mal hier 
reinstellen, bin nämlich auch verzweifelt am basteln. Will über diese 
Halbduplex Verbindung einen Maussensor auslesen.

Danke.
Gruß Martin
OP
Hab hier mal meine Ausführung. Bin mir aber nicht mehr sicher ob diese 
hundert Prozentig geht. Hab noch weiter dran herumgebastelt mit DMA 
Controller und so späsen.
Wenn ich mich noch recht entsinne schicke ich als erstes Byte die Anzahl 
der folgenden Bytes, dies müsstest du dann herausnehmen. Mein Code 
basiert auf den Atmel Treibern (twi_driver.h).

Gruß Hans
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 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.