Al evaluar la placa Libelium Waspmote para redes de sensores inalámbricos, descubrimos un extraño problema de comunicación.
Intentamos configurar un enlace entre waspmote y otra placa a través de UART a 115200 baudios usando 8N1.
Esta es la forma de onda resultante en Tx para enviar 9 veces 0x55 (01010101b):
Los niveles de alto y bajo degeneran hasta el umbral de detección: comenzando con un nivel alto de 3,3 V, los picos caen a aproximadamente 2,7 V y los mínimos comienzan a aproximadamente 1,1 V y caen a 0,7 V.
De acuerdo con la especificación de las tarjetas de destino, los picos deben ser > 2,3 V y los mínimos < 1 V para un funcionamiento correcto.
Me parece que surge algún comportamiento capacitivo, pero no tengo idea de por qué sucede esto.
Necesito una pista sobre lo que está sucediendo, lo que estoy haciendo mal o lo que puedo hacer para solucionar este problema.
Alguna información adicional:
ACTUALIZAR 1
Hice una toma de detalle de la señal. Estamos viendo una transmisión de aproximadamente 125 kHz, lo que parece estar un poco lejos de los 115200 baudios deseados a los que apunto.
ACTUALIZAR 2
Mido formas de onda idénticas cuando desconecto la placa objetivo y coloco la sonda del osciloscopio directamente en el UART-Pin del microcontrolador. Esto parece descartar problemas con el tablero de destino. Sin embargo, la tasa de baudios medida es exactamente 125000, que es un error de alrededor del 8% de la tasa de baudios objetivo deseada de 115200. Dado que la especificación de UART limita el sesgo de la tasa de baudios al 2%, supongo que ese es mi problema. Sin embargo, dado que la placa waspmote está bloqueada a una velocidad de reloj de 8Mhz, el Atmega1281 de la placa no puede producir un reloj de 115200 baudios más preciso a través de los registros del preescalador (revisé el manual). Supongo que necesitaré otra placa para comunicarme con mi placa de destino.
Gracias a todos.
Es probable que su problema sea el uso de la velocidad en baudios incorrecta: 112500 es probablemente un error, la velocidad estándar en ese rango es 115200 (una búsqueda en el sitio web del fabricante para este número encuentra muchos resultados, pero ninguno para 112500). También es posible que no esté produciendo la velocidad de transmisión programada en un extremo o en el otro debido a la granularidad del divisor; a veces, cambiar el sobremuestreo del UART puede ayudar. EDITAR: Específicamente, un valor de 8 (divisor de 9) le dará 111111 baudios de 8 MHz si configura el bit de modo de "velocidad doble".
En segundo lugar, tiene un problema, como la falta de una conexión a tierra común entre las placas, o no ha conectado a tierra el osciloscopio, lo que da como resultado una forma de onda distorsionada. Aún no está claro si eso es lo que ve el receptor, o si es simplemente un error de medición al aplicar el alcance.
Además, ¿ha verificado que la placa externa sin nombre también se ejecuta sin un traductor de nivel de serie? La mayoría de las comunicaciones en serie entre placas modulares se encuentran en niveles RS232 y lógicamente invertidas de las señales de nivel lógico, aunque hay excepciones.
Como usted dice, la señal parece estar acoplada capacitivamente; si es así, tiene un sentido relativamente bueno de lo que ve. A menos que el alcance esté acoplado capacitivamente y le muestre los efectos de eso.
Una posibilidad razonable:
La guía técnica de WaspMote informa que tiene 4 UART,
cualquiera de los cuales puede ser seleccionado por un multiplexor suministrado.
De hecho, si desea ver el UART que está utilizando, ¡DEBE ser seleccionado por el multiplexor :-)!
La sección 2.5, página 16, analiza los pinouts de mux y UART, y la sección 2.5.4, en la página 18, trata sobre el control mux de software.
Si no estaba seleccionando correctamente el UART, es posible que se esté acoplando capacitivamente de manera informal. ¿Ha seleccionado correctamente el multiplexor?
Alguna posibilidad:
Una vez que esté seguro de cuál debe ser la ruta de conexión de CC, puede verificarla.
Desconecte la alimentación de todos los sistemas. Mida la continuidad de CC de extremo a extremo en la línea de señal a lo largo de la ruta más larga que debería ser resistiva de CC.
¿Lo es?
Mida la continuidad de tierra desde el pin de tierra del procesador hasta la tierra del procesador Waspmote.
Obviamente, estos deberían ser CC continuos.
Vale la pena ir:
Decida si hay un punto en el cct de TX tan cerca del punto de origen de la señal que pueda conectarse a tierra o desconectarse con una resistencia de valor pequeño. También tal vez tirado para suministrar. Si es así, hágalo y vea si el nivel de CC permanece y no solo causa una excursión acoplada capacitivamente.
desesperarse
¿Está un controlador sin alimentación, por lo que la excursión de la señal lo alimenta pero el suministro comienza a decaer bajo carga?
Majenko
Russel McMahon
kenny
Russel McMahon
olin lathrop
chris stratton