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:
- cada vez, el maestro muestra un valor recibido diferente a pesar de que el esclavo está enviando un valor constante de 0x11.
- 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.
- Reduje la velocidad del reloj SPI.
- Puse un capacitor de 470µF a través de Vcc y GND para eliminar el ruido de la fuente de alimentación.
- 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?