MSP430 Bluetooth interfiere con el módulo USB

1

Tengo un proyecto simple que básicamente envía y recibe datos a través de una conexión USB y Bluetooth. Tanto el módulo USB como el módulo BT comparten los mismos puertos UART RX (P1.2) y TX (P1.1).

El problema que tengo es que cuando el bluetooth está encendido, no puedo enviar comandos al MSP430 con el módulo USB. Si desconecto el módulo BT, puedo enviarlo bien a través de USB.

¿Los estoy conectando incorrectamente o necesito desactivar el BT cuando uso un USB?

El módulo USB está basado en FT232R: enlace

El módulo BT se basa en RN-42: enlace

Conexiones USB:

  • GND - > GND
  • CTS - > GND
  • 3V3 - > N / C
  • TXD - > P1.1
  • RXD - > P1.2
  • DTR - > N / C

Conexiones BT:

  • CTS-I - > N / C
  • VCC - > 3.3V
  • GND - > GND
  • TX-D - > P1.1
  • RX-I - > P1.2
  • RTS-D - > N / C
pregunta user2218339

3 respuestas

2

El Arduino tiene el mismo problema, y han implementado una solución hace mucho tiempo.

Como se puede ver en la imagen, los resistores RN4B y RN4A son resistores de la serie 1k entre el USB-Serial ic y el Arduino's ATMega328p. Esto permite que un dispositivo conectado directamente a los encabezados de Arduino, como un escudo / boosterpack, se comunique con el Arduino sin interferencias del USB-Serial IC.

Quieres implementar lo mismo. Coloque resistencias de 1 k entre su MSP430 y su módulo Bluetooth. Esto significará que la conexión USB-Serial tiene prioridad sobre el módulo Bluetooth. Cualquier comunicación entre el USB-Serial y el MSP430 no será interferida por el módulo Bluetooth. Dicho esto, no puede enviar / recibir desde el módulo Bluetooth cuando la conexión USB-Serial está conectada.

Actualización: aunque no siempre funcione. Algunos dispositivos, cuando no hay señal de usb en un lado, convertirán el tx / rx en entradas flotantes / abiertas, en lugar de conducir la línea, lo que es bueno, pero otros, cuando están apagados, pueden desviar la energía mediante diodos de sujeción en los pines gpio . Puede ser un dolor porque esto significa que intentan conducir la línea, evitando que otros lo hagan. En su caso, podría necesitar un multiplexor bidireccional, o más simple, si la serie usb solo se usa ocasionalmente, puede agregar Un puente a la linea. Enchufe el puente cuando necesite usar la conexión USB, elimínelo cuando no lo haga.

    
respondido por el Passerby
1

Tanto el USB como el BT comparten los mismos pines GPIO, use diferentes para cada módulo. Supongo que solo tiene un UART, por lo que requerirá un poco de lógica o software adicional.

    
respondido por el Lior Bilia
1

Los estás conectando incorrectamente.

El módulo Bluetooth y el convertidor de USB a serie (lo llamaré FTDI para abreviar) comparten los mismos pines UART. Están conectados en paralelo a la misma UART.

  • Cuando envía datos en UART TX, ¿cómo lo sabría BT y no el FTDI debería transmitir?
  • Es aún peor con UART RX. Cuando BT no está enviando datos al MSP430, aún mantiene baja la línea UART RX, no desaparece de la imagen. FTDI no puede conducir la línea UART RX en esta condición. Cuando conectas el módulo BT y pierdes la capacidad de enviar comandos a través de FTDI, eso es lo que está pasando.

Por lo general, habría UART separados para Bluetooth y FTDI.
Alternativamente, puede agregar un multiplexor a su esquema para que el UART del microcontrolador "vea" solo un dispositivo a la vez.

    
respondido por el Nick Alexeev

Lea otras preguntas en las etiquetas