Me gustaría conectar el puerto serie del hardware de mi microcontrolador principal a dos (o más) dispositivos al mismo tiempo. Mi entendimiento es que UART en mis microcontroladores se basa en un TTL de 5 V bajo activo.
(Sé que lo que estoy explicando aquí puede lograrse técnicamente mediante el uso de mejores protocolos como SPI y I 2 C, pero mi proyecto requiere que solo se implemente utilizando UART.)
Aquí hay un gráfico pseudo-esquemático de lo que estoy tratando de lograr:
Tenga en cuenta que:
-
No no quiero utilizar una segunda interfaz UART en el maestro, o cualquiera de los esclavos.
-
Solo un esclavo a la vez transmitirá o enviará los datos de la línea al maestro. (por ejemplo, si el esclavo 1 está transmitiendo datos, el esclavo 2 y 3 deberían permanecer inactivos).
-
Cualquier cosa que el maestro transmita puede y debe ser recibida por todos los esclavos.
-
Cada esclavo debe ser enchufable en caliente, lo que significa que se pueden quitar o insertar en cualquier momento.
-
Los cables RX y TX al maestro son paralelos entre cada esclavo, por lo que no hay conexión en cadena.
Por lo tanto, mis preguntas son las siguientes:
-
Suponiendo que se considera la impedancia correcta, no debería necesitar un circuito adicional para transmitir datos desde la línea TX del maestro a ninguna de las líneas RX del esclavo simultaneamente. ¿Es correcto?
-
Entiendo que sin las resistencias limitantes actuales entre la línea TX de los esclavos y la línea RX del maestro, si alguno de los dispositivos comienza a transmitir datos, la línea Entre los dispositivos habrá cortocircuito y me arriesgo a dañarlos. ¿Es correcto?
-
Suponiendo que los elementos 1 y 2 son correctos:
a) ¿Debería ser suficiente usar solo algunas resistencias limitadoras actuales?
b) ¿Puedo usar puertas lógicas de la serie 74 en lugar de resistencias?
-
Entre las opciones a y b arriba, ¿qué ruta debo elegir?
-
Para una conexión confiable de 115200 baudios , ¿será suficiente la frecuencia de conmutación de un
74HC08
AND compuerta para ser incorporada?
EDITAR: Soy muy consciente de otros protocolos adecuados como SPI y I 2 C. Hay una razón por la que estoy usando UART, y es porque el gestor de arranque optiboot que mi maestro usa se comunica a través de UART, aunque sea UART s obvias limitaciones.
Además, aunque el encadenamiento en margarita es ciertamente un enfoque inteligente, al infringir la regla 4, también rompe la funcionalidad del cargador de arranque Arduino.
Los dispositivos también podrían ser chips USB a serie, y no sería factible usar SPI a USB o I2C a USB en este proyecto.
Por lo tanto, te agradecería si pudieras concentrarte en las 6 preguntas enumeradas aquí y compartir tu conocimiento de UART. :)