Tengo un µController PIC16F877, conectado vía SPI a un MCP23S17 y el último conectado a una botonera y pantalla LCD, la distancia entre el µController y el circuito integrado del MCP es de 5m. Mi pregunta es ¿funcionará o no? Y si no funciona como puedo solucionar este problema. ¿Hay alguna solución (como un circuito integrado o un truco)?
En una respuesta en un foro de Microchip , Jan Axelson, autor de 'Serial Port Complete', reclama una longitud máxima de cable de 10' para el bus SPI. Otras publicaciones han mencionado la misma figura. Entonces, su distancia de 5 m puede funcionar o no, ya que es un poco más larga.
Otra respuesta en el mismo foro recomienda usar resistencias de terminación de 120 ohmios en las líneas.
Hay varias recomendaciones en la discusión de este tema que dicen que un factor importante es reducir la velocidad del reloj, hasta tan solo 100 kHz. Luego mire sus señales con un osciloscopio.
Una forma de aumentar la distancia mucho más allá de sus requisitos es usar aisladores digitales y controladores de par trenzado como se explica en este artículo: "Extensión del bus SPI para comunicación de larga distancia" . Afirma una distancia de 100 m (no es un error tipográfico).
Puede usar controladores y receptores LVDS para convertir las señales lógicas de un solo extremo en señales diferenciales. Es más confiable para una configuración de una sola caída (desde la placa hasta la placa externa solamente), y requiere que las conexiones a tierra estén cerca entre sí en potencial.
Use pares trenzados (por ejemplo, cable Cat5) y asegúrese de usar las terminaciones adecuadas o no funcionará de manera confiable, en todo caso.
Es posible traducir los datos entre los módulos mediante el uso de controladores de receptor trans, por ejemplo. RS485 algo como esto
Necesita usar un par de este receptor trans, la idea es solo para ilustración, puede usar cualquier controlador trans que incluya controladores duales y se adapte mejor a sus necesidades
KyranF
Samuel
Nick Alexeev
KyranF
KyranF
Nick Alexeev
KyranF
Nick Alexeev
KyranF
Nick Alexeev