Question

Mon cerveau est frit, alors j'ai pensé passer celui-ci à la communauté.

Lors de l'envoi de 1 caractère à mon système intégré, il pense toujours qu'il reçoit 2 caractères. Le premier personnage reçu semble mapper au caractère transmis (d'une manière inconnue) et le deuxième caractère reçu est toujours 0xFF.

Voici ce que j'ai 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

J'ai vérifié mes horloges et elles semblent bien. La seule différence entre cette version non fonctionnelle et la version précédente est que j'utilise maintenant une puce RS485.

J'ai tracé le signal jusqu'au MCU et ça a l'air bien (confirmé la valeur du bit sur la broche RX)

Était-ce utile?

La solution

Le premier personnage reçu semble mapper au caractère transmis (d'une manière inconnue)

Dans chaque cas, l'octet TX est décalé à gauche 1 bit puis inversé.

Par exemple:

31 = 00110001 9d = 10011101

0x31 << 1 = 01100010

Le complément de 01100010 est 0x9d

J'ai vérifié quelques autres, semble être le même pour eux tous. Je ne sais pas d'où vient le deuxième octet, mais cela pourrait être le résultat de l'inversion du signal probable qui se passe.

RS485 utilise la signalisation différentielle. Il sent comme si vous avez utilisé la sortie inversée de la puce et branché sur une entrée RS232.

J'ai tracé le signal jusqu'au MCU et ça a l'air bien (confirmé la valeur du bit sur la broche RX)

Quel signal avez-vous utilisé comme référence au sol?

Autres conseils

Le RS485 est très différent de RS232 au niveau électrique (différentiel contre unique et +/- 6V contre + 15 / -3V) - Les deux côtés de votre lien de communication en utilisant le même protocole?

Si c'est RS485, avez-vous correctement "l'état par défaut" de l'ensemble de bus? Que diriez-vous du bon nombre de bits d'arrêt?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top