Actualmente estoy trabajando para portar algunos bocetos de Arduino de Intel Galileo que usan SPI (usando un prototipo de placa Arduino Breakout).
No he podido hacer que funcione hasta ahora, pero he usado un osciloscopio para ver lo que realmente está haciendo el SPI.
He observado que las señales de reloj SPI de Galileo y Edison tienen una forma diferente y también un voltaje diferente (observe las escalas en la parte superior de la pantalla). También he notado que el reloj de Galileo está encendido todo el tiempo mientras que el de Edison se apaga y enciende cada pocos segundos.
El de arriba es el Edison, y el de abajo es el Galileo.
Como experto en software, realmente no sé qué está pasando aquí. ¿Alguien sabe qué podría estar causando esto? ¿Es esto algo que puedo cambiar en el software o es definitivamente una cuestión de hardware? ¿Y esto sería causado por el propio Edison o por la placa de conexión?
Gracias, ¡cualquier ayuda u orientación es apreciada!
A continuación se muestran algunas imágenes más de los relojes que funcionan a diferentes frecuencias: NOTA: Galileo (comportamiento deseado) ahora está en la parte superior y Edison está en la parte inferior. Las escalas se han ajustado para que sean iguales.
Parece que el reloj se distorsiona cada vez más en el Edison a medida que aumentamos la frecuencia. ¿Podría ser esto lo que está causando nuestros problemas? Ahora el sobreimpulso es tan dominante que parece estar en un nivel lógico más alto.
Realmente necesita determinar si todo ese exceso y timbre que se muestra en el osciloscopio es real, o simplemente un artefacto causado por la forma en que está probando el circuito. Sospecho que es lo último, así que asegúrese de tener una conexión a tierra sólida, sus sondas estén debidamente compensadas y/o tome prestadas/compre algunas mejores.
En general (ignorando el timbre y centrándose en la forma subyacente de la forma de onda), parece que Edison tiene un controlador de reloj más débil que Galileo y, de hecho, es tan débil a 4 MHz que la amplitud general se reduce considerablemente. Si conduce un autobús relativamente largo o muy cargado, es posible que el Edison necesite amortiguadores externos para el reloj y las líneas MOSI.
SPI por sí mismo no especifica un nivel de voltaje (puede ser de 1 V, puede ser de 100 V incluso si eso no es muy común). Si desea que sus dispositivos se comporten de la misma manera, necesitará un traductor de voltaje (también se les llama traductores de nivel o cambiadores de nivel). Probablemente no podrá cambiar esto en el software.
La "señal de aumento lento" que ve podría provenir de alguna capacitancia en sus líneas de datos, esto sería típico para I2C donde solo un pull-up débil se encarga de una señal alta y la línea solo se reduce.
No veo a qué frecuencia está conduciendo su señal. ¿Podría especificar esto?
Para SPI no importa si el reloj está siempre encendido o solo cuando se está produciendo alguna comunicación. La comunicación es válida solo cuando la línea CS está activa, todo lo demás debe ignorarse.
El exceso o el aumento lento que ve también podría provenir de su sonda de alcance. Asegúrese de que su sonda coincida con su alcance.
chris stratton