SPI controller in 8051

Gast #3998185
Lesenswert?

Hallo,

ich möchte Daten von Mikrocontroller 8051 zum LCD schicken. Das soll 
über die SPI Schnittstelle geschähen. ich habe einen kurzen Programm 
geschrieben. Kann jemand mir sagen ob das richtig ist oder nicht bzw. 
auf den richtigen weg bin.

ich bedanke mich bei Allne im voraus.

Sarah
Angehängte Dateien:
#3998621
Lesenswert?

Danke Peter für dein Antwort
Bin ich auf dem richtigen Weg ?
> Die meisten SPI sind ungepuffert.
> D.h. Du mußt nach jedem Byte warten, bis es gesendet wurde.


soll ich nach jedem Byte eine wait zufügen

z.b
 SPDAT= buf0;   /* send an example data */
 wait 100;
 SPDAT= buf1;
 wait 100;
 SPDAT= buf2;



Danke
Sarah
#3998702
Lesenswert?

@ Sahra Srur (sahra)

>> Nö, Du mußt das Ready-Flag pollen.

>Kannst du es mir bitte etwas nähe bringen.;)

Du musst aus dem Statusregister des SPI das Bit auslesen, was dir sagt, 
dass die Übertragung des Bytes abgeschlossen ist. Wie das genau heißt, 
steht im Datenblatt.
Moderator (Firma: Titel) Persönliche Seite #3999782
Lesenswert?

Sahra Srur schrieb:
> ich fand kein Status Register für spi im Datenblatt
SPI ist ein Modus der SSC-Einheit im C515C. Los gehts im UM1100 ab 
Kapitel 6.4
http://www.infineon.com/dgdl/c515c_um_1100.pdf

> oder ist es SCF (Flag Register)
Ja, denn dort drin ist ein TC "Transfer Completed" Flag, das anzeigt, ob 
wieder Daten verschickt werden können...
#3999795
Lesenswert?

@ Sahra Srur (sahra)

>1)Soll ich jetzt eine Schleife Bilden und bitweise abfragen mit swich ,
>case.

Mann O Mann. Und du bist sicher, dass das Programmieren von 
Mikrocontrollern WIRKLICH was für dich ist?

NEIN! Die Schleife warte auf das Ende der Übertragung für ein 
VOLLSTÄNDIGES Byte. Nix switch.

>übrigens ich fand kein Status Register für spi im Datenblatt.oder ist es
>SCF (Flag Register)

Kann sein. Was steht denn in der Beschreibung dazu?
#3999841
Lesenswert?

Das standard 8051 Include wird die Bit- und Registernamen des C515C 
nicht kennen. Du solltest versuchen, das passende C515C-Include zu 
bekommen (Keil-Webseite).

Für die Details brauchst Du das UM1100, die stehen leider nicht im 
Datenblatt.
Bei Infineon gibt es sicher auch Application-Notes mit Code-Beispielen.
#3999913
Lesenswert?

Ich habe einen Beispiel gefunden im Internet. kann es mir jemand 
erklären.


void it_SPI(void) interrupt 9 /* interrupt address is 0x004B */
{
  switch  ( SPSTA )         /* read and clear spi status register */
  {
    case 0x80:
         serial_data=SPDAT;       /* read receive data */
         transmit_completed=1;    /* set software flag */
     break;

    case 0x10:

    break;

    case 0x40:

    break;
  }
}

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