打印
[AVR单片机]

RS—232的资料和串口通讯的问题(一)

[复制链接]
1732|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suoma|  楼主 | 2009-12-12 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转:
计算机上的rs-232有9个引脚定义如下:
    1,CD,载波检测(Carrier);      

    2,RXD,接收字符(Receive);      
    3,TXD,传送字符(Transmit);            
    4,DTR,数据端备妥(DataTerminalReady);      
    5,GND,地线(Ground);
    6,DSR,数据备妥(DataSetReady);   
    7,RTS,请求传送(RequestToSend);  
    8,CTS,清除以传送(ClearToSend);  
    9,RI,响铃检测(RingIndicator);还有一种25脚的公头也是RS232使用的端口接口,但电脑中不常用,只在少许工业控制计算机中使用,此处不作介绍,其实9脚和25脚的功能完全一样,多余的接口脚都是悬空处理的.
     9脚与25脚接口的对应关系是1--8;2--3;3--2;4--20;5--7;6--6;7--4;8--5;9--22;
      其中各脚的功能如下:
      CD:此脚有调制解调器控制,调制解调器用此脚通知计算机载波信号是否被检测到;
      RXD:此脚将远程发送来得数据接收进来,可以在调制解调器上看到RXD的指示灯明暗交错,说明RXD端正接收数据;
      TXD:此脚将计算机所欲发出得数据发送出去,同上TXD的指示灯在工作时也会明暗交错的显示;
      DTR:此脚有计算机控制,用于通知调制解调器是否可以进行传送数据,高电平表示准备就绪;
      GND:地线,没什么好说的,要点是此脚必须双向接地,保证地电平相等以供接收数据的恢复参考;
      DSR:调制解调器用此脚的高电平来通知计算机准备就绪可以通讯;
      RTS:计算机用此脚通知调制解调器马上将数据发送到计算机,注意若此时有数据传送到调制解调器则会暂存到缓冲区中;
      CTS:此脚有调制解调器控制,用来通知计算机将欲发送的数据发送到调制解调器;
      RI:调制解调器用此脚通知计算机有数据进来,但是否接收数据则有计算机来决定;
      以上就是RS-2329个引脚的功能,你若仔细看,会发现他们的收发都是成对出现的,明白这点用起来就应该很轻松了.

调制解调器与计算机的通讯步骤如下:
(1)调制解调器 将计算机通讯端口的DSR引脚电位升高,表示调制解调器已经准备好接收计算机的串行端口传过来的数据了.
(2)计算机将DTR引脚电位升高,表示计算机已经将欲发送的数据准备好;
(3)计算机将RTS引脚电平升高,通知调制解调器计算机即将开始发送数据;
(4)调制解调器将RTS引脚电位升高,通知计算机可以开始发送数据了;
(5)计算机将数据发送出去,当调制解调器接收倒数据之后,便将收到的数据通过电话线和网线发送出去,什么,要问我调制解调器怎么调制信号的,我*,我怎么知道,自己去问问调制解调器吧.
       当远程数据的经历千山万水到达接收端的调制解调器时,他不让进该怎么办呀,先友好点握握手呀,串门子也要讲礼貌吗,不然一脚揣出你去信不,此时要------------
(1)调制解调器将计算机上的DSR脚电位升高,说明调制解调器可以开门了
(2)这时电话上的数据就串进来,RI的电平发生变化,要问诸人计算机要不要俺进来坐坐呀
(3)计算机说行你进来吧,计算机便将DTR脚电位升高,直到断线之前此脚会一直持续高电平;
(4)握手完了,调制解调器要检测到载波信号,此时只是两个调制解调器之间通讯完毕;
(5)接下来调制解调器便将从电话线上接收到的数据传送到计算机里面去
以上是以调制解调器为对象介绍RS-232的,这种方式只能用于远程低波特率数据的传送,什么,你想传送100兆,去去去,俺只会慢慢的一个一个字节的传,要想快找俺弟弟??去,它可是个急性子,可惜从来不爱串远门;     
关于串行通讯的起始位及停止位:
      因为串行通讯并不采用同步时钟脉冲作为基准,所以接收断无法判断数据发送的实时情况如何,所以,需要加上开始与结束的标识,规则是,在需要发送的数据字符的头尾加上高电平的起始位(逻辑0)和地电平的停止位(逻辑1),也许你要问为什么用负逻辑表示呀,单纯这样想就错了,现状是开始传送时,将传送线的电位有地电平拉到高电平,要结束了再将传送线的电位有高拉到低,接收端就是通过这两个电平的跳变来判断数据发送的开始与结束的.起始位固定为一个位,停止位有1'1.5'2个位等多种表示,要问为什么,我也不知道,哈哈哈.只要通讯协议允许你爱咋定就咋定谁管的着你.
关于传送数据的校验:
      在串行通讯上的字符格式是:起始位+字符位+校验位+停止位;采用不同的数据位,校验位,停止位则每次传送的字节中位的个数可以动态改变,这个问题是不好理解,举例说,1个起始位+8个数据位+0个校验位+1个停止位,拜拜手指吧,是不是10个位呀,那么这里的一个字节就是10位,注意,要与传统意义上的8位区别开呀,不然下面就没法进行了.象上面这个例子如果传输速度为17600bps,则每秒传输17600/10=1760(字节)这样明白了吧.
校验位可以是奇校验和偶校验,到底用公的还是母的自己看着办吧,我想我们很少用校验位的.

关于工作模式:
       在一般的串行通讯使用模式中,RS-232用全双工模式(FullDupled), RS-422与RS-485分别使用全双工和半双工模式,老兄你不知道什么是XXXX模式?,先去肯肯书本吧,整天疑神疑鬼的多难受.  

握手:
       硬件握手因篇幅的关系这里就不讲述了,说说软件握手,软件握手就是以数据上的信号来代替实际中的硬件线路;软件握手最常用的协议是:XON/XOFF,原理:若接收端要使发送端暂停发送,就向发送端发ASCII码的第19号字符(十六进制13),要恢复传送时,便向发送端送出ASCII第17号字符(十六进制11),两个字符交互使用便可以控制发送端的发送操作.

关于错误预防有两种常用方式:
       CheckSum(将所有发送字符的十进制数的和与255相除取余再放到所发送字符的后面一起发送,校验时采用同样的办法求余比较)另一种是CRC(循环冗余校验码)
       好了,关于RS-232的介绍就这些了,RS-232的传输举例一般都在15米以下,加转发器会再远点,不过抗噪性就有所下降了,RS-485效果会好些,但一般的PC机上不会装配这个.

相关帖子

沙发
laslison| | 2009-12-12 23:21 | 只看该作者
字号大看着就是舒服

使用特权

评论回复
板凳
love_life| | 2009-12-12 23:37 | 只看该作者
不错,好东西,不知道LZ 在哪找到这么好的东西?

使用特权

评论回复
地板
huamunv| | 2009-12-14 20:50 | 只看该作者
:handshake

使用特权

评论回复
5
Karlshen| | 2009-12-14 21:07 | 只看该作者

使用特权

评论回复
6
lovelyegle| | 2009-12-16 22:40 | 只看该作者
取之于民用之于民

使用特权

评论回复
7
linhai2009| | 2009-12-17 00:31 | 只看该作者
很基础的东西

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

714

帖子

5

粉丝