4 votos

Problemas con Bluetooth y UART en MSP430

Texas instruments ofrece el código fuente de una pila Bluetooth (Serial Port Profile) que fue escrita por Mindtree. Se ejecuta en un microprocesador MSP430 e interactúa con su chip controlador de banda base (es decir, el chip de RF). Utiliza el sistema operativo FreeRTOS. Este software viene en forma de varias demos; la que yo utilicé se llama demo del acelerómetro. Este chipset forma parte de un hardware portátil personalizado que estoy desarrollando. Estoy ejecutando la versión GA1.0 (demo del acelerómetro modificada para que funcione en el hardware personalizado). Estoy tratando simplemente de pasar datos entre Bluetooth SPP y una UART corriendo a 78K. Tengo el modo SNIFF deshabilitado y estoy deshabilitando RTS en la interrupción UART. No se hace ningún procesamiento en la interrupción, aparte de una escritura a un buffer y una toma de semáforo. Tengo una tarea de baja prioridad que maneja el buffer.

Todo lo que necesito que haga el chip es proporcionar un enlace entre el Bluetooth y una UART funcionando a 76K (esta UART se conecta con nuestro procesador DSP). Actualmente, el DSP es el cerebro del hardware y se comunica con un PC GUI a través de USB. Quiero tomar la UART del DSP y reenviarla a través de Bluetooth sin que el DSP sepa o le importe a qué está conectada su UART.

Tal y como está construido ahora mismo, el software se conecta vía bluetooth correctamente y he verificado la transmisión y recepción de datos. A bajas velocidades, esto funciona muy bien. Dado que el DSP siempre está transmitiendo un mensaje de estado a través de su UART, puedo conectar un PC con un dongle bluetooth al hardware, y utilizar Putty (terminal de puerto serie) para ver este mensaje de estado que llega correctamente. Sin embargo, una vez que intento conectarme con la interfaz gráfica de nuestro PC, el tráfico de RX resultante en el bluetooth es tal que el software ya no puede dar servicio a las interrupciones UART del DSP de manera oportuna. Sin Bluetooth RX, estoy recibiendo más de 100 interrupciones UART antes de que mi tarea sea capaz de procesar los datos, incluso con la prioridad de la tarea establecida en la más alta. Me imagino que es una gran magnitud más una vez que los datos RX comienzan a llegar, lo que actualmente nos bloquea. Desafortunadamente, este procesador MSP430 no ofrece DMA para la UART que estamos utilizando, y no ofrece almacenamiento en búfer de hardware.

Mis intentos de arreglar esto siempre han llevado a uno de tres resultados: mi interrupción UART desbordada, la interrupción BT UART desbordada, o mi buffer UART desbordado cuando el Stack no consigue enviar los datos a tiempo. La guía del desarrollador dice que a 18 MHz y 115K, el rendimiento medio de los datos es de 84K, y la utilización media de la CPU es del 10,7%, sin embargo, el software no puede seguir el ritmo de una UART de 78K.

En este momento me temo que la interrupción Bluetooth UART (parte de la pila de Mindtree) está acaparando demasiada CPU para permitir el manejo de cualquier otra interrupción al ritmo que queremos.

¿Alguien ha conseguido integrar la pila Bluetooth de TI/MindTree? Si es así, ¿te has encontrado con los mismos problemas? Básicamente estoy buscando cualquier y todas las sugerencias sobre cómo superar estos problemas.

3 votos

He tenido que leerlo dos veces para entender cuál es realmente su pregunta, e incluso así no estoy seguro.

0 votos

¿Le importaría iluminarnos?

0 votos

@cbursk: tl;dr;

4voto

tumbleweed Puntos 215

Gracias a todos por sus comentarios. TI me ha respondido de la siguiente manera.

"Debido a algo innato en la pila Mindtree, no se puede generar una interrupción en el MSP430 mientras se envían/reciben datos a través de BT. Por lo tanto, verás una limitación en el rendimiento de entrada/salida de la parte. Esto es algo en lo que Mindtree estaba trabajando y sería bueno preguntarles a través de su publicación en el foro E2E ya que el ingeniero de Mindtree "Balaji Jeyaraman" puede ser capaz de decirle si han encontrado una manera de evitar esto o actualizar la pila. Problemas de rendimiento/carga de datos de MSP430BT5190 + CC2560

En la misma línea, TI ha publicado una Wiki (diferente de la de Bluetooth) que se centra sólo en esta "aplicación puente BT". Se puede encontrar aquí: PUENTE UART CC256x MT Hemos visto limitaciones similares y la velocidad de datos que estás obteniendo es un poco más rápida de lo que hemos visto. "

Así que no es la respuesta que buscaba, pero pensé en publicarla aquí para los demás. Gracias.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X