在做一个项目,一直用ch340的usb转串口线接收51的数据,用串口小助手查看接收的数据一切正常。后来听说ft232比较稳定,于是买了条ft232的usb转串口线,结果用串口小助手接收到的数据却是错的。为什么呢?
另外,偶然间发现,本来在电脑端选择无检验是错误的数据,在选择了奇校验或偶校验之后,数据竟然就是对的了,不过中间多出了若干个3F,并且这3F是随机的。
由于我的单片机是多机通信,程序上是没开校验位的,TB跟RB用来区别地址和数据,会不会跟这个有关呢?那我的程序该怎么改呢?
ps:附上数据
ft232 无校验位:FF 05 62 28 D0 40 80 BD 01 05 0A 08 10 40 40 74 00 76 09 FC 63 62
ft232 偶检验位:FF 01 0C 01 03 00 BD 01 01 01 00 00 03 E8 00 3F 3F BB 02 3F 63 62
FF 3F 01 0C 01 03 00 BD 01 01 01 00 00 03 E8 00 3F 3F BB 02 3F 63 62
ft232 奇校验位:FF 01 0C 01 03 00 BD 01 01 01 00 00 03 E8 00 BB 02 63 3F 3F 62
ch340 无检验位:FF 01 0C 01 03 00 BD 01 01 01 00 00 03 E8 00 BB 02 63 62
试验发现:用ch340的时候,无校验、奇校验、偶校验结果是一样的,是我程序写的内容。用ft232奇偶校验会在不定的地方多出3F 去掉3F就跟我原来结果一样了。无检验位的信息是错误的。另外,63 62是我对电脑、和从单片机的呼叫,也就是地址帧。而以上内容是主机(单片机)回应62(从单片机)的请求,发送给从单片机的信息。回应63(电脑)的请求的信息也是同理。
上面的试验,全部都是单片机转max232再插usb转串口线的,也试过直接单片机连接ft232的电路,传出的数据也是一样的。
怎么才能使ft232收发正常,求大神解答。。。 |