Autor Tema: Señal SPI se deforma demasiado en alta velocidad.  (Leído 3209 veces)

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

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Señal SPI se deforma demasiado en alta velocidad.
« en: 20 de Abril de 2020, 13:27:01 »
Estoy tratando de comunicar un dispositivo a 16 mhz, y tras pelearme con el programa por que no va bien, meto osciloscopio y esto es lo que veo:

A 16 Mhz la comunicación es directamente imposible. Esta es la señal del clock del SPI, fijaos como se queda. El 0V está centrado en el eje de abscisas.

 

* 16mhz_spi.jpg
(74.16 kB, 1080x810 - visto 426 veces)



A 4 Mhz funciona, pero el CRC no es que salte a menudo, es que pega puñetazos.  ;-) Fallan muchos datos..

Esta es la señal a 4 Mhz:

 

* 4mhz_spi.jpg
(73.4 kB, 1080x810 - visto 460 veces)


 

Y por ultimo a 1 MHZ, es cuando todo va perfecto.

  Esta es la señal a 1 Mhz:

 

* 1mhz_spi.jpg
(87.12 kB, 1080x810 - visto 413 veces)



El cable que conecta ambos dispositivos apenas mide 8 centímetros, va a 3,3V y es cable trenzado de red cat6.

 ¿ A alguien se le ocurre algo?.

 Un saludo.
« Última modificación: 20 de Abril de 2020, 13:29:19 por remi04 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #1 en: 20 de Abril de 2020, 14:10:11 »
Si desconectas el cable, teniendo 16Mhz, funciona correctamente ?

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #2 en: 20 de Abril de 2020, 14:50:12 »
En osciloscopios, 20MHz es la frecuencia de corte.  o sea, cuando la amplitud de una señal senoidal cae 3dB.   No significa que hasta 20MHz te va a reproducir bien  la señal y después el caos.

Además, tu señal es cuadrada.  Fijate que a 4MHz la fundamental está aceptable pero la 3er armónica (12MHz) está bastante atenuada.
En cambio a 1MHz, tenés 1er,3er,5ta,7ma... armónica bien por debajo de los 20MHz y la ves perfecta.

No se que te estará pasando, pero si querés visualizar una señal cuadrada de 16MHz el osciloscopio debe ser de por lo menos 60MHz.


Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #3 en: 20 de Abril de 2020, 16:12:36 »
Ok.

  Es una tarjeta SDHC de 30 Gb.

  A 1 Mhz, las operaciones son perfectas.  Todas, tanto los comandos como las transferencias de sectores de 512 Bytes.

  A 4 Mhz va bien, pero me tira bastantes CRC error y hay que estar repitiendo transferencias.  Si anulo el CRC evidentemente de todo el bloque de lectura o escritura me salen por lo menos 40 datos erroneos o colocados cambiados de posición.

  A 16 Mhz, no responde la tarjeta a ningún comando.

    Evidentemente la inicialización la hago a 400 Khz como toca hacerla. Los 400 Khz en el SPI los consigo gracias al timer2, por que a 64 Mhz que va el micro, lo minimo era 1 Mhz.

 



Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #4 en: 20 de Abril de 2020, 16:40:59 »
...
El cable que conecta ambos dispositivos apenas mide 8 centímetros, va a 3,3V y es cable trenzado de red cat6.
...

¿Que hay de la alimentación y las masas?

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #5 en: 20 de Abril de 2020, 18:13:55 »
...
El cable que conecta ambos dispositivos apenas mide 8 centímetros, va a 3,3V y es cable trenzado de red cat6.
...

¿Que hay de la alimentación y las masas?

 Alimentación 3,3v por regulador ldo. las señales todas a 3,3v.  Es un 18f46k20 que trabaja también a 3,3v. Todo montado en placa con sus planos de gnd.  Lo único aéreo  que va con cables es la placa con el zócalo de la tarjeta que eso ya viene todo echo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #6 en: 21 de Abril de 2020, 01:38:55 »
Yo no me fiaría mucho del aspecto de la señal en ese osciloscopio porque es de 20MHz.

¿Podrías hacer que el maestro y el esclavo estuvieran lo más cerca posible disminuyendo la influencia posible del cable?

¿Las masas de maestro y esclavo son comunes y están bien unidas?

¿Condensadores de desacoplo cerca de maestro y esclavo, muy pegaditos?

¿Qué tal se ve la alimentación de 3.3V en el osciloscopio a altas frecuencias?, ¿es limpia?

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #7 en: 21 de Abril de 2020, 06:28:11 »
Pues al final se ha solucionado.

 Las resistencias pullup que trae la placa del zócalo de tarjeta eran de 4k7.  En los datasheet de Kingston, Sandisk, etc decían que tenían que ser de entre 10k y 100k. Se las he puesto de 50K y todo perfecto.  Y el coraje que dos tardes perdidas buscando el problema.

    La conclusión:  No dar por sentando nunca que los módulos que venden para arduino y demás son infalibles.

EDITO:  La solucion anterior ha sido válida SI, para unas tarjetas pero NO para otras. Había otras que seguían sin funcionar a alta velocidad.

 Por fortuna también lo he podido solucionar, manejando el modulo SPI manualmente.

  Lo que he hecho ha sido escribir esta función:

 
Código: C
  1. char spi_transfer(char data) {
  2.        SSPBUF = data;
  3.        while(!BF);
  4.        return SSPBUF;
  5. }
   Pues bueno. Con esa funcion, ahora funcionan todas las tarjetas, con todas las velocidades e incluso volviendoles a poner las resistencias pullup iniciales también funciona.

   Desconozco como operan exactamente las funciones de CCS  " spi_read() y spi_write() "

   Pero ahora con esa función que he puesto arriba, la misma sirve tanto para enviar como para recibir.  Igual que hace la funcion spi_read(xx) si le das un valor, que lo envía a la misma vez que recibe otro.

  La diferencia es que con las funciones de CCS tenia esos problemas, y con la que he puesto arriba se ha solucionado todo.

 Por si a alguien le sirve, ahí lo tiene.

Saludos. 

« Última modificación: 21 de Abril de 2020, 10:09:38 por remi04 »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #8 en: 22 de Abril de 2020, 04:47:18 »
¿Y no es mejor hacer SPI por hardware, o es que tu micro no lo tiene?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Señal SPI se deforma demasiado en alta velocidad.
« Respuesta #9 en: 22 de Abril de 2020, 09:36:14 »
¿Y no es mejor hacer SPI por hardware, o es que tu micro no lo tiene?

Lo esta haciendo por Hardware, SSPBUF es el registro del SPI y BF es el bit que dice que el registro esta full.