¿Qué errores pueden causar que usart (o irda tx-rx) se corrompa después de 2-3 bytes de la transmisión correcta?

0

Tengo una placa con 3 interfaces IrDA y un controlador ATXMega128A1U. Dos IrDA funcionan a la perfección, pero el tercero confunde los bytes recibidos después de la transmisión correcta de 2 o 3 bytes. Los módulos IrDA son TFDU4301 y MCP2120. La comunicación se establece en 115200bps. (Déjame mostrar un simple volcado:

00C▒v[Y▒▒veH▒▒00ac▒

Esto debería contener solo caracteres visualizables.

Cuando desconecto el MCP2120 de la MCU, el MCP2120 transmite correctamente. Cuando envío algo a la MCU (desconectado de MCP2120 pero con el mismo pin), también recibe todo. Pero si los conecto juntos, el 3º y 4º bytes de una serie se convierten en incorrectos.

¿Alguien tiene una idea? ¿Qué debo verificar? ¡Muchas gracias!

Mi código de inicio:

#define USART_BAY2  &USARTD1
void uart_init_d1(long baudrate){

usart_rs232_options_t options = {
    .baudrate = baudrate,
    .charlength = USART_CHSIZE_8BIT_gc,
    .paritytype = USART_PMODE_DISABLED_gc,
    .stopbits = 0 // 0=>1 stop bit
};

PORTD.DIRCLR   = PIN6_bm;   // (RXD1) input
PORTD.DIRSET   = PIN7_bm;   // (TXD1) output

sysclk_enable_module(SYSCLK_PORT_D, PR_USART1_bm);
usart_init_rs232(USART_BAY2, &options);
delay_ms(10);
}
    
pregunta Drotos

0 respuestas

Lea otras preguntas en las etiquetas