Forum: Mikrocontroller und Digitale Elektronik Frage zu SPI


von jbob (Gast)


Lesenswert?

Hi ich habe vor ein Display an meinen Mikrocontroller anzuschließen den 
DOGXL dabei habe ich die Auswahl zwischen 4 verschiedenen 
Übertragungsmöglichkeiten unteranderem auch SPI. Ich habe gelesen das 
ich die Pins benutzen muss welche ich auch für die ISP Programmierung 
benutze. Kann ich diese Pins denn so einfach doppelt belegen?

Hier der Display: http://www.lcd-module.de/deu/pdf/grafik/dogxl160-7.pdf

Die Routinen in den Datenblatt meinen Controllers sehen recht simple aus 
und das ist es wahrscheinlich auch.

Welche Pins braucht man denn in dem Fall..

Clock ist mir klar das sind SCK auf Clock des Displays. Aber wo schließe 
ich MISO und MOSI an? und kann ich für Chipselect einen beliebigen PIN 
am Controller nehmen?

jbob

von spess53 (Gast)


Lesenswert?

Hi

>Hi ich habe vor ein Display an meinen Mikrocontroller anzuschließen den
>DOGXL dabei habe ich die Auswahl zwischen 4 verschiedenen
>Übertragungsmöglichkeiten unteranderem auch SPI.

Um welchen Controller handelt es sich denn?

MfG Spess

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

CS geht an einen beliebigen Pin am uC.
MISO/MOSI sind die Datenleitungen:
MISO - Master In Slave Out
MOSI - Master Out Slave In


Wenn du das Display fest an den Pins verdrahtest,
du auch zur Programmierung des uCs gedacht sind,
dann kann es zu Problemen kommen (es sei denn
du benutzt den Chipselect klug, um das Display
beim Programmieren des uCs zu deaktivieren).

von J.-u. G. (juwe)


Lesenswert?

jbob schrieb:
> Aber wo schließe
> ich MISO und MOSI an?

MOSI (Master out, Slavwe in) des µC an den Pin 31 (SI - Slave in) des 
Displays.

MISO des µC brauchst Du nicht mit dem Display verbinden, da nicht 
beötigt.

> kann ich für Chipselect einen beliebigen PIN
> am Controller nehmen?

Ja, kannst Du. Falls Du nur ein Display und keine weiteren Geräte am 
SPI-Bus hast, kannst Du das Display auch im 3-Wire-SPI-Modus betreiben. 
Dann brauchst Du gar keinen Chipselect am µC.

Was Du aber machen musst: Einen beliebigen Pin des µC mit dem Pin 27 
(CD) des Displays verbinden. Hier wird signalisiert, ob Befehle oder 
Daten übertragen werden.

von enblat (Gast)


Lesenswert?

>Kann ich diese Pins denn so einfach doppelt belegen?

ISP und Display brauchst Du nicht gleichzeitig...!

MOSI an SI des Displays

SI = Slave In

MISO brauchst Du nicht, weil

> Das bedeutet, dass Daten nur geschrieben, nicht aber wieder
> gelesen werden können.

>und kann ich für Chipselect einen beliebigen PIN
>am Controller nehmen?

Ja, wenn kein dedizierter SPI CS vorhanden.

Wenn Du "3 WIRE, 8-BIT SPI-MODE" verwendest, brauchst Du
kein SPI, aber ein CD (auch von einem GPIO)

von jbob (Gast)


Lesenswert?

Danke für die Infos. Das hat mir weiter geholfen. Ich nehme jetzt 3 Bit 
SPI und habe das Diagramm nach programmiert, da ich solche ähnlichen 
Routinen schonmal geschrieben habe. Der Hersteller hat auch solche 
Beispiele für andere Displays aus der Familie online gestellt das sollte 
denke ich mal komplatibel sein.

Ist es denn in der Regel ratsam das SPI des Controller zu verwenden und 
die interenen Register anzusprechen oder halt solche Diagramme nach zu 
programmieren?

Hier ist meine Routine:
1
void display_out(unsigned char out)
2
{
3
  unsigned char mask = 0x80;
4
  
5
  while(mask)
6
  {
7
    DISPLAY_PORT &= ~(1 << CLK);
8
    if(mask & out)
9
    {
10
      DISPLAY_PORT |= (1 << SDA);
11
    }
12
    else
13
    {
14
      DISPLAY_PORT &= ~(1 << SDA);
15
    }
16
    DISPLAY_PORT |= (1 << CLK);
17
    mask = mask >> 1;
18
  }  
19
}

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

Der SPI-Controller ist extra Hardware und somit schneller.
Das Software-SPI frisst uC-Resourcen.

von jbob (Gast)


Lesenswert?

Ok ich werde denke ich mal beide Varianten ausprobieren. Aber für 
Hardware SPI muss ich dann MISO und soweiter nehmen und für Software 
kann ich mir das dann aussuchen oder?

von spess53 (Gast)


Lesenswert?

Hi

>Ist es denn in der Regel ratsam das SPI des Controller zu verwenden und
>die interenen Register anzusprechen oder halt solche Diagramme nach zu
>programmieren?

Kommt darauf an, wie schnell du dein Display beschreiben willst. 
Hardware-SPI kann bis zum halben Controllertakt arbeiten. Wenn dein 
unbekannter Controller ein neuerer (Mega)AVR mit einer oder mehren 
USARTs ist, kann man diese auch im SPI-Mode verwenden.

MfG Spess

von jbob (Gast)


Lesenswert?

Ich benutze einen Atmega16 noch mit internem Takt die Quarze kommen erst 
noch die Tage. Ich denke dann werde ich auch auf internen SPI umsteigen. 
Danke euch. Aber an meiner Routine ist nichts falsch oder?

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.