SPI: MISO/MOSI an einem PIN

#5527642
Lesenswert?

Hi,

ich bin gerade dabei einen Treiber fuer ein epaper display zu 
implementieren. Eigentlich soll das Display SPI haben. Allerdings hat es 
nur einen data, chip select und clock pin. Ob gelesen oder geschrieben 
wird, wird durch einen anderen Pin fest gestellt, der jeweils auf HIGH 
oder LOW gestellt ist. So, nun dachte ich, dass das dann eigentlich kein 
Problem sein duerfte den data pin einfach sowohl an MISO, als auch MOSI 
zu haben. Immerhin setze ich ja read und write mit einem anderen pin 
selbst. So, ich wollte einfach mal nachfragen, ob ich mit dieser Annahme 
richtig liege. Es geht um das GDEW0213C38 epaper display.

/e Datenblatt: 
http://www.good-display.com/download_detail/downloadsId=575.html

gruss
Philipp
Gast #5527656
Lesenswert?

> So, nun dachte ich, dass das dann eigentlich kein Problem sein duerfte
> den data pin einfach sowohl an MISO, als auch MOSI zu haben.

Ja, das geht im Allgemeinen, wenn..

> Immerhin setze ich ja read und write mit einem anderen pin selbst.

..jener Pin auch MISO und MOSI adäquat durchverbindet/trennt, z.B. mit 
einem 2:1 mux oder Analogschalter.
#5527662
Lesenswert?

g457 schrieb:
>> Immerhin setze ich ja read und write mit einem anderen pin selbst.
>
> ..jener Pin auch MISO und MOSI adäquat durchverbindet/trennt, z.B. mit
> einem 2:1 mux oder Analogschalter.

Ahh, okay. Das klingt plausibel. Interessante Idee. Den Mux koennte ich 
doch mit demselben pin verbinden, der dann bei dem epaper display auch 
auf HIGH und LOW schaltet. Also wechselt der gleich die Lane mit, wenn 
ich bei dem paper auf read oder write schalte.
Gast #5527670
Lesenswert?

Philipp B. schrieb:
> So, nun dachte ich, dass das dann eigentlich kein
> Problem sein duerfte den data pin einfach sowohl an MISO, als auch MOSI
> zu haben.

Das Problem wird dann sein, dass beim Lesen vom Display zwei Ausgänge 
aufeinander prallen, nämlich Data vom Display Controller und MOSI.
#5527675
Lesenswert?

Wolfgang schrieb:
> Philipp B. schrieb:
>> So, nun dachte ich, dass das dann eigentlich kein
>> Problem sein duerfte den data pin einfach sowohl an MISO, als auch MOSI
>> zu haben.
>
> Das Problem wird dann sein, dass beim Lesen vom Display zwei Ausgänge
> aufeinander prallen, nämlich Data vom Display Controller und MOSI.

Das passiert ja nicht zur gleichen Zeit. Sollte zumindest nicht. Das 
Datenblatt beschreibt das so in etwa: Du schreibst dein read command mit 
read parametern und hast dabei read pin auf LOW. Dann schickst du alles 
ab und schaltest auf HIGH auf dem read pin und dann kommen die Daten 
rueber. Natuerlich muss man den flow bei dem eigenen MCU beachten. Ich 
halte die Loesung mit dem MUX aber fuer geeigneter. Dann treffen die 
Lanes nicht aufeinander.
#5527676
Lesenswert?

g457 schrieb:
>> So, nun dachte ich, dass das dann eigentlich kein Problem sein duerfte
>> den data pin einfach sowohl an MISO, als auch MOSI zu haben.
>
> Ja, das geht im Allgemeinen, wenn..
>
>> Immerhin setze ich ja read und write mit einem anderen pin selbst.
>
> ..jener Pin auch MISO und MOSI adäquat durchverbindet/trennt, z.B. mit
> einem 2:1 mux oder Analogschalter.

Hast du da vielleicht eine Empfehlung fuer einen MUX?
Gast #5527780
Lesenswert?

Philipp B. schrieb:
> Hast du da vielleicht eine Empfehlung fuer einen MUX?

Man braucht keinen Multiplexer.

Es genügt seinen SPI-Datenpin auf Open Collector zu schalten
und darauf zu achten dass der Pin im Empfangsfall auf 1
gesetzt wird. So würde man das im Bitbanging-Modus zumindest
machen. Ob das für einen dezidierten SPI Pin auch funktioniert
(STM32*) weiss ich jetzt nicht griffbereit.

Wenn die Pin Architektur das nicht erlaubt dann funktioniert
das zur Not auch mit zwei zusammengeschalteten Pins bei
denen der Ausgangspin mit einer Schottky-Diode mit dem
Eingangspin verbunden wird. So kann man die normalen
MOSI/MISO Pins verwenden und muss halt 0.3 Volt Pegelverlust
im Low-Zustand "verkraften".
#5528012
Lesenswert?

Karl K. schrieb:
> Ich würd mir erstmal ganz genau anschauen, ob ich überhaupt vom Display
> lesen muss. Zumal das Ding offenbar noch ein Busy-Pin hat.

Waere ganz huebsch, ja. Unbedingt erforderlich ist es aber tatsaechlich, 
durch den Busy PIN nicht. Beim senden der schwarzen und roten bytes 
bekommt man eine 1 oder 0 als Response, die aussagt, ob alles geklappt 
hat und alle bytes angekommen sind. Mindestens das wuerde ich gerne 
lesen.


Aber ich habe jetzt genug Input bekommen und werde mal ein paar Sachen 
ausprobieren. Ich koennte auch ein Soft-SPI nutzen, um nur auf einen PIN 
zu setzten. Ich wuerde nur gerne ein Board designen, dass nach draussen 
ein moeglichst sauberes SPI hat. Also mit MOSI/MISO PIN. Ausserdem 
duerfte das hard-SPI schon etwas schneller sein. Okay, bei den paar 
Pixeln und epaper (sprich da sendet man nicht permament neue Pixel 
rueber) duerfte das mit Soft-SPI auch kein riesen Thema sein.

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