¿Cómo puedo aumentar la cantidad de UART de hardware en un diseño con un solo UART MCU?

5

Estoy utilizando una MCU TI CC430 porque contiene una interfaz de radio CC1101 incorporada. Realmente me gustaría seguir con este MCU. Sin embargo, necesito interactuar simultáneamente con una radio serial separada, un FTDI (uart- > USB) y un GPS RS232. Por lo tanto, sería bueno tener 3 UARTS separados en la MCU.

¿Cuáles son mis opciones para aumentar la cantidad de UART? He considerado agregar un CPLD y muxear el único UART a 3 salidas, pero realmente no me gusta ese enfoque porque no es realmente 3 conexiones simultáneas.

    
pregunta CodePoet

3 respuestas

8

Puedes agregar un UART adicional sobre SPI o I2C. Estos tienen búferes FIFO internos dentro de ellos, por lo que los verifica periódicamente para ver su contenido y les permite manejar algunos búferes. NXP, TI, Maxim probablemente ofrezcan estas piezas. MAX3100, SC16IS752, etc. También podría agregar una segunda MCU para hacer esto, pero como ya está usando un microcontrolador bastante simple con 1 UART y desea atenerse a eso, parece excesivo.

También puede usar un multiplexor para elegir entre el UART con el que se hablará. Pero como los datos combinados se transmiten simultáneamente, no funcionará.

La serie de software podría ser su última opción, pero puede ser muy molesto tratar si su microcontrolador está haciendo otras cosas también.

    
respondido por el Hans
2

Si tiene los pines disponibles, puede "explotar", o hacer "Serie de software".

Aquí es donde se programa la MCU para emular una conexión en serie utilizando líneas GPIO simples.

El código es crítico de tiempo, por lo que se debe tener cuidado al escribirlo. Hay varios tutoriales en línea sobre cómo escribirlo, pero no es algo que haya probado en un chip MSP430, por lo que no conozco los entresijos del mismo.

La otra opción sería utilizar un dispositivo serie externo que se conecte a la MCU a través de algún otro sistema, como SPI o I²C. No sé qué hay disponible en este frente, ¿tal vez otra MCU que funciona como dispositivo esclavo SPI haría el trabajo?

    
respondido por el Majenko
2

Es posible que la versión paralela del chip FTDI sea más útil incluso si tiene que usar registros de desplazamiento o un CPLD para reducir sus requisitos de E / S. En una de mis aplicaciones, usé un CPLD para conectar un chip FTDI y algunas otras cosas a un bus de 3 hilos (clk, mcu-data-out y mcu-data-in). Todos los cables están bajos cuando está inactivo. Dos flancos ascendentes en mcu-data-out mientras el reloj está bajo restablecerán el bus. Cuando clk es bajo y los datos son bajos, mcu-data-in indicará si hay algo que necesite la atención de la CPU. Cuando clk es bajo y mcu-data es alto, mcu-data-in indicará si la última operación fue exitosa. Cuando clk es alto, mcu-data-in proporcionará los datos como espera un tranceiver SPI.

Una de las ventajas de usar la versión paralela del chip FTDI de esta manera es que puede hacer que su CPU se active cuando los datos estén disponibles y luego leerlos rápidamente. Con la versión en serie del chip FTDI, debe estar listo para recibir datos cada vez que se valora CTS, pero no descubrirá que los datos están disponibles cuando se anula la reclamación de CTS. Me pregunto de qué oído tendría que susurrar en FTDI para hacer que agreguen tal característica a la versión en serie de su chip, o si no, agregar un modo similar al modo de tres hilos.

    
respondido por el supercat

Lea otras preguntas en las etiquetas