1.485底层协议辨识
黄色是PIC发出的,打头的字符是"\r\n\r\n"。绿色的是上位机485接口设备发送字符串“App1"的波形。波特率均为115200。上位机绿色的波形自发自收没有问题。
示波器设置为下降沿触发——485平时空闲状态,线路维持高电平,一旦开始传输,先拉低,然后在传输。串口传输参数是115200,n,8,1
先看下方绿色的数字解码,我们知道他是正确的,二进制码流为:
0-1-0-0-0-0-0-1-0-1-0-0
App的 A的ASCII码为:0x41 = 01000001
绿色的编码似乎是在逆序输出,对吧?把绿色的编码继续分析,找到字符间的分割处:
0-||1-0-0-0-0-0-1-0||-1-0-|| 0-0-0-0-1-1-1-0||-1-0-|| 0-0-0-0-1-1-1-0
注意:p(ASCII码0x70 ,01110000)连发了两次,它的波形是清晰可辨的.
所以,485的发送规则是:平时高电平,发送时,先发送0起始位一个,1停止位一个,连续发送时,以起始位0打头,紧跟字符MSB的8个bits,中间用一个停止位1和一个起始位0隔开。然后是下一个字符的数据区。下面对它做了标注:
按照这个规则,可以看到,PIC一侧发送时,起始位和停止位与平台一侧一致。而第2~第9Bits应该是A,看它发送了什么:这是0d,0a。