Forum: Mikrocontroller und Digitale Elektronik LPC922 Mikrocontroller - SPI durch Softwarenachbildung möglich?


von Eric (Gast)


Lesenswert?

Ich habe hier im Forum bereits mehrmals gelesen das es möglich ist - 
auch wenn der verwendete Mikrocontroller keine Hardware SPI hat - eine 
SPI über die "normalen" I/O Ports mit einer "Software"-SPI zu 
realisieren. Ist dies wirklich möglich und was ist dabei zu beachten? 
Ich kann leider keine Code-Beispiele finden, wo ich mir ein Beispiel für 
den LPC922 nehmen könnte. Vielen Dank im voraus.

von Matthias K. (matthiask)


Lesenswert?

Soft SPI geht auf jedem Mikrocontroller. Es werden dann die SPI Signale 
mit GPIO-Pins nachgebildet. Ist in der Regel nicht so schnell wie 
Hardware SPI, aber durchaus brauchbar.

Bsp., ein SPI-Senderoutine für 8051 (SDCC) könnte so aussehen:
1
... 
2
#define LCD_CSB  P0_1
3
#define LCD_RS   P0_2
4
#define LCD_DATA P0_3
5
#define LCD_SCK  P0_4
6
7
// ***********************************************************************
8
// Schreiben eines Zeichens an das LCD-Modul (seriell Soft-SPI Mode)
9
// Übergabe: lcd_byte : Auszugebendes Zeichen/Steuerzeichen
10
//           lcd_mode : 0 - Daten
11
//                      1 - Steuerzeichen
12
// ***********************************************************************
13
void write_lcd(byte lcd_byte, bit lcd_mode) {
14
byte stelle;
15
  LCD_CSB = 0;  // LCD-Modul freigeben
16
  if (lcd_mode) LCD_RS = 0; // Steuerzeichen
17
    else LCD_RS = 1;        // Daten
18
19
  // Byte senden seriell senden, MSB zuerst (D7 D6 D5 D4 D3 D2 D1 D0)
20
  for ( stelle = 0x80; stelle; stelle >>= 1 ) {
21
    LCD_DATA = lcd_byte & stelle;
22
23
    LCD_SCK = 0; // Takt
24
    LCD_SCK = 1;
25
    LCD_SCK = 0;
26
27
  }
28
  LCD_CSB = 1; // LCD-Modul sperren
29
}

von Eric (Gast)


Lesenswert?

Vielen Dank Matthias für die schnelle und gute Antwort und besonders für 
das Codebeispiel. Ich werde versuchen damit eine Verbindung aufzubauen. 
Ich wünsche dir noch einen schönen Tag.

Viele Grüße

Eric

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.