Lo siento si esto parece una pregunta estúpida, pero estoy diseñando una PCB personalizada basada en el microcontrolador STM32F303RE y estoy un poco confundido sobre cómo se debe conectar el UART en el hardware para comunicarse a través de serie a través de USB.
Tengo un conector microUSB a bordo, ¿deberían conectarse los pines UART directamente a este conector? ¿O necesito usar los pines USB en el STM32 y configurar el microcontrolador como un dispositivo USB y conectar el UART a estos pines de alguna manera (o no usarlos en absoluto)?
Comencé con una placa Nucleo para el desarrollo y puedo comunicarme a través de UART allí (usando las funciones HAL UART), pero mirar el esquema es confuso debido al ST-LINK integrado. Por lo que puedo ver, la señal UART del STM32 se pasa a los pines UART de la MCU ST-LINK y los pines USB de la MCU ST-LINK están conectados al puerto MicroUSB, pero no estoy seguro de cómo los datos se traspasa? ¿Está de hecho utilizando las funciones USB HAL para convertir los datos UART recibidos?
No puede conectar el UART Rx/Tx directamente a las señales DP/DN en el conector USB.
Básicamente tienes dos opciones:
Agregue software a su aplicación para usar el periférico USB en su STM32 para implementar un puerto COM virtual. ST tiene algunos proyectos de ejemplo para esto, por lo que no es terriblemente difícil, pero probablemente llevará algo de tiempo implementarlo. Creo que hay un software de ejemplo aquí: https://www.st.com/en/embedded-software/stsw-stm32121.html . En este caso, conectaría los pines USB del STM32 al conector USB.
Puede comprar un chip para proporcionar un puente de USB a UART. FTDI hace varias versiones de esto, como esta: https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT230X.pdf
Esto requiere un chip adicional, pero probablemente sea la opción más fácil para que funcione. En este caso, conectaría los pines UART a los pines Rx/Tx del chip FTDI y luego conectaría el par USB en el chip FTDI al conector USB.
Supongo que también hay una opción 3. Podría comprar un cable USB a TTL UART y conectarlo a su placa, en lugar de colocar el conector USB en su placa, si desea ser lo más simple posible tanto con el software como con el diseño de PCB. Conjuntos de cables FTDI: https://www.ftdichip.com/Products/Cables/USBTTLSerial.htm .
Los periféricos UART y USB son entidades completamente separadas.
Si desea un UART simple, generalmente puede dividir los pines TX, RX y GND en un conector y luego conectarlos a un dispositivo habilitado para UART apropiado. Debe configurar ambos dispositivos para que coincidan, en cuanto a velocidad (velocidad en baudios), tipo de paridad, número de bits de parada, etc.
Si quieres que tu proyecto se convierta en un dispositivo USB es más complicado. Además de las pautas de hardware bastante estrictas, deberá manejar todas las cosas del protocolo USB "bajo el capó". ST pone a disposición una biblioteca de dispositivos USB, que se puede encontrar aquí . Se necesita un poco de aprendizaje.
Una tercera opción es usar un convertidor de USB a UART. En este caso, el convertidor maneja todos los requisitos del protocolo USB y UART. Toma UART simple de su microcontrolador y lo canaliza a un host USB a través de un cable USB. Puede incorporar un circuito en su placa para manejar la conversión, o puede comprar un convertidor externo que otra persona ya haya diseñado.
Un ejemplo de un convertidor USB-Serie interno sería un FT232H . Debería agregarlo y su circuito de soporte a su diseño:
Un ejemplo de un cable convertidor prefabricado estaría aquí . En este caso, lo conecta a un puerto USB (quizás en una PC) y conecta el otro extremo a los pines UART en su dispositivo:
Estos son solo ejemplos. Hay muchos convertidores, tanto internos como externos, para elegir.
Por cierto, no conecte simplemente las señales UART a un conector USB. No solo no funcionará, sino que los diferentes niveles de voltaje pueden destruir su dispositivo y/o el dispositivo remoto.
Eugenio Sh.
Tony Estuardo EE75
chris stratton
Tony Estuardo EE75
bitsmack
sophia_ash