Forum: Mikrocontroller und Digitale Elektronik grafik LCD HW SPI


von Til M. (til_mey)


Lesenswert?

Hallo,

ich habe ein grafik LCD (controller: st7920) welches ich mit einem 
ATmega3250A und der u8glib betreibe. Das ganze mache ich mit software 
SPI, um aber schneller zu sein würde ich das ganze gerne mit hardware 
SPI lösen?

Mir stellt sich jetzt folgendes Probelm: ich kann zwar im Code ändern, 
dass ich das gerne tun will, doch wie verbinde ich die PINs nun? Mein uC 
hat die SPI Pins MISO, MOSI, SCK und SS. Mein Display hat keine davon. 
Es hat die PINS: RS, R/W, E und RST. Die restlichen Pins sind für 
parallel Betrieb und Speisung etc.

Welche Pins brauche ich nun?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Til M. schrieb:
> Mein uC
> hat die SPI Pins MISO, MOSI, SCK und SS

Das ist schon mal die Hardware SPI des MC. Die solltest du also 
benutzen.

Til M. schrieb:
> Mein Display hat keine davon.
> Es hat die PINS: RS, R/W, E und RST. Die restlichen Pins sind für
> parallel Betrieb und Speisung etc.

http://www.dfrobot.com/image/data/FIT0021/ST7920.pdf

Das Datenblatt schreibt:

RS = Chip Select (aktiv high, kannst SS nehmen)
RW = Data Input (MOSI am Kontroller)
E = Shift Clock (SCK am Kontroller)

MISO bleibt frei, weil du vom LCD nix lesen kannst.

von Falk B. (falk)


Lesenswert?

@  Matthias Sch. (Firma: Matzetronics) (mschoeldgen)


>RS = Chip Select (aktiv high, kannst SS nehmen)

SS MUSS als Ausgang gesetzt werden, sonst gibt es Ärger, siehe 
Datenblatt "SS functionality".
Auserdem sollte hier ein externer Pull-Up Widerstand dran, 10K oder so, 
damit das LCD beim ISP Programmieren des uC keinen Unsinn macht.

von Til M. (til_mey)


Lesenswert?

Vielen Dank das hilft mir schon einmal sehr! :)

von Til M. (til_mey)


Lesenswert?

Ich muss jetzt doch auch noch nachfragen bezüglich des Codes. Mit 
software SPI verwende ich zur initialisierung:
1
u8g_InitSPI(&u8g, &u8g_dev_st7920_128x64_sw_spi, PN(1, 1), PN(1, 2), PN(1, 0), PN(1, 3), U8G_PIN_NONE);

kann ich diese initialisierung nun nicht einfach durch:
1
u8g_InitSPI(&u8g, &u8g_dev_st7920_128x64_hw_spi, PN(1, 1), PN(1, 2), PN(1, 0), PN(1, 3), U8G_PIN_NONE);

ersetzen? Die Pinbelegung sollte stimmen aber das LCD funktioniert so 
nicht mehr. Es geht nur mit sw SPI. Muss ich evtl. noch mehr anpassen 
oder übersehe ich sonst etwas?

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.