Autor Tema: Problema comunicación SPI  (Leído 3351 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Problema comunicación SPI
« en: 19 de Agosto de 2017, 13:28:28 »
Hola!!

Estoy intentando comunicarme con un GLCD a través de SPI, pero estoy teniendo problemas para hacerlo funcionar. He usado un osciloscopio para ver cómo actúan las patillas SCK y SDO, pero están siempre en HIGH.

Para iniciar el SPI he usado:

#include <16F887.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)

#define SPI_MODE_0  (SPI_L_TO_H | SPI_XMIT_L_TO_H)
#define SPI_MODE_1  (SPI_L_TO_H)
#define SPI_MODE_2  (SPI_H_TO_L)
#define SPI_MODE_3  (SPI_H_TO_L | SPI_XMIT_L_TO_H)

void main() {
setup_spi(SPI_MASTER|SPI_MODE_3|SPI_CLK_DIV_4);           // Modo maestro, idle clock high, sample on low2high, Fosc/4
spi_write(0b11100100);            // Secuencia a enviar
while(1){}
}

¿Sabéis qué me puede estar faltando?

Gracias de antemano!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema comunicación SPI
« Respuesta #1 en: 19 de Agosto de 2017, 14:04:10 »
Para poder verlo con el osciloscopio mejor asi:

Código: C
  1. void main() {
  2. setup_spi(SPI_MASTER|SPI_MODE_3|SPI_CLK_DIV_4);           // Modo maestro, idle clock high, sample on low2high, Fosc/4
  3.  
  4. while(1)
  5.    {
  6.    spi_write(0b11100100);            // Secuencia a enviar
  7.    }
  8. }

Lo bueno del osciloscopio es poder ver señales periodicas,

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Problema comunicación SPI
« Respuesta #2 en: 19 de Agosto de 2017, 15:59:06 »
Hola KillerJC,

Tampoco puedo verlo. Sin embargo en proteus sí que puedo.
En el osciloscopio he probado desde 10ms a 10us. Deberían verse claramente los cambios de 0 a 1? Nunca lo he probado...

Gracias por tu ayuda!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema comunicación SPI
« Respuesta #3 en: 19 de Agosto de 2017, 16:15:28 »
y si usas el #USE SPI ?

Si proteus funciona puede ser que no este teniendo en cuenta algo la simulacion, o que hay diferenia son los FUSES.
Yo no puedo ayudarte demasiado porque es CCS

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Problema comunicación SPI
« Respuesta #4 en: 19 de Agosto de 2017, 16:30:41 »
#USE SPI lo probé ayer, pero tampoco tenía claro si lo estaba configurando bien.

Qué compilador usas? MPLab?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema comunicación SPI
« Respuesta #5 en: 19 de Agosto de 2017, 16:52:52 »
XC8, acostumbrado a cambiar los registros. Pero CCS deberia funcionar bien igual, nomas que no poseo experiencia con ese compilador, solo leer lo de aca y su manual

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Problema comunicación SPI
« Respuesta #6 en: 23 de Agosto de 2017, 05:09:23 »
Hola KillerJC,

Estoy pensando en comprar un osciloscopio mejor, para poder ver bien las señales spi (el mio solo llega hasta 10us, y creo que el problema en parte puede ir por ahí) y he visto uno que llega hasta 1ns. ¿Podrías aconsejarme cómo lo ves tú? No necesito que sea extremadamente bueno. Simplemente para ver señales de SPI, usando frecuencias de reloj "normales", como 4MHz.

Gracias!!

Saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema comunicación SPI
« Respuesta #7 en: 23 de Agosto de 2017, 08:49:05 »
No me parece un buen osciloscopio ese.

Poco bandwith ( 20Mhz )
Bajo Sampling ( 48 MS/s ) cuando un osciloscopio suele ser unas 10x o 20x veces el bandwith
Rango de tension pequeño, proteccion a 50V pico
El buffer imagino que es pequeño, no poseo nada para comparar.

1K de Samples al recordar... es poco.

A mi gusto. Para gastar iria a uno con pantalla, de 50Mhz al menos y te solucionas la vida para lo que vayas a utilizar, ademas no corres el riesgo de poder quemar algo de la PC al poder aislar el osciloscopio de la tension de linea.

PD: Si lo tuyo es intentar ver señales SPI o mejor dicho señales digitales (I2C/UART), comprate algun analizador logico barato de 20Mhz ( suele haber clones muy baratos ) Y con eso tendrias para ver el SPI correctamente. Lo maximo que vi hacer funcionar a un SPI es con 25Mhz con micros que van a 120Mhz. Gastarias mucho menos y tendrias una mejor solucion, ya que guardan mas puntos e incluso te descifran lo enviado.
« Última modificación: 23 de Agosto de 2017, 08:52:04 por KILLERJC »

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Problema comunicación SPI
« Respuesta #8 en: 23 de Agosto de 2017, 13:52:30 »
Hola,

Pues... Muchas gracias por tu opinión, la verdad. Pensaba que sí que lo sería. La inexperiencia.. jajaja.

He visto este, que.. la verdad es que esta tirado de precio. Es esto a lo que te referías??

Gracias de nuevo!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema comunicación SPI
« Respuesta #9 en: 23 de Agosto de 2017, 14:22:39 »
Claro algo asi, para la frecuencia que decis que lo vas a hacer funcionar te va a servir, incluso cuando uses otro protocolo y quieras ver que se envia o recibe. Pienso que es mucho mas barato que comprar un osciloscopio. Todo esto suponiendo que ya poseas un osciloscopio.

Aca se puede ver en la imagen que en el software ese si configuras los protocolos correctametne, podes ver que se envio/recibio en varios tipos de protocolos

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Problema comunicación SPI
« Respuesta #10 en: 23 de Agosto de 2017, 14:41:48 »
Perfecto!! Pues me compro este. Graciass!

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Problema comunicación SPI
« Respuesta #11 en: 24 de Agosto de 2017, 15:50:49 »
Una cosa que he hecho ahora, mientras me llega el analizador lógico, es conectar la salida SPI a la entrada, y leer. Así he comprobado que sí que estaba emitiendo señal, pero mi osciloscopio no lo mostraba.