Pregunta

Mi cerebro está frito, así que pensé que pasaría este a la comunidad.

Al enviar 1 carácter a mi sistema integrado, cree constantemente que recibe 2 caracteres. El primer personaje recibido parece asignar al carácter transmitido (de alguna manera desconocida) y el segundo personaje recibido es siempre 0xff.

Esto es lo que observé:

Tx char (in hex)    Rx character (in hex), I left out the second byte (always ff)
31                    9D
32                    9B
33                    99
61                    3D
62                    3B
63                    39
64                    37
65                    35
41                    7D
42                    7B
43                    79

He revisado mis relojes y ellos parecen estar bien. La única diferencia entre esta versión no laboral y la versión anterior es que ahora estoy usando un chip RS485.

He rastreado la señal hasta el MCU y se ve bien (confirmé el valor de bit en el pin RX)

¿Fue útil?

Solución

El primer personaje recibido parece asignar al carácter transmitido (de alguna manera desconocida)

En cada caso, el byte TX se desplaza a la izquierda 1 bit y luego se invierte.

Por ejemplo:

31 = 00110001 9d = 10011101

0x31 << 1 = 01100010

El complemento de 01100010 es 0x9d

Revisé un par de otros, parece ser lo mismo para todos ellos. No sé de dónde viene el segundo byte, pero podría ser el resultado de la probable inversión de señal que está sucediendo.

RS485 utiliza señalización diferencial. Huele como si usara la salida invertida del chip y se conectó a una entrada RS232.

He rastreado la señal hasta el MCU y se ve bien (confirmé el valor de bit en el pin RX)

¿Qué señal usaste como referencia de tierra?

Otros consejos

RS485 es bastante diferente de RS232 en el nivel eléctrico (diferencial versus un solo final y +/- 6V versus +15/-3v)-¿Son ambos lados de su enlace de comunicación usando el mismo protocolo?

Si es RS485, ¿tiene el "estado predeterminado" del bus establecido correctamente? ¿Qué tal el número correcto de bits de parada?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top