Pergunta

Meu cérebro está frito, então pensei em passar por isso para a comunidade.

Ao enviar 1 caractere para o meu sistema incorporado, ele pensa consistentemente que recebe 2 caracteres. O primeiro personagem recebido parece mapear o caractere transmitido (de alguma maneira desconhecida) e o segundo caractere recebido é sempre 0xFF.

Aqui está o que eu observei:

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

Eu verifiquei meus relógios e eles parecem estar bem. A única diferença entre esta versão não funcional e a versão anterior é que agora estou usando um chip RS485.

Eu rastreei o sinal até o MCU e parece bom (confirmou o valor do bit no pino RX)

Foi útil?

Solução

O primeiro personagem recebido parece mapear para o personagem transmitido (de alguma maneira desconhecida)

Em cada caso, o byte TX é deslocado para a esquerda 1 bit e depois invertido.

Por exemplo:

31 = 00110001 9D = 10011101

0x31 << 1 = 01100010

O complemento de 01100010 é 0x9D

Eu verifiquei alguns dos outros, parecem ser os mesmos para todos eles. Não sei de onde vem o segundo byte, mas pode ser resultado da provável inversão de sinal que está acontecendo.

O RS485 usa sinalização diferencial. Ele cheira como você usou a saída invertida do chip e conectado a uma entrada RS232.

Eu rastreei o sinal até o MCU e parece bom (confirmou o valor do bit no pino RX)

Que sinal você usou como referência do solo?

Outras dicas

O RS485 é bem diferente de Rs232 no nível elétrico (diferencial versus termos únicos e +/- 6V versus +15/-3V)-são ambos os lados do seu link de comunicação usando o mesmo protocolo?

Se for RS485, você recebeu o "estado padrão" do conjunto de ônibus corretamente? E o número correto de bits de parada?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top