我的大脑被炸了,所以我想我会把这个传递给社区。

当向我的嵌入式系统发送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 PIN上的位值)

有帮助吗?

解决方案

第一个收到的角色似乎映射到传输的字符(以某种不相关的方式)

在每种情况下,TX字节左移1位然后倒置。

例如:

31 = 00110001 9D = 10011101

0x31 << 1 = 01100010

01100010的补充为0x9d

我检查了其他几个,似乎对他们来说都是一样的。我不知道第二个字节来自哪里,但这可能是可能发生的信号反转的结果。

RS485使用差分信号传导。闻起来就像您使用了芯片的倒输出,并插入了RS232输入中。

我已经将信号一直追溯到MCU,看起来不错(确认RX PIN上的位值)

您用什么信号用作地面参考?

其他提示

RS485与电气级别的RS232完全不同(差速器与单端和+/- 6V对 +15/-3V) - 使用相同的协议是通信链接的两侧吗?

如果是RS485,您是否正确地设置了总线的“默认状态”?正确数量的停车位怎么样?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top