Domanda

Il mio cervello è fritto, quindi ho pensato di passare questo alla comunità.

Quando si invia 1 carattere al mio sistema incorporato, pensa costantemente che riceva 2 caratteri. Il primo carattere ricevuto sembra mappare sul carattere trasmesso (in un modo sconosciuto) e il secondo carattere ricevuto è sempre 0xFF.

Ecco cosa ho osservato:

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

Ho controllato i miei orologi e loro sembrano andare bene. L'unica differenza tra questa versione non funzionante e la versione precedente è che ora sto usando un chip RS485.

Ho rintracciato il segnale fino all'MCU e sembra a posto (confermato il valore del bit sul pin Rx)

È stato utile?

Soluzione

Il primo personaggio ricevuto sembra mappare al carattere trasmesso (in qualche modo sconosciuto)

In ogni caso il byte TX viene spostato a sinistra 1 bit e poi invertito.

Per esempio:

31 = 00110001 9D = 10011101

0x31 << 1 = 01100010

Il complemento di 01100010 è 0x9d

Ho controllato un paio di altri, sembra essere lo stesso per tutti loro. Non so da dove provenga il secondo byte, ma potrebbe essere il risultato della probabile inversione del segnale che succede.

RS485 utilizza la segnalazione differenziale. Odora di aver usato l'uscita invertita del chip e collegato a un ingresso RS232.

Ho rintracciato il segnale fino all'MCU e sembra a posto (confermato il valore del bit sul pin Rx)

Che segnale hai usato come riferimento a terra?

Altri suggerimenti

RS485 è abbastanza diverso da RS232 a livello elettrico (differenziale contro singolo e terminato e +/- 6V contro +15/-3V)-sono entrambi i lati del collegamento di comunicazione usando lo stesso protocollo?

Se è Rs485, hai lo "stato predefinito" del bus impostato correttamente? Che ne dici del numero corretto di bit di arresto?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top