打印

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

[复制链接]
2064|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
god_like|  楼主 | 2009-12-14 11:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于串口自身的特点,通讯距离不大于15米,考虑到负载电容和码元畸变的影响,传输速率不超过20Kb/S,而且,传输波特率与传输距离成反比的关系 ,所以应用串口通讯时必须选择好接口,并考虑好传输介质与电平转换的问题.
在计算机间的串口通讯多采用标准的25芯插头座,有22根线,RS-232C采用的是负逻辑,
逻辑”1”为-5V~-15V,逻辑”0”为+5V~+15V.
在计算机与单片机中使用RS—232通讯的最简单的连接形式是只用数据发射端(2脚)、数据接收端(3脚)、信号地(7脚),这是计算机向单片机机开发系统传送目标程序的最常用方式。当然,只用这3个脚并不能算完善的串口通讯接口,可是,在现实中,如果合理的使用这3个脚,可以实现简单的串口数据采集功能,例如,只要你手里有一根COM口线和一块RS—232板,那么,就可以只在这3个脚连出飞线到想要读取数据的地方读数据了,前提是你的PC机上要有读串口的程序。要想做个计算机间完善的串口接口,就必须要求连接各个功能脚了。以上这种22线的接口形式由于要用至少9根以上的线,所以只适合PC与PC的短距离通讯,当需要进行远程数据传输时,这种方式便不能胜任了。这时就需要采用符合远程数据通讯的接口方式,生活中最常用RS—232C远程数据传输接口方式是MODEM+传输线,需要采用调制解调器,它的工作原理请看第一篇里的介绍。采用MODEM的好处就是减少了长距离传输引起的干扰,同时加大了传输的距离,并且便于计算机对所传输数据的控制。
也许看到这儿,有朋友就有疑问了,RS—232C可以直接传出TTL电平吗,答案是不能,
因为计算机处理的数据很多是以TTL电平的形式存在的,RS—232C并不能满足对TTL电平的传送要求,所以要进行对RS—232电平与TTL电平之间的转换。现在常用的电平转换芯片有分离的与整合的两种,分离的常见的有MC1488(发送器)和MC1489(接收器),整合的就是将发送器和接收器集成到 一块芯片内,常见的有MAX202,MAX232,HIN232c等,RS232C的发送器输入的是TTL/CMOS电平,输出的是RS—232C电平,接收器输入的是RS—232C电平,输出的是TTL电平。
现在很多场合多种单片机系统之间需要进行数据通讯,例如数控加工线上需要实时的进行加工数据的通讯,就要采用串口或并口将多个单片机连接起来,我们这里只介绍串口的连接问题。单片机联机的目的就是要通讯,较常采用的通讯程序有两种:查询方式和中断方式。
在制作通讯程序之前需要事先定义单片机之间的通讯协议,例如:A发送一个信号11给B,询问是否可以通讯,B接到呼叫之后,要返回一个22信号作为应答信号,告知A可以向B发送数据;否则,B就要返回一个否定信号33让A进行等待,直到B准备完毕返回信号22,其数据格式为:字节数n—数据1—……—数据n—累加校验和;其中累加校验和是指字节数n、数据1~n这(n+1)个字节内容的算术和,B就是根据接收的累加校验和判断接收的数据是否正确地。当B接收到的数据正确时,就要返回一个信号44通知A,否则,返回55,上面的信号11、22、33、44、55是为了阐述的方便而设的,假如你在使用时,当然可以自己定义指令的字头,但要注意避免指令字头与数据相混淆的情况。中断方式就是利用单片机上的中断资源,定时器、计数器等使用软件的方法控制数据的发送与接收,中断方式的特点是执行效率高,速度快,这种方式多应用在双机通讯系统中。
关于多机串口通讯:
现实中最常用的还是多机串口通讯,一般的方式是设置一片MCU主机,然后将多个从机挂在TXD、RXD端口上,这种方式的通讯特点是:从←→主←→从,从机之间的通讯需要经过主机,多机通讯的要点就是保证通讯接口具有识别能力,可以使用串行口控制器SCON中的控制位SM2实现。当串行口工作于方式2或方式3时,发送和接受的每一祯信息都是11位,其中第9位数据位TB8可编程位赋予0或1,用于区别是数据祯还是地址祯,
若从机的SM2=1,当接受到地址时,则将其装入SBUF,并置RI=1,向CPU发出中断请求,
若接受到的是数据,则不产生中断,信息作废。当SM2=0时 无论接受到的是数据还是地址,均产生RI=1中断,,数据装入SBUF。明白这些就可以制定通讯规则了,原理如下:
SM2置1,所有从机都处于接受地址状态,主机发送地址信息,包含8 位地址,第9位为判断位,如果第9 位为1,表示发送的是地址。从机接收到地址后便与自身的地址相比较,若某一从机为被寻地址,则使SM2位清零,其余的从机的SM2位保持1,
通讯协议没有固定的通用标准,随着使用环境的变化,我们可以自由的设订自己的协议,但要注意指令的定义要与数据加以区分,否则在复杂的多机系统里就要出现指令与数据混淆的现象。
沙发
love_life| | 2009-12-14 12:05 | 只看该作者
不错,学习了

使用特权

评论回复
板凳
贾君鹏子| | 2009-12-15 21:19 | 只看该作者
这资料没头没尾的啊

使用特权

评论回复
地板
cambrain| | 2009-12-16 08:42 | 只看该作者
串口最基本的东西了。

使用特权

评论回复
5
Go_PSoC| | 2009-12-16 11:05 | 只看该作者
我觉得楼主可以把同一个论题放在一个帖子里,这样3楼就不会误会了,呵呵

使用特权

评论回复
6
god_like|  楼主 | 2009-12-16 13:16 | 只看该作者
恩,好的

使用特权

评论回复
7
love_life| | 2009-12-16 13:29 | 只看该作者
:)

使用特权

评论回复
8
laslison| | 2009-12-17 23:28 | 只看该作者
楼主是从哪儿找来的?

使用特权

评论回复
9
juventus9554| | 2009-12-18 22:13 | 只看该作者
楼主是从哪儿找来的?
laslison 发表于 2009-12-17 23:28

贵在分享,在哪无所谓

使用特权

评论回复
10
午夜粪车| | 2009-12-18 22:15 | 只看该作者
是啊,总比有些人看到好资料了自己独享好

使用特权

评论回复
11
god_like|  楼主 | 2009-12-19 00:39 | 只看该作者
8# laslison

你还不知道啊?还问我;P

使用特权

评论回复
12
god_like|  楼主 | 2009-12-19 00:39 | 只看该作者
10# 午夜粪车

恩,重在分享

使用特权

评论回复
13
love_life| | 2009-12-19 00:57 | 只看该作者
还有重在学习

使用特权

评论回复
14
linhai1986| | 2009-12-20 17:01 | 只看该作者
这个很基础,看看

使用特权

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

本版积分规则

34

主题

745

帖子

1

粉丝