Reducción de ruido en SPI

0

He estado trabajando en un proyecto para conectar ENC28J60 con un ATmega16A µC. Por el bien de la depuración, he construido una placa con capacidad UART para poder ver los valores de registro del chip del controlador de Ethernet en mi computadora portátil. Intenté establecer comunicación con el chip ENC28J60 y mi µC a través de SPI y no pude obtener ningún tipo de lectura a pesar de que mi código parecía ser el correcto según los comandos SPI enumerados en la hoja de datos ENC28J60.

Ahora, solo para verificar mi código SPI, intenté establecer una comunicación b / w dos ATmega16A µC según este tutorial . Pero en lugar de mostrar el valor recibido en una pantalla LCD, usé UART para enviar los valores a mi computadora portátil. Pero hice las siguientes observaciones:

  1. cada vez, el maestro muestra un valor recibido diferente a pesar de que el esclavo está enviando un valor constante de 0x11.
  2. La transmisión y la recepción se producen solo cuando tomo mi mano cerca del circuito y se detiene tan pronto como se retira mi mano.

Busqué mucho en Google y encontré que SPI es altamente susceptible a EMI. Tomé las siguientes medidas para reducir los errores debidos a EMI.

  1. Reduje la velocidad del reloj SPI.
  2. Puse un capacitor de 470µF a través de Vcc y GND para eliminar el ruido de la fuente de alimentación.
  3. He reducido la longitud del cable de MOSI, MISO y SCK.

¿Qué otras medidas puedo tomar para obtener una comunicación confiable y consistente a través de SPI?
¿Y mi MAX232 IC está causando mucha interferencia a mis señales SPI?
¿Y el uso de UART simultáneamente con SPI afectará la fiabilidad de SPI?

    
pregunta Horrible Guy

2 respuestas

4

Primero debes averiguar dónde está realmente el problema. La descripción de su configuración es confusa, pero parece que solo está mirando el bus SPI indirectamente a través de un firmware que informa cosas sobre un UART. Hay muchas oportunidades de error en eso. Los buses SPI que son cortos, en el mismo tablero y sobre un plano de tierra prácticamente funcionan. Esto no es diferente a otras señales digitales entre chips en el mismo tablero. Parece que estás persiguiendo el problema equivocado.

Mire el reloj SPI y las líneas de datos con un alcance. Esto le permite ver qué tipo de ruido hay, y también le permite verificar que las secuencias cortas son realmente lo que cree que son. Espero que encuentre que tiene un error que no está causando lo que piensa en el bus SPI, o que no informa correctamente lo que está sucediendo en el bus.

Tenga en cuenta que el ENC28J60 tiene un conjunto de comandos SPI bastante complicado, que incluye un esquema de direccionamiento segmentado para algunos de sus registros. Comience con algo simple, como escribir algo de valor en un registro particular y verificar que pueda volver a leerlo. Una vez que tenga eso, es bueno crear capas de firmware para leer o escribir cualquier registro, rastrear automáticamente el banco y configurarlo según sea necesario. Luego cree otra capa para leer / escribir registros PHY.

La buena noticia es que la hoja de datos está bien escrita y completa. Creé una capa de controlador para el ENC28J60 para mi pila TCP / IP solo a partir de la información en la hoja de datos.

Añadido

Otra causa común de la descamación SPI es hacer cosas en el borde equivocado del reloj. Desafortunadamente no hay una norma única. Mire detenidamente la hoja de datos del chip y el procesador para ver en qué borde del reloj está cambiando los datos y cuándo se está leyendo. Obviamente, usted quiere escribir en un borde y leer en el otro. Si la lectura y la escritura se realizan en el mismo borde del reloj, entonces es de esperar que se produzca una descamación en la que las cosas cambian debido a pequeños cambios de capacitancia.

Nuevamente, mire el reloj y los datos en un alcance cuando se envía un byte conocido.

    
respondido por el Olin Lathrop
1

Intente tomar un cable de conexión a tierra y girarlo con cada cable de señal para pasar de una tabla a otra. Por lo tanto, si tiene 4 líneas presentes (MOSI, MISO, SCK y SS #), ahora tendrá 8 cables. Al utilizar pares trenzados, proporcionará una ruta de retorno de baja inductancia al controlador de esa señal.

En cuanto a si el MAX232 tendrá o no algún efecto adverso depende en gran medida de la forma en que haya colocado la placa y las ubicaciones físicas de esas bombas de carga en relación con el lugar donde se encuentran sus señales SPI.

    
respondido por el M D

Lea otras preguntas en las etiquetas