Inhabilitar LCD ST9720 en modo SPI

Hola.
A ver si alguno de los lectores ha trasteado o conoce bien este módulo de LCD texto/gráfico monocolor.

Se puede conectar tanto en paralelo 8/4 bit, como en modo serie (No se cita específicamente en el datasheet, pero el timing del modo serie es compatible con comunicación SPI). Lo estoy manejando con la librería u8glib.
Me interesaba particularmente el modo serie, concretamente conectado al SPI hardware de Arduino, por aquello de minimizar pines (quería utilizarla junto a SD y Ethernet), aunque para el Mega podría perfectamente conectarla en paralelo o utilizar serie sobre dos pines independientes; sin embargo, para arduinos más pequeños veo interesante el poder conectar los tres dispositivos utilizando sólo seis pines (MISO, MOSI, SKC y tres CS).
La pantalla, conectada en solitario, funciona correctamente; sin embargo, después de muchas vueltas y pruebas de todo tipo, creo que, o bien no lo estoy utilizando correctamente, o no está muy bien implementado el pin CS; ya que aunque ponga a LOW dicho pin antes de trabajar con la SD (aunque los dispositivos SPI normalmente se desactivan con HIGH), al comunicar con la SD se afecta la pantalla.
La conexión, aparte de las alimentaciones, la tengo hecha de la siguiente forma:

-Pin4 del LCD como CS.
-Pin5 a MOSI.
-Pin6 a SCK
-Pin15 a GND (activa el modo serie)

Según el propio datasheet:

When connecting several ST7920, chip select (CS) must be used. Only when (CS) is high the serial clock (SCLK) can be accepted. On the other hand, when chip select (CS) is low ST7920 serial counter and data will be reset. Transmission will be terminated and data will be cleared. Serial transfer counter is set to the first bit. For a minimal system with only one ST7920 and one MPU, only SCLK and SID pins are necessary. CS pin should pull to high.

Quiero entender (aunque igual mi nivel de inglés me engaña) que con el pin CS en LOW debería hacer “oídos sordos” al puerto SPI.

Gracias y perdón por el rollo.

De donde sacaste esto?
-Pin4 del LCD como CS.
-Pin5 a MOSI.
-Pin6 a SCK
-Pin15 a GND (activa el modo serie)

CS puedes ser pin 4 pero MOSI, SCK y MISO no estan en esos pines.

The following table display on which pins the SPI lines are broken out on the different Arduino boards:

Arduino / Genuino Board MOSI MISO SCK SS (slave) SS (master) Level
Uno or Duemilanove 11 or ICSP-4 12 or ICSP-1 13 or ICSP-3 10 - 5V
Mega1280 or Mega2560 51 or ICSP-4 50 or ICSP-1 52 or ICSP-3 53 - 5V
Leonardo ICSP-4 ICSP-1 ICSP-3 - - 5V
Due ICSP-4 ICSP-1 ICSP-3 - 4, 10, 52 3,3V
Zero ICSP-4 ICSP-1 ICSP-3 - - 3,3V
101 11 or ICSP-4 12 or ICSP-1 13 or ICSP-3 10 10 3,3V
MKR1000 8 10 9 - - 3,3V

Note that MISO, MOSI, and SCK are available in a consistent physical location on the ICSP header; this is useful, for example, in designing a shield that works on every board.

Hablo de los pines del LCD, Ricardo. Los del Arduino los tengo muy claros ;). Me explico mejor: -Pin4 del LCD (RS) como CS. -Pin5 (RW) a MOSI de arduino. -Pin6 (SCK) a SCK de arduino -Pin15 (PSB) a GND (activa el modo serie)

Por cierto; debo lidiar con una incomodidad más. No sé la causa, pero si bien desde el IDE me compila perfectamente, desde Sublime Text me da errores. Supongo que tenga que ver con la estructura de la librería.

que pin estas usando como CS (que pin de arduino) lo digo por que el HARd de SPI de arduino y para el SD

por que lo pregunto? por que la sd no funcionara si usas el pin 10 (que es el SS del HARD SPI) para otra cosa que no sea la propia SD, es decir no puedo usar el pin 10 para CS del LCD y el 9 para el CS de la SD, si en la SD quiero usar el 9, el 10 se tiene que deja sin uso

No se si me he explicado... aun que por otro lado quizás ya lo sabias esto

En primer lugar, agradezco la aportación, Go_zalo, pero el problema no es de la SD, sino de la pantalla. No quisiera desviar el objetivo del hilo, pero creo que lo que comentas sobre el pin SS no es exacto. En otro hilo reciente estuve divagando sobre la SD, y entre otras cosas, con el pin SS (en el mega, que es el que uso yo, es el pin 53), y no hay inconveniente en utilizarlo como CS de alguno de los dispositivos (de hecho yo lo he utilizado para la SD o la ethernet sin problemas), o incluso como salida digital para otro uso. Lo que no se debe hacer con ese pin es establecerlo como entrada, ya que eso hace que el modo SPI del arduino pase a comportarse como esclavo (ese sería el pin CS del arduino).

Tras las distintasy numerosas pruebas que he realizado, al final he llegado al siguiente punto: - Conecto SOLAMENTE la pantalla al puerto SPI. Utilizo el pin 23 como CS, aunque creo que eso es irrelevante. - En el Sketch incluyo SD.h, aunque no tengo conectada la tarjeta. El sketch actual es muy sencillo. - Inicio pantalla y muestro algo (un texto, gráfico....) - Aunque la propia librería pone el pin CS de la pantalla en LOW, me aseguro y lo pongo también en el sketch. - Realizo SD.begin(). En ese momento la pantalla empieza a "ensuciarse", supongo que porque aunque está su CS en low está admitiendo parte del tráfico que entra por el puerto SPI. He probado también a poner el pin CS en HIGH por si acaso (los dispositivos SPI normalmente se deshabilitan así) y la pantalla se ensucia mucho más rapidamente.

noter: En primer lugar, agradezco la aportación, Go_zalo, pero el problema no es de la SD, sino de la pantalla. No quisiera desviar el objetivo del hilo, pero creo que lo que comentas sobre el pin SS no es exacto. En otro hilo reciente estuve divagando sobre la SD, y entre otras cosas, con el pin SS (en el mega, que es el que uso yo, es el pin 53), y no hay inconveniente en utilizarlo como CS de alguno de los dispositivos (de hecho yo lo he utilizado para la SD o la ethernet sin problemas), o incluso como salida digital para otro uso. Lo que no se debe hacer con ese pin es establecerlo como entrada, ya que eso hace que el modo SPI del arduino pase a comportarse como esclavo (ese sería el pin CS del arduino).

Ok yo siempre me había limitado a no usarlo, para evitar problemas. Gracias

Porque no intentas agregar una R de 10k a 5V con tu pin CS (el 23) que asegure que el dispositivo queda inhabilitado. Raro pero tal vez la pantalla tome mucha corriente y el pin quede en un estado digamos no definido.