Forum: Mikrocontroller und Digitale Elektronik E-Paper Display Ansteuern über SPI


von Benjamin L. (benjamin_l34)


Lesenswert?

Hallo, ich habe mir ein CY8CKIT-050 von Cypress 
(http://www.cypress.com/?rid=51577) besorgt und möchte damit ein E-Paper 
Display 
(http://www.embeddedartists.com/products/displays/lcd_27_epaper.php) 
über SPI ansteuern. Habe aber derzeit keinen Plan, wie ich einzelne 
Punkte ansteuer. Würde mich über ein kurzes Bsp. oder Tipps freun.

von Frank K. (fchk)


Lesenswert?

Bitmap im RAM puffern, bearbeiten und nach Änderungen zum Display 
schicken

von Void (Gast)


Lesenswert?

Hallo Benjamin, wie soll man dir das jetzt höflich sagen.
Wenn du es mit den von dir selber verlinkten Beispielen nicht 
hinbekommst, dann liegt das Problem wo anders...

Auf der Seite gibt es neben den Video Step by Step Anleitungen auch 
Beispielcode für nicht gerade wenige Platformen. Habe mir gerade mal 
exemplarisch das RPi Beispiel epaper_pi_130307.tar.gz angeschaut.
Das kann man praktisch so wie es ist übernehmen und die Hardwarezugriffe 
(I/O, SPI) passend zu deiner Hardware umschreiben.

von Benjamin L. (benjamin_l34)


Lesenswert?

Das dass Problem bei mir liegt ist mir schon klar, aber ich muss mal 
irgendwo anfangen und habe mir gedacht dass ich vll hier einige 
hilfreiche Tipps bekomme. Da ich bei meinen bisherigen Versuchen auf das 
Display zu kommen, leider gescheitert bin.

von Noch einer (Gast)


Lesenswert?

Als Einsteiger mit so etwas anfangen? Warscheinlich bist du hier der 
einzige, der E-Paper mit einem PSoC ansteuern will. Da kann dir ja 
niemend Ratschläge geben. Warum nicht erst mal mit einer der üblichen 
Technologien Erfahrungen sammeln, bis du diese Probleme selbst lösen 
kannst?

von Void (Gast)


Lesenswert?

Hallo Benjamin, wie mein Vorredner schon richtig bemerkte PSoC und 
ePaper zusammen sind nicht der richtige Punkt zum anfangen.

Dann mal zu den hilfreichen Tips:

Um das genannte ePaper anzusteuern, musst du mit einem Mikrocontroller 
über SPI mit einem ext. Ding kommunizieren können. Der Mikrocontroller 
ist dabei SPI master, das angesteuerte Ding ein SPI slave. 
Dementsprechend mußt du dem uC programmieren, damit der mit seiner 
eingebauten SPI Schnittstelle passend zum Protokoll des ext. Ding 
spricht.

1. Dein PSoC bietet dir superspezialisierte Hardware, welche du komplett 
nicht brauchst. Du brauchst nur einen regulären Mikrocontroller welcher 
eine SPI hat. (Das hat wirklich jeder.) Wenn du nicht auf den PSoC 
festgelegt bist, nimm zum üben irgendeinen Mikrocontroller mit viel 
Community-support.

2. Um SPI zu verstehen, lerne die Schnittstelle mit einem einfachen ext. 
Ding kennen. Sprich, nimm ein Portexpander-Baustein und übe wie man das 
per SPI steuert.
siehe
http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister
Komplizierte Dinge per SPI steuern, wie ein ePaper display kommen erst 
dran, wenn du das kannst!

3. ePaper display ansteuern.
(http://www.embeddedartists.com/products/displays/lcd_27_epaper.php)
Datenblatt vom ePaper runterladen. Kurz mal reinschnuppern wie denn das 
Protokoll des Displays die Daten über SPI gerne gesagt bekäme. Und dann 
selber implementieren, oder ganz zeitsparend mal den Beispielcode 
runterladen und portieren.


> Da ich bei meinen bisherigen Versuchen auf das Display zu kommen, leider 
gescheitert bin.

Und gleich noch ein Tip. :-)
Bei dieser Beschreibung kann man dich nur bedauern, weil du es nicht 
geschafft hast. Wenn du noch erklärt hättest, was und wie genau du denn 
versucht hast, könnte man dir sogar dabei Hilfestellung leisten und 
evtl. herausbekommen warum es nicht geht.

von Benjamin L. (benjamin_l34)


Angehängte Dateien:

Lesenswert?

Hi, ja ich bin leider an Psoc gebunden. Mache das ganze als Teil für 
meine Bachelorarbeit. Für weiter Funktionen muss ich den Stromverbrauch 
niedrig halten, daher das E-Paper Display und mein Betreuer bildet sich 
das Psoc eben ein. Dass die letzte Beschreibung schlecht war tut mir 
leid, ich hoffe diese wird besser.
Naja soweit habe ich SPI schon mal verstanden. Im Bild sieht man, dass 
ich jetzt mal den SPI Master auf meine Controller habe. So und jetzt 
geht es um Daten auf das Display zu bekommen, bzw. einzelne Pixel 
anzusprechen. http://www.pervasivedisplays.com/products/27 Hier findet 
man ein schönes Dokument was einen eigentlich alles Schritt für Schritt 
beschreibt, was das Display will.

So jetzt zu meinen Problem: Mit welchen Befehl bekomme ich das Chip 
Select (CS) auf High bzw. Low?
Wie kann ich ganze Arrays rausschreiben bzw. eben genau Bildpunkte 
ansprechen?
Habe derzeit mit den Befehlen
 SPIM_Start();
 SPIM_WriteByte(0x70);
 SPIM_WriteTxData(0x72);

herumprobiert. Und das klappt eben nicht :/

von Void (Gast)


Lesenswert?

> http://www.pervasivedisplays.com/products/27
  > Hier findet man ein schönes Dokument [...]

Da schonmal wichtig für später, du hast das Datenblatt vom ePaper 
Display entdeckt.

Aber erstmal noch einen Schritt zurück;
 2. SPI verstehen


Und damit dann zu deinem kontreten Problem.

  > Naja soweit habe ich SPI schon mal verstanden.
  > Im Bild sieht man, dass ich jetzt mal den SPI Master
  > auf meine Controller habe.

Damit hast du genau garnichts geschafft, außer natürlich dass es jetzt 
eine SPI hardware auf deinem PSoC gibt. (Das hätte nichtmal Arbeit 
bedurft auf einem regulären Mikrocontroller, weil das ist so Zeug das 
einfach da sein muss...)


  > Habe derzeit mit den Befehlen
  >  SPIM_Start(); SPIM_WriteByte(0x70); SPIM_WriteTxData(0x72);
  > herumprobiert. Und das klappt eben nicht :/

Du hast also Probleme die vermutlich vom uC Hersteller bereitgestellten 
API Funktionen für die SPI des PSoC zu benutzten. Was dir fehlt ist also 
mal die Dokumentation für die "SPIM" API deines PSoC. Die sollte sich 
(hoffentlich) in der Entwicklungsumgebung (IDE) zu deinem PSoC finden.

Ansonsten gibt es auch noch Code-Beispiele vom Hersteller;
"CE95377 - SPI Master and Slave with PSoC 3/5LP"
 http://www.cypress.com/?rID=105806  (CE95377.zip)
Nur nicht verwirren lassen, das Beispiel zeigt SPI Master und SPI Slave 
Kommunikation zugleich.

Und passende Fragen und Antworten dazu:
"SPI Controller with PSoC"
 http://www.cypress.com/?app=forum&id=1573&rID=56351


  > Mit welchen Befehl bekomme ich das Chip Select (CS)
  > auf High bzw. Low?

Es gibt zwei Möglichkeiten. Entweder es wird per GPIO manuell gesteuert, 
oder durch die SPI Hardware des Controllers. In deinem Bild sieht man 
ein Signal "m_ss", was wird ein von der SPI Hardware automatisch 
gesteuertes Chip Select (CS) sein. Nur ist es als SS = Slave-Select 
bezeichnet. Damit kümmert sich die SPI Hardware automatisch um das Chip 
Select (CS) bei jedem Senden / Empfangen.

Was du aber auf jeden Fall machen musst, ist den SPI Master Mode noch 
richtig zu konfigurieren.
Das dürfte vermutlich über Parameter in SPIM_Start() gehen.

a) Welche Polarität (CPHA, CPOL)
b) Daten Bits (pro Wort = pro Chip Select): z.B. 8 bit oder 16 bit
c) Bit order (MSB / LSB)
d) clock/data rate: z.B: 1 MHz


Wenn du dir nicht sicher bist, bzw. zum Debuggen ist es eh ratsam;
Klemm ein Oszilloskop an die SPI-Leitungen vom uC. Dann kannst du für 
alles was du sendest einfachst nachprüfen ob das dem entspricht was du 
erwartest.


  > Wie kann ich ganze Arrays rausschreiben?

Wort für Wort.
Oder dem C Sprachgebrauch nach; Element (des Arrays) für Element.


  > Für weiter Funktionen muss ich den Stromverbrauch
  > niedrig halten, daher das E-Paper Display [...]
  > und mein Betreuer bildet sich das Psoc eben ein.

Na, wenn es wirklich um wenig Stromverbrauch geht, dann lohnt es sich 
aber auch den passenden Mikrocontroller dazu auszusuchen. Aber 
vermutlich reicht es aus, wenn sich dein Betreuer nur einen niedrigen 
Stromverbrauch einbildet...

Viel Erfolg bei deiner Bachelorarbeit.

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.