我有两个USB
串行适配器连接到运行ARM
的基于Linux
的{{1}}框。一个适配器是Debian
,显示为PL2303HX
。第二个是/dev/ttyUSB0
,显示为CP210X
。出于测试目的,它们彼此连接(/dev/ttyUSB1
)。两者都设置为RX -> TX, TX -> RX, GND -> GND
9600
,没有奇偶校验,1个停止位(8 bits
),没有硬件流控制,没有软件流控制。 “9600 N81
”显示两个串行端口的完全相同的标志。
我将数据从一方发送到另一方,但我没有收到与我发送的数据相同的数据。无论数据流方向如何,行为都是相同的。我写了一个快速程序,它发送位,从右向左移动它们,只是为了理解数据发生了什么。
这是我发送的数据,以及另一方收到的数据:
stty -aF /dev/ttyUSBx
这是二进制文件。左边,我送的。右边,收到了什么:
-> Send 01 <- Receive 7F
-> Send 02 <- Receive 3F
-> Send 04 <- Receive 1F
-> Send 08 <- Receive 0F
-> Send 10 <- Receive 07
-> Send 20 <- Receive 03
-> Send 40 <- Receive 01
-> Send 80 <- Receive 00
这是我编写的非常简单的代码(用PHP编写以保持简单):
https://gist.github.com/skaag/5676769
看起来芯片上正在发生某种翻译,但我不知道为什么或如何修改它。
要澄清几点:
任何人都知道这里发生了什么?我该如何解决这个问题?