所以说呀~、做开发的累呀、做硬件开发的更累~~~、俺原来收藏/整理的一些东东~~~、找些易懂的给大家贴上来、共同学习吧~~~~
============================================================================
RS485与RS422技术在国内开始流行也只不过10年多一点的光景,其实刚开始的时候他们之中炙手可热的是全双工的RS422,因为有些人认为既然是全双工的,那么这条道上的客流量肯定比单行道上的客流量要大,也就是说他们认为全双工的数据处理能力肯定比半双工的强很多,但事实上现在的RS422似乎已经被收藏进了博物馆,而RS485开始大行其道,我个人认为:
1.假如说只有两个单片机做远距离通信的话,如果对数据的处理速度要求很高的话,那我肯定会选择全双工的RS422,因为这时候在只有两个单片机的情况下就无所谓谁是主机了,它们两个可以在任意时刻向对方发送数据,而不需要握手;而这时候如果用半双工的RS485的话,两个单片机之间必须有明确的握手协议才能正确通信,握手主要是为了避免总线竞争问题,而2个单片机的全双工通信是不会产正总线竞争的,并且从协议上来讲要简单很多,不过请注意,所有这些都是基于只有2个单片机互相通信的情况下.
2.在多单片机通信系统里,情况就不一样了,这里就拿单主查询方式来说:那么在这种情况下一个很大的原则是:系统只有一个主机,主机问到谁了谁才能说话,否则不准说话,其实这个原则也是为了避免总线竞争问题.那么好,现在就可以分成两种情况了:
1:系统上所有的单片机用的是全双工的RS422芯片,那么系统的工作过程是:主机呼叫1号子机,问有没有话要说,当1号子机察觉到呼叫的是自己后,先看看主机问的是什么问题,然后根据自己的情况作相应的回答,回答完后就继续订着总线有没有再一次呼叫到自己,当主机没有呼叫到自己时,自己是不能乱说话的,因为这时候主机有可能在和别的单片机说话,如果这时候自己不管三七二十一乱说话的话,总线上的电平肯定乱套了,于是总线竞争就产生了,只好等待主机再一次呼叫到自己。这里面有一点需要说明,当某一子机被呼叫允许和主机说话时,因为这时候是全双工通信,所以在这个时候主机和子机之间可以乱说话,但有一点就是当子机把要说的话全说完的时候,必须明确的告诉主机我要讲的话讲完了,否则的话主机不知道是否该继续往下查...
2.系统上所有的单片机用的是半双工的RS485芯片,那么系统的工作过程是:主机呼叫1号子机,问有没有话要说,当1号子机察觉到呼叫的是自己后,先看看主机问的是什么问题,然后根据自己的情况作相应的回答,回答完后就继续订着总线有没有再一次呼叫到自己,当主机没有呼叫到自己时,自己是不能乱说话的,因为这时候主机有可能在和别的单片机说话,如果这时候自己不管三七二十一乱说话的话,总线上的电平肯定乱套了,于是总线竞争就产生了,只好等待主机再一次呼叫到自己...
现在我们对比上述的两种情况,发现全双工和半双工多机通信唯一的区别在于:当某一个确定的子机和主机说话时,对于全双工来讲这时候和主机直接说话就行,可以随便乱说话而不需要握手了,但是有一点就是当子机不想再说话的时候要明确的告诉主机一声,好让主机死了这条心继续往下查别的子机.除了这个地方外,其他的和半双工的RS485是一样的.
那么我们就可以得出结论了,在多机通信系统中,用全双工的RS422并没有比半双工的RS485效率高多少,而且它至少要比RS485多拉出两条信号线来,这是一个很大的开销,那么我们为什么不用RS485呢?
|