我的大脑被炸了,所以我想我会把这个传给社区。 p>
当我向嵌入式系统发送1个字符时,它始终认为它接收2个字符。第一个接收的字符似乎映射到传输的字符(以某种未知的方式),第二个接收的字符总是0xff。
这是我观察到的:
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
我检查了我的时钟,它们似乎没问题。这个非工作版本和之前版本的唯一区别是我现在使用的是RS485芯片。
我已将信号一直跟踪到MCU,看起来很好(确认了RX引脚上的位值)
答案 0 :(得分:9)
第一个收到的角色似乎 映射到传输的角色(in 一些未知的方式)
在每种情况下,TX字节向左移位1位然后反转。
例如:
31 = 00110001 9D = 10011101
0x31<< 1 = 01100010
01100010的补码是0x9D
我检查了其他几个人,看起来对他们来说都是一样的。我不知道第二个字节的来源,但可能是信号反转可能发生的结果。
RS485使用差分信令。它闻起来就像你使用芯片的反相输出并插入RS232输入。
我一路跟踪信号 直到MCU,它看起来很好 (确认rx上的位值 销)
您使用什么信号作为参考地?
答案 1 :(得分:1)
RS485在电气水平上与RS232完全不同(差分与单端和+/- 6V与+ 15 / -3V) - 使用相同协议的通信链路的两侧是什么?
答案 2 :(得分:1)
如果是RS485,您是否正确设置了总线设置的“默认状态”?正确的停止位数如何?