MSP430 Problemas con Bluetooth y UART

Texas Instruments ofrece código fuente para una pila de Bluetooth (perfil de puerto serie) que fue escrito por Mindtree. Funciona con un microprocesador MSP430 e interactúa con su chip controlador de banda base (es decir, el chip RF). Esto utiliza el sistema operativo FreeRTOS. Este software viene en forma de varias demostraciones; el que usé se llama demostración del acelerómetro. Este conjunto de chips es parte del hardware portátil personalizado que estoy desarrollando. Estoy ejecutando la versión GA1.0 (demostración del acelerómetro modificado para trabajar en el hardware personalizado). Estoy tratando simplemente de pasar datos entre Bluetooth SPP y un UART que se ejecuta a 78K. Tengo el modo SNIFF deshabilitado y estoy deshabilitando RTS en la interrupción de UART. No se realiza ningún procesamiento en la interrupción, aparte de una escritura en un búfer y una toma de semáforo. Tengo una tarea de baja prioridad que maneja el almacenamiento en búfer.

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

Tal como está construido en este momento, el software se conecta a través de bluetooth correctamente y he verificado la transmisión y recepción de datos. A tasas bajas, esto funciona muy bien. Dado que el DSP siempre transmite un mensaje de estado a través de su UART, puedo conectar una PC con un dongle bluetooth al hardware y usar Putty (terminal de puerto serie) para ver cómo este mensaje de estado se transmite correctamente. Sin embargo, una vez que intento conectarme con la GUI de nuestra PC, el tráfico RX resultante en el bluetooth es tal que el software ya no puede atender las interrupciones del DSP UART de manera oportuna. Sin Bluetooth RX, recibo más de 100 interrupciones UART antes de que mi tarea pueda 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 ingresar, lo que actualmente nos bloquea. Desafortunadamente,

Mis intentos de arreglar esto siempre han llevado a uno de tres resultados: mi desbordamiento de interrupción de UART, el desbordamiento de interrupción de BT UART o el desbordamiento de mi búfer de UART cuando la pila no puede enviar los datos a tiempo. La guía para desarrolladores dice que a 18 MHz y 115 K, el rendimiento de datos promedio es de 84 K y la utilización promedio de la CPU es del 10,7 %; sin embargo, el software no puede mantenerse al día con un UART de 78 K.

En este punto, mi temor es que la interrupción UART de Bluetooth (parte de la pila de Mindtree) esté acaparando demasiada CPU para permitir el manejo de cualquier otra interrupción a la velocidad que queremos.

¿Alguien ha tenido éxito al integrar la pila Bluetooth de TI/MindTree? Si es así, ¿te encontraste con estos mismos problemas? Básicamente estoy buscando todas y cada una de las sugerencias sobre cómo superar estos problemas.

Tuve que leerlo dos veces para entender cuál es tu pregunta real, y aun así no estoy seguro.
¿Te importaría iluminarnos?
@cbursk: tl;dr;
lo siento, han pasado algunas noches en esto. Edité mi presentación original para agregar una pregunta más específica. Solo espero que alguien aquí haya encontrado los mismos obstáculos que yo y haya tenido sugerencias.
Puede ser útil si nos informa qué chip msp430 está utilizando, ya que existe una diferencia entre USART y USCI.
MSP430BT5190 + CC2560
Estoy tratando de comprender mejor lo que está sucediendo. Por lo que puedo entender de su pregunta, el DSP se conecta al mps430 a través de UART y el MSP430 se conecta a la radio (bluetooth) y de la radio a la PC . ¿Es esto correcto? ¿Y está diciendo que el msp430 no puede seguir el ritmo de los datos que desea transmitir? Si ese es el caso, creo que estás en el camino correcto de que algo se está desbordando y no encaja bien. Por cierto, ¿por qué no puede usar DMA? De la hoja de datos, debe tenerla disponible para este propósito.

Respuestas (1)

Gracias por los comentarios de todos. Recibí una respuesta de TI con la siguiente respuesta con respecto a este problema.

"Debido a algo innato en la pila de Mindtree, no puede generar una interrupción en el MSP430 mientras se envían/reciben datos a través de BT. Por lo tanto, verá una limitación en el rendimiento de entrada/salida de la pieza. Esto es algo 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 decirle si han encontrado una forma de solucionar esto o si actualizaron la pila . /problemas de carga

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

Así que no es la respuesta que estaba buscando, pero pensé en publicarla aquí para otros. Gracias.