本帖最后由 weiwst 于 2013-2-19 17:33 编辑
原来我的帖子写在我们学校的无线电协会,也就是我现在所在的协会。好久没有在21家发帖了,也拿出一下东东,出来晒晒。如果有需要改进的地方,请尽情指出来。谢谢你的纠正,这也是一个学习啊。:D
以下的内容来自协会的:
这个帖子的内容讲的是在河南省的物联网的省赛选拔中遇到的问题。最后的结果还算可以,今年第一次参加这个物联网的比赛,很荣幸进入了明年的国赛。嘿嘿。这也辛苦了协会的那三个同学,他们在设备安装后的十几天里就参加省里的选拔赛,真是太佩服他们了,他们真是比电赛时更努力,经常学习和调试到凌晨几点。
测试RS232通信电平小结
最近一段时间和冰星一起帮协会创新室的同学调试一个设备。其中要求要测量这个设备的波形。遇到了一个问题:如何用示波器测量RS232的通信的数据呢?通信信号是如何传输和从示波器的波形中读出要通信的数据呢?在开始的时候,从示波器中读出了通信的波形,RS232的波形是+5.6V和-5.6V直接的方波,不是我们平时常见的0-5V或0-3.3的逻辑电平。波形可以从示波器中读的,并且可以写下对应的逻辑状态:0或者1。可是从这个波形读到的数据总是和从串口助手中读到的数据不一样!这样就陷入了一个很纠结的状况。然后上网搜索232的通信电平的逻辑。RS-323C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。找到了这个问题,按照232的逻辑电平规定,用示波器的反相显示,读出通信的数据,还是没有找出如何读出数据。就这样用了很长的时间都没有找出如何从示波器的数据读出通信的数据!就在今天晚上(12月11日)终于找到了正确读取通信数据的方法。现在想起了实际上还是不是那么困难的问题,却让人纠结了很长的时间……从串口助手读到了数据:02 2B 30 30 30 30 30 30 32 31 39 03,共12个数据(都是16进制的数据)02为数据规定的起始位置,最后一位03为规定的结束,31,39为规定的校验位。刚开始也搜索和判断了ascii码表与二进制数和16进制数之间的转换……具体的用示波器读出的二进制数(在示波器中反相后,即232的电平已经转换成TTL电平逻辑后的数据,按照示波器中的数据从屏幕的左侧依次到右侧的数据列出。示波器的波形存储,从触发的时刻开始,数据依次累积,就在屏幕中从左到右依次排列出来了。即左侧的为最早的数据,最右的最后的数据。)如下:
1……1 00100 00001 10110 10100 11000 00110 01100 00011 00110 00001 10011 00000 11001 10000 01100 11001 00110 01101 00011 00110 10011 10011 01100 00001 1……1 数据就这样的,你能够找出其中的规律吗?怎么和上面的12个数据对应呢?最后,找到规律:发现没有上面的二进制数据有130多个左右,对应了12个数据,如果是平均分配的话,一个数据要对应大约11个二进制数。最开始的 00100 00001 1对应上面的数据02,因为上面的数据是先发开始位然后依次发送。上面的数据都是以0开始发一个数据,以11结尾的。中间的8位就是对应的那个数据了,0100 0000对应了02,那么如何对应呢?就是从左到右先发低位后发高位,用8421码对应的。0100 对应16进制的“2”,0000对应16进制的“0”。同理第二组的数据0110 10100 11对应了2B,1101对应16进制的“B”,0100对应16进制的“2”。依此类推……
总结:测试通信的波形并且要推算出来数据,实际上就是考核232通信的原理和软件的编写,让人实实在在地理解!虽然给出了那12个数据的通信数据规定,但是到了具体的每一个数据的发送情况,有谁真正地去了解了呢?这让我想到了当初用汇编编写51单片机程序的情景,去了解每一个数据是如何发送出去的,又是如何接受每一个数据的,程序中都是怎样处理每一个接收到的二进制数的……这很重要!为什么当时没有很短的时间内推算出来呢?
1.当时没有很清晰的思路,虽然有了一些可能的推测,并且去搜索资料和验证了。但是没有现在这样,去把完整的130多个高低电平去完整的读出来!
2.当对问题没有很好的解决办法的时候,就没有了思路,这个时候几个人一起发散思路,就有可能找到解决问题的关键!
3.我地脑子啊,都锈掉了。为什么没有冰星的思维灵活啊!有的时候不得不服啊!发散思维,开阔思路!不过当一个触发他的灵感的也是不错,但是如何有他的那种灵活呢?——多思考,多思索,多个角度分析问题!
4.当然测量通信的数据,也可以用逻辑分析仪测量。协会也有24M的逻辑分析仪,连接电脑可以分析数据。也可以把数据保存在电脑中。用模拟示波器就不行了,因为模拟的储存深度太小了,不能够保存并显示一段完整的数据的波形。
补充一下:如果用逻辑分析仪测量通信的信号时就要注意了!看通信的信号的电平水平,对于协会的逻辑分析仪的测量范围是0-5V之间的。虽然逻辑分析仪内部有保护电路,但是看到电路原理图就可以知道,保护部分是用的BAV99(双二极管)接在了供电电源和地,具体电路可以去了解一下。如果输入232的逻辑电平,就可能使逻辑分析仪的保护电路部分损坏!
这时候如果要测量带有+-电平的信号就要有电平转换电路!用光耦、三极管、专用的电平转换芯片等等都是可以实现的。。。。。具体的电路,可以去详细了解哦!!:D当然也可以用示波器测量通信的波特率,观察一个最小的脉冲的宽度,计算出对应的频率就是通信的波特率了。
|