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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.