distorsión de la señal UART con AVR

2

Al evaluar la placa Libelium Waspmote para redes de sensores inalámbricos, descubrimos un problema de comunicación extraño.

Intentamos establecer un enlace entre waspmote y otra placa a través de UART en 115200 Baud usando 8N1.

Esta es la forma de onda resultante en Tx para enviar 9 veces 0x55 (01010101b):

Losnivelesdealtaybajadegeneraciónaltriplededetección:comenzandoconunnivelaltode3.3V,lospicossereducenaaproximadamente2.7Vylosmínimoscomienzanaaproximadamente1.1Vycaena0.7V./p>

Deacuerdoconlaespecificacióndelostablerosdedestino,lospicosdebenser>2.3Vylosmínimos<1Vparaelcorrectofuncionamiento.

Meparecequesurgeuncomportamientocapacitivo,peronotengoideadeporquésucedeesto.

Necesitounapistasobreloqueestásucediendo,loqueestoyhaciendomaloloquepuedohacerparasolucionaresteproblema.

Algunainformaciónadicional:

  • ElmicrocontroladorenelwaspmoteesunAtmega1281,ysuspinesdeuartestánconectadosdirectamentealenlacedecomunicación(nohaycontroladoresentreellos).
  • Nopuedoreducirlavelocidadenbaudiosyaquelaplacadedestinosoloacepta115200baudios.

ACTUALIZACIÓN1

Hiceunafotodedetalledelaseñal.Estamosviendounatransmisiónaaproximadamente125kHz,quepareceestarunpocolejosdelos115200baudiosdeseadosalosqueapunto.

ACTUALIZACIÓN 2

Mido formas de onda idénticas cuando desconecto la placa traget y coloco la sonda de osciloscopios directamente en los microcontroladores UART-Pin. Esto parece descartar problemas con el tablero objetivo. Sin embargo, la velocidad en baudios medida es exactamente 125000, que es un error de alrededor del 8% de la velocidad en baudios deseada de 115200. Ya que la especificación de UARTs limita el sesgo de velocidad en baudios al 2%, supongo que hay un problema. Sin embargo, como el tablero waspmote está bloqueado a una velocidad de reloj de 8 MHz, el Atmega1281 en el tablero no puede producir un reloj de 115200 baudios más preciso a través de los registros del prescaler (verifiqué el manual). Supongo que necesitaré otra tabla para comunicarme con mi tabla objetivo.

Gracias a todos.

    
pregunta sum1stolemyname

2 respuestas

5

Su problema es probable al usar la velocidad de transmisión incorrecta: 112500 es probablemente un error, la tasa 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 podría no estar produciendo la velocidad de transmisión programada en un extremo o en el otro debido a la granularidad del divisor; a veces puede ayudar cambiar el sobremuestreo del UART. EDITAR: Específicamente, un valor de 8 (divisor de 9) le dará 111111 baudios desde 8MHz si establece el bit de modo de "doble velocidad".

En segundo lugar, tiene un problema, como la falta de una conexión a tierra común entre las placas, o no se las ha conectado a tierra, lo que resulta en 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 se encuentran en los niveles RS232 y se invierten lógicamente de las señales de nivel lógico, aunque hay excepciones.

    
respondido por el Chris Stratton
3

Como usted dice, la señal parece estar acoplada de manera capacitiva, si es así, tiene un sentido relativamente bueno de lo que ve. A menos que el alcance esté acoplado capacitivamente y te muestre los efectos de eso.

Una posibilidad razonable:

La guía técnica de WaspMote informa que tiene 4 UARTS -
 cualquiera de los cuales puede ser seleccionado por un multiplexor suministrado.

De hecho, si desea ver el UART que lo está utilizando, DEBE ser seleccionado por el multiplexor :-) !!!

En la sección 2.5, página 16, se describen los pinouts de UART y mux, y 2.5.4 en la página 18 se refiere al control de mux del software.

Si no seleccionó correctamente el UART, puede estar acoplando informalmente de manera capacitiva. ¿Ha seleccionado el multiplexor correctamente?

Alguna posibilidad:

Una vez que esté seguro de cuál debería ser la ruta de conexión de CC, puede verificarlo.

  • Apague 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 debe ser resistiva de CC.

    ¿Lo es?

  • Mida la continuidad del terreno desde el pin de tierra del procesador hasta la tierra del procesador Waspmote.

    Obviamente, estos deben ser DC continuos.

Vale la pena ir:

Decida si hay un punto en el cct de TX que esté tan cerca del punto de origen de la señal que pueda conectarse a tierra o tirarse hacia abajo con una resistencia de valor pequeño. También tal vez sacó a la oferta. Si es así, hazlo y observa si el nivel de CC permanece y no solo causa una excursión acoplada capacitivamente.

Estar desesperado

Es un controlador sin alimentación, de modo que la excursión de la señal lo alimenta, pero luego el suministro comienza a decaer bajo carga.

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas