EDN首页   博客首页

最新日志

发表于:2006-12-20 10:20:55
标签:单片机  485  通信  

4

RS-485总线通信系统的可靠性措施




作 者:
长沙民政学院 朱志伟 周志光 鲍祖尚

1 问题的提出

  在工业控制及测量领域较为常用的网络之一就是物理层采用RS-485通信接口所组成的工控设备网络。这种通信接口可以十分方便地将许多设备组成一个控制网络。从目前解决单片机之间中长距离通信的诸多方案分析来看,RS-485总线通信模式由于具有结构简单、价格低廉、通信距离和数据传输速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。但RS485总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系统瘫痪等故障,因此提高RS-485总线的运行可靠性至关重要。

 点击看大图
                图1RS485通信接口原理图

2 硬件电路设计中需注意的问题

2.1 电路基本原理

  某节点的硬件电路设计如图1所示,在该电路中,使用了一种RS-485接口芯片SN75LBC184,它采用单一电源Vcc,电压在+3~+5.5 V范围内都能正常工作。与普通的RS-485芯片相比,它不但能抗雷电的冲击而且能承受高达8 kV的静电放电冲击,片内集成4个瞬时过压保护管,可承受高达400 V的瞬态脉冲电压。因此,它能显著提高防止雷电损坏器件的可靠性。对一些环境比较恶劣的现场,可直接与传输线相接而不需要任何外加保护元件。该芯片还有一个独特的设计,当输入端开路时,其输出为高电平,这样可保证接收器输入端电缆有开路故障时,不影响系统的正常工作。另外,它的输入阻抗为RS485标准输入阻抗的2倍(≥24 kΩ),故可以在总线上连接64个收发器。芯片内部设计了限斜率驱动,使输出信号边沿不会过陡,使传输线上不会产生过多的高频分量,从而有效扼制电磁干扰。在图1中,四位一体的光电耦合器TLP521让单片机与SN75LBC184之间完全没有了电的联系,提高了工作的可靠性。基本原理为:当单片机P1.6=0时,光电耦合器的发光二极管发光,光敏三极管导通,输出高电压(+5 V),选中RS485接口芯片的DE端,允许发送。当单片机P1.6=1时,光电耦合器的发光二极管不发光,光敏三极管不导通,输出低电压(0 V),选中RS485接口芯片的RE端,允许接收。SN75LBC184的R端(接收端)和D端(发送端)的原理与上述类似。

2.2 RS-485的DE控制端设计

  在RS-485总线构筑的半双工通信系统中,在整个网络中任一时刻只能有一个节点处于发送状态并向总线发送数据,其他所有节点都必须处于接收状态。如果有2个节点或2个以上节点同时向总线发送数据,将会导致所有发送方的数据发送失败。因此,在系统各个节点的硬件设计中,应首先力求避免因异常情况而引起本节点向总线发送数据而导致总线数据冲突。以MCS51系列的单片机为例,因其在系统复位时,I/O口都输出高电平,如果把I/O口直接与RS-485接口芯片的驱动器使能端DE相连,会在CPU复位期间使DE为高,从而使本节点处于发送状态。如果此时总线上有其他节点正在发送数据,则此次数据传输将被打断而告失败,甚至引起整个总线因某一节点的故障而通信阻塞,继而影响整个系统的正常运行。考虑到通信的稳定性和可靠性,在每个节点的设计中应将控制RS485总线接口芯片的发送引脚设计成DE端的反逻辑,即控制引脚为逻辑“1”时,DE端为“0”;控制引脚为逻辑“0”时,DE端为“1”。在图1中,将CPU的引脚P1.6通过光电耦合器驱动DE端,这样就可以使控制引脚为高或者异常复位时使SN75LBC184始终处于接收状态,从而从硬件上有效避免节点因异常情况而对整个系统造成的影响。这就为整个系统的通信可靠奠定了基础。

  此外,电路中还有1片看门狗MAX813L,能在节点发生死循环或其他故障时,自动复位程序,交出RS-485总线控制权。这样就能保证整个系统不会因某一节点发生故障而独占总线,导致整个系统瘫痪。

2.3 避免总线冲突的设计

  当一个节点需要使用总线时,为了实现总线通信可靠,在有数据需要发送的情况下先侦听总线。在硬件接口上,首先将RS-485接口芯片的数据接收引脚反相后接至CPU的中断引脚INT0。在图1中,INT0是连至光电耦合器的输出端。当总线上有数据正在传输时,SN75LBC184的数据接收端(R端)表现为变化的高低电平,利用其产生的CPU下降沿中断(也可采用查询方式),能得知此时总线是否正“忙”,即总线上是否有节点正在通信。如果“空闲”,则可以得到对总线的使用权限,这样就较好地解决了总线冲突的问题。在此基础上,还可以定义各种消息的优先级,使高优先级的消息得以优先发送,从而进一步提高系统的实时性。采用这种工作方式后,系统中已经没有主、从节点之分,各个节点对总线的使用权限是平等的,从而有效避免了个别节点通信负担较重的情况。总线的利用率和系统的通信效率都得以大大提高,从而也使系统响应的实时性得到改善,而且即使系统中个别节点发生故障,也不会影响其他节点的正常通信和正常工作。这样使得系统的“危险”分散了,从某种程度上来说增强了系统的工作可靠性和稳定性。

2.4 RS-485输出电路部分的设计

  在图1中,VD1~VD4为信号限幅二极管,其稳压值应保证符合RS-485标准,VD1和VD3取12 V,VD2 和VD4取7 V,以保证将信号幅度限定在-7~+12 V之间,进一步提高抗过压的能力。考虑到线路的特殊情况(如某一节点的RS-485芯片被击穿短路),为防止总线中其他分机的通信受到影响,在SN75LBC184的信号输出端串联了2个20 Ω的电阻R1和R2,这样本机的硬件故障就不会使整个总线的通信受到影响。在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120 Ω左右,所以线路设计时,在RS485网络传输线的始端和末端应各接1个120 Ω的匹配电阻(如图1中的R3),以减少线路上传输信号的反射。

2.5系统的电源选择

  对于由单片机结合RS-485组建的测控网络,应优先采用各节点独立供电的方案,同时电源线不能与RS-485信号线共用同一股多芯电缆。RS-485信号线宜选用截面积0.75 mm2以上的双绞线而不是平直线,并且选用线性电源TL750L05比选用开关电源更合适。TL750L05必须有输出电容,若没有输出电容,则其输出端的电压为锯齿波形状,锯齿波的上升沿随输入电压变化而变化,加输出电容后,可以抑制该现象。

3 软件的编程

  SN75LBC184在接收方式时,A、B为输入,R为输出;在发送方式时,D为输入,A、B为输出。当传送方向改变一次后,如果输入未变化,则此时输出为随机状态,直至输入状态变化一次,输出状态才确定。显然,在由发送方式转入接收方式后,如果A、B状态变化前,R为低电平,在第一个数据起始位时,R仍为低电平,CPU认为此时无起始位,直到出现第一个下降沿,CPU才开始接收第一个数据,这将导致接收错误。由接收方式转入发送方式后,D变化前,若A与B之间为低电压,发送第一个数据起始位时,A与B之间仍为低电压,A、B引脚无起始位,同样会导致发送错误。克服这种后果的方案是:主机连续发送两个同步字,同步字要包含多次边沿变化(如55H ,0AAH),并发送两次(第一次可能接收错误而忽略) ,接收端收到同步字后,就可以传送数据了,从而保证正确通信。

  为了更可靠地工作,在RS485总线状态切换时需要适当延时,再进行数据的收发。具体的做法是在数据发送状态下,先将控制端置“1”,延时0.5 ms左右的时间,再发送有效的数据,数据发送结束后,再延时0.5 ms,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。数据通信程序基本流程图如图2所示。

            
              图2数据通信程序基本流程图

  单片机通信节点的程序基本上可以分为6个主要部分,分别为预定义部分、初始化部分、主程序部分、设备状态检测部分、帧接收部分和帧发送部分。预定义部分主要定义了通信中使用的握手信号,用于保存设备信息的缓冲区和保存本节点设备号的变量。设备状态检测部分应能在程序初始化后,当硬件发生故障时,作出相应的反应。主程序部分应能接收命令帧,并根据命令的内容作出相应的回应。为缩短篇幅,这里仅给出主程序部分的代码。如下所示:

  /* 主程序流程 */
  while(1) {         //主循环
    if(recv_cmd(&type)==0) //发生帧错误或帧地址与本机
                //地址不符,丢弃当前帧后返回
  continue;
  switch(type) {
    case __ACTIVE_:    //主机询问从机是否存在
      send_data(__OK_, 0,dbuf);//发送应答信息
      break;
    case __GETDATA_:
      len = strlen(dbuf);
      send_data(__STATUS_, len,dbuf);//发送状态信息
        break;
    default:
        break;    //命令类型错误,丢弃当前帧后返回
    }
  }

4 结论

  RS-485由于使用了差分电平传输信号,传输距离比RS-232更长,最多可以达到3000 m,因此很适合工业环境下的应用。但与CAN总线等更为先进的现场工业总线相比,其处理错误的能力还稍显逊色,所以在软件部分还需要进行特别的设计,以避免数据错误等情况发生。另外,系统的数据冗余量较大,对于速度要求高的应用场所不适宜用RS-485总线。虽然RS-485总线存在一些缺点,但由于它的线路设计简单、价格低廉、控制方便,只要处理好细节,在某些工程应用中仍然能发挥良好的作用。总之,解决可靠性的关键在于工程开始施工前就要全盘考虑可采取的措施,这样才能从根本上解决问题,而不要等到工程后期再去亡羊补牢。

                    参考文献

1 求是科技.单片机通信技术与工程实践.北京:人民邮电出版社,2005
2 沈红星.一种基于RS485总线的网络协议及其实现方法.单片机与嵌入式系统应用,2003(6)
3 吴军辉.RS485总线通信避障及其多主发送的研究.测控技术,2002(8)
4 刘光斌.单片机系统抗干扰技术.北京:人民邮电出版社,2003

系统分类: 单片机   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(634)
发表于:2006-12-20 10:14:04
标签:单片机  快速  掌握  

2

如何快速掌握一款新的MCU

 
  任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握:

  *  MCU的特点:要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供的外围功能模块(Peripheral Circuit)、中断源、工作电压及功耗等等。

  *  了解这些MCU Features后,接下来第一步就是将所选MCU的功能与实际项目开发的要求的功能进行对比,明确那些资源是目前所需要的,那些是本项目所用不到的。对于项目中需要用到的而所选MCU不提供的功能,则需要认真理解MCU的相关资料,以求用间接的方法来实现,例如,所开发的项目需要与PC机COM口进行通讯,而所选的MCU不提供UART口,则可以考虑用外部中断的方式来实现;

  *  对于项目开发需要用到的资源,则需要对其Manua*进行认真的理解和阅读,而对于不需要的功能模块则可以忽略或浏览即可。对于MCU学习来讲,应用才是关键,也是最主要的目的。

  *  明确了MCU的相关功能后,接下来就可以开始编程了。对于初学者或初次使用此款MCU的设计者来说,可能会遇到很多对MCU的功能描述不明确的地方,对于此类问题,可以通过两种方法来解决,一种是编写特别的验证程序来理解资料所述的功能;另一种则可以暂时忽略,程序设计中则按照自己目前的理解来编写,留到调试时去修改和完善。前一种方法适用于时间较宽松的项目和初学者,而后一种方法则适合于具有一定MCU开发经验的人或项目进度较紧迫的情况;

  *  指令系统千万不要特别花时间去理解。指令系统只是一种逻辑描述的符号,只有在编程时根据自己的逻辑和程序的逻辑要求来查看相关的指令即可,而且随着编程的进行,对指令系统也会越来越熟练,甚至可以不自觉地记忆下来;

  
MCU的基本功能:

  对于绝大多数MCU,下列功能是最普遍也是最基本的,针对不同的MCU,其描述的方式可能会有区别,但本质上是基本相同的:

  *  Timer(定时器):Timer的种类虽然比较多,但可归纳为两大类:一类是固定时间间隔的Timer,即其定时的时间是由系统设定的,用户程序不可控制,系统只提供几种固定的时间间隔给用户程序进行选择,如32Hz,16Hz,8Hz等,此类Timer在4位MCU中比较常见,因此可以用来实现时钟、计时等相关的功能;另一类则是Programmable Timer(可编程定时器),顾名思义,该类Timer的定时时间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频数(Prescale)选择及预制数的设定等,有的MCU三者都同时具备,而有的则可能是其中的一种或两种。此类Timer应用非常灵活,实际的使用也千变万化,其中最常见的一种应用就是用其实现PWM输出(具体的应用,后续会有特别的介绍)。由于时钟源可以自由选择,因此,此类Timer一般均与Event Counter(事件计数器)合在一起;

  
  *  IO口:任何MCU都具有一定数量的IO口,没有IO口,MCU就失去了与外部沟通的渠道。根据IO口的可配置情况,可以分为如下几种类型:


  **  纯输入或纯输出口:此类IO口有MCU硬件设计决定,只能是输入或输出,不可用软件来进行实时的设定;

  
**  直接读写IO口:如MCS-51的IO口就属于此类IO口。当执行读IO口指令时,就是输入口;当执行写IO口指令则自动为输出口;

  **  程序编程设定输入输出方向的:此类IO口的输入或输出由程序根据实际的需要来进行设定,应用比较灵活,可以实现一些总线级的应用,如I2C总线,各种LCD、LED Driver的控制总线等;

  **  对于IO口的使用,重要的一点必须牢记的是:对于输入口,必须有明确的电平信号,确保不能浮空(可以通过增加上拉或下拉电阻来实现);而对于输出口,其输出的状态电平必须考虑其外部的连接情况,应保证在Standby或静态状态下不存在拉电流或灌电流。


  *  外部中断:外部中断也是绝大多数MCU所具有的基本功能,一般用于信号的实时触发,数据采样和状态的检测,中断的方式由上升沿、下降沿触发和电平触发几种。外部中断一般通过输入口来实现,若为IO口,则只有设为输入时其中断功能才会开启;若为输出口,则外部中断功能将自动关闭(ATMEL的ATiny系列存在一些例外,输出口时也能触发中断功能)。外部中断的应用如下:

  **  外部触发信号的检测:一种是基于实时性的要求,比如可控硅的控制,突发性信号的检测等;而另一种情况则是省电的需要;

  
**  信号频率的测量;为了保证信号不被遗漏,外部中断是最理想的选择;

  **  数据的解码:在遥控应用领域,为了降低设计的成本,经常需要采用软件的方式来对各种编码数据进行解码,如Manchester和PWM编码的解码;

  
**  按键的检测和系统的唤醒:对于进入Sleep状态的MCU,一般需要通过外部中断来进行唤醒,最基本的形式则是按键,通过按键的动作来产生电平的变化;

  *  通讯接口:MCU所提供的通讯接口一般包括SPI接口,UART,I2C接口等,其分别描述如下:


  **  SPI接口:此类接口是绝大多数MCU都提供的一种最基本通讯方式,其数据传输采用同步时钟来控制,信号包括:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)及Ready信号;有些情况下则可能没有Ready信号;此类接口可以工作在Master方式或Slave方式下,通俗说法就是看谁提供时钟信号,提供时钟的一方为Master,相反的一方则为Slaver;


  **  UART(Universal Asynchronous Receive Transmit):属于最基本的一种异步传输接口,其信号线只有Rx和Tx两条,基本的数据格式为:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位数据所占的时间称为Baud Rate(波特率)。对于大多数的MCU来讲,数据为的长度、数据校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度及Baud Rate是可以通过程序编程进行灵活设定。此类接口最常用的方式就是与PC机的串口进行数据通讯。


  **  I2C接口:I2C是由Philips开发的一种数据传输协议,同样采用2根信号来实现:SDAT(串行数据输入输出)和SCLK(串行时钟)。其最大的好处是可以在此总线上挂接多个设备,通过地址来进行识别和访问;I2C总线的一个最大的好处就是非常方便用软件通过IO口来实现,其传输的数据速率完全由SCLK来控制,可快可慢,不像UART接口,有严格的速率要求。 


  *  Watchdog(看门狗定时器):Watchdog也是绝大多数MCU的一种基本配置(一些4位MCU可能没有此功能),大多数的MCU的Watchdog只能允许程序对其进行复位而不能对其关闭(有的是在程序烧入时来设定的,如Microchip PIC系列MCU),而有的MCU则是通过特定的方式来决定其是否打开,如Samsung的KS57系列,只要程序访问了Watchdog寄存器,就自动开启且不能再被关闭。一般而言watchdog的复位时间是可以程序来设定的。Watchdog的最基本的应用是为MCU因为意外的故障而导致死机提供了一种自我恢复的能力。


  MCU程序的编写:


  MCU的程序的编写与PC下的程序的编写存在很大的区别,虽然现在基于C的MCU开发工具越来越流行,但对于一个高效的程序代码和喜欢使用汇编的设计者来讲,汇编语言仍然是最简洁、最有效的编程语言。对于MCU的程序编写,其基本的框架可以说是大体一致的,一般分为初始化部分(这是MCU程序设计与PC最大的不同),主程序循环体和中断处理程序三大部分(见图1 a 和 b),其分别说明如下:

  
初始化:对于所有的MCU程序的设计来讲,出世化是最基本也是最重要的一步,一般包括如下内容:

  **  屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望有任何中断发生;

  **  清除系统的RAM区域和显示Memory:虽然有时可能没有完全的必要,但从可靠性及一致性的角度出发,特别是对于防止意外的错误,还是建议养成良好的编程习惯;


  **  IO口的初始化:根据项目的应用的要求,设定相关IO口的输入输出方式,对与输入口,需要设定其上拉或下拉电阻;对于输出口,则必须设定其出世的电平输出,以防出现不必要的错误;


  **  中断的设置:对于所有项目需要用到的中断源,应该给予开启并设定中断的触发条件,而对于不使用的多余的中断,则必须给予关闭;


  **  其他功能模块的初始化:对于所有需要用到的MCU的外围功能模块,必须按项目的应用的要求进行相应的设置,如UART的通讯,需要设定Baud Rate,数据长度,校验方式和Stop Bit的长度等,而对于Programmer Timer,则必须设置其时钟源,分频数及Reload Data等;


  **  参数的出世化:完成了MCU的硬件和资源的出世化后,接下来就是对程序中使用到的一些变量和数据的初始化设置,这一部分的初始化需要根据具体的项目及程序的总体安排来设计。对于一些用EEPROM来保存项目预制数的应用来讲,建议在初始化时将相关的数据拷贝到MCU的RAM,以提高程序对数据的访问速度,同时降低系统的功耗(原则上,访问外部EEPROM都会增加电源的功耗)。


  *  主程序循环体:大多数MCU是属于长时间不间断运行的,因此其主程序体基本上都是以循环的方式来设计,对于存在多种工作模式的应用来讲,则可能存在多个循环体,相互之间通过状态标志来进行转换。对于主程序体,一般情况下主要安排如下的模块:


  **  计算程序:计算程序一般比较耗时,因此坚决反对放在任何中断中处理,特别是乘除法运算;


  **  实时性要求不高或没有实时性要求的处理程序;


  **  显示传输程序:主要针对存在外部LED、LCD Driver的应用;


  *  中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如,外部突发性信号的检测,按键的检测和处理,定时计数,LED显示扫描等。一般情况下,中断程序应尽可能保证代码的简洁和短小,对于不需要实时去处理的功能,可以在中断中设置触发的标志,然后由主程序来执行具体的事务――这一点非常重要,特别是对于低功耗、低速的MCU来讲,必须保证所有中断的及时响应。


  *  对于不同任务体的安排,不同的MCU其处理的方法也有所不同。例如,对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目均为手持式设备和采用普通的LCD显示,对按键的反应和显示的反应要求实时性较高,应此一般采用定时中断的方式来处理按键的动作和数据的显示;而对于高速的MCU,如Fosc>1MHz的应用,由于此时MCU有足够的时间来执行主程序循环体,因此可以只在相应的中断中设置各种触发标志,并将所有的任务放在主程序体中来执行;


  *  在MCU的程序设计中,还需要特别注意的一点就是:要防止在中断和主程序体中同时访问或设置同一个变量或数据的情况。有效的预防方法是,将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作;而在其他的程序体中(主要是中断),对需要进行该数据的处理的地方只设置触发的标志。――这可以保证数据的执行是可预知和唯一的。

    
  总之,对于MCU开发来讲,必须记住一点:“条条大路通罗马”,没有做不到的事,关键是看方法是否正确!再就是多做多动手和多想。


系统分类: 单片机   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(515)
发表于:2006-12-20 10:10:13
标签:单片机  通信  

1

单片机通信性能分析和评价方法

来源:单片机与嵌入式系统应用 纪 松 李哲英   
现代信息网络技术的一个突出特点,就是使工业控制系统6中的所有设备连接成网,从而在一个核心软件管理下工作(这个软件可能是分布式的操作系统,也可能是嵌入式操作系统),形成一个有机的整体。这种整体网络方式的现代工业控制系统具有传统独立控制系统所无法比拟的先进性,不仅能极大地提高工业设备的生产效率,还可以大大提高系统的安全性和可靠性。

  目前,为了实现网络化系统,工业设备都必须以网络终端的形式出现在系统中,而这种网络终端大多用单片机或数字信号处理来实现。由于工业控制系统设备的多样性和分布性,智能模块方式的单片机终端已经成为主流设备控制方式。随着信息和电子技术的发展,各种工业控制系统网络不断改进,这就对单片机通信功能的要求不断增加。特别是对各种现场总线技术中通信接口和通信协议,更是提出了新的通信要求:不仅能适应某一个通信协议,还希望能成为一种通信协议自动转换的智能终端。因此,单片机通信功能是否满足设计目标要求是必须设计中的一个关键问题。



  在单片机应用技术中,需要有一个对单片机通信性能进行分析评价的理论方法,只有这样才能解决对单片机通信性能进行评价和设计的问题。本文的目的就是通过研究讨论,提出一个对单片机通信性能的分析和评价方法。

  本文从单片机通信接口的物理结构和固件特性两个方面对单片机通信接口进行了分析,提出了接口电路物理性能分析模型和通信特性定量评价分析的参数。

  一、串行通信口的物理特性

  对单片机的通信性能可以从通信接口性能和软件处理能两个方面进行考虑。通信接口性能主要表现在与通信有关的电路物理性能上;而软件处理性能则与单片机的指令系统和CPU性能直接有关,所以,软件处理性能可以用单片机的固件特性来表示。

  单片机串行通信接口一般分为两种,一种是同步串行通信接口(SPI),另一种是异步串行通信接口(SCI)。SPI具有串行通信速度高的特点,但一般需要1条发送和1条接收串行数据通信线、1条通信目标选择线和1条同步时钟线,一共需要4条通信线(占用单片机的4个I/O引脚)。SOC虽然数据传输速度低于SPI,但一般只需要2条数据线和1条地线即可,也就是只需要3根通信线(占用单片机的3个引脚)。



  SPI和SCI串行通信接口的基本电路结构如图1和图2所示。

  从图中可以看到SPI和SCI的物理结构有很大差别:SPI的通信速率和信号接收正确率由时钟和接口物理特性决定;SCI的通信速率和信号接收正确率由物理接口和时钟分频率决定。

  通信接口接收的是数字电平信号,因此,存在电平判别的问题。如果输入电路的物理特性对输入电平波形有影响,则会直接影响接收信号的正确性。因此,要求接收和发送电路的物理特性必须满足波形的要求。

  通信息的物理特性还与通信介质和连接状态有关。图3是通信接口电路和驱动电路之间的待效电路图。

  当数据传输速率远小于电路电压跟踪速度时,可认为每一位数据的电平保护足够长的时间。根据图3可以得到输出和输入信号的阶段响应:

  u=U(1-e -at) (1)

  式中,u是数字信号高电平,a=1/[R(C1+C2)]是上升时间常数。图4是数字信号受到分布参数影响后的波形。

  根据式(1)可知,在5V电源电压条件下,通信信号电平幅度上升到判别电压幅度(TTL高电平或CMOS高电平)所需时间是T=-R(C1+C2)ln0.46(对TTL电路)或T=-R(C1+C2)ln0.72(对CMOS电路)。如果信号的波特率为fb,为确保正确接收,信号上升时间应当为信号脉冲宽度的1/4~1/10。

  由此,当数字信号为TTL电平时,要求单片机接口电路的分布参数范围是



  当数字系统为CMOS电平时,要求单片机接口电路的分布参数范围是



  如果单片机的物理分布参数已经确定,则式(2)和式(3)就是最高通信速率的限制条件。

  通过以上分析可以看出,单片机通信接口的物理特性对通信性能直接影响,主要反映在接口电路分布参数对数字信号波形的影响,进而引起接口电平判别失误。

  二、单片机串行通信接口的固件特性

  所谓单片机串行通信接口的固件特性,是指单片机串行通信接口的控制和支持硬件在串行通信时所具有技术特性。固件特性包括两个方面问题,一个方面是软件行为对硬件的要求条件,另一个是硬件电路所能提供的结构和功能特性。



  1.单片机通信接口功能的控制方式

  单片机串行通信接口功能的控制是在单片机内部硬件结构支持下的软件操作。单片机是面向寄存器的工作方式,因此,对于通信接口的控制是通过一系列的寄存器操作实现的。基本控制步骤如下:

  (1)设置必要参数(如通信速率、时钟源、终端方式等);

  (2)设置数据结构(对于异步通信口);

  (3)通过向发送寄存器写入数据,启动发送/接收——读取数据。

  每一次通信(发送一个字节)都需要重复最后一个步骤。

  由此可知,单片机串行通信接口寄存器的操作会直接影响通信接口的功能和性能。由于单片机的每一步骤操作都是执行1条指令,所以,单片机串行通信的真正发送时间,是向发送寄存器写数据指令结束的时刻。

点击看大图


  2.单片机串行通信接口基本固件特性

  单片机串行通信接口一般包括发送数据、接收数据、发送时钟、接收时钟、线路监测、碰撞处理、波特率设置、帧结构设备等。这些固件的特性有一个共同的特点,就是全部以寄存器为操作对象,并在每一个操作指令结束时执行寄存器操作,通过寄存器的输出电路实现相应的功能。由此可知,寄存器操作的特性,就是单片机串行通信接口固件的特性。

  (1)次序固定的固件特性。单片机串行以通信接口操作中,必须先进行相应的设置,才能实施通信。这种固定的次序是单片机串行通信接口的重要固件特性,如果忽略了这种次序特性,必然会导致通信失败。

  (2)协议相关的固件特性。通信协议是有效利用单片机串行通信接口的基本保证之一。如果在单片机的通信协议执行过程中出现问题,则通信功能就会丧失。

  (3)隐含协调性。所谓隐含协调性指隐含在通信指令集中的协议规定,如发送方与接收方的等待协议规定等。

  由此,可以把单片机的固件特性用3个不同集合之交表示:设有通信接口的操作次序集合A、相关协议集合B和隐含规约集合C。A中的每一个元素都是一种正确的通信接口操作次序;B中每一个元素都是一种体现相关协议的通信接口操作要求;C中每一个元素都是一种隐含规约,则符合要求的通信接口控制固件必然是三者之交:

  Y=A∩B∩C (4)

  由此可知,要检查单片机串行通信接口的基本固件特性,可以使用式(2)进行判别;如果不能满足式(2),就表明单片机串行通信接口的固件特性有问题,会引起通信失效。

  三、单片机通信性能分析

  上述对单片机串行通信接口的物理特性和因件特性的分析,提供了单片机通信性能分析的基础。单片机通信性能分析包括比特吞吐特性分析、有效性分析和数据安全性分析。

  1.比特吞吐特性分析

  比特吞吐特性,是指单片机执行通信任务时单位时间内发送和接收的比特数目。比特吞吐特性不能用串行特性的波特率代替。比特吞特性不仅与波特率有关,更与单片机的固件特性有关。不同的通信协议会引起不同的通信操作,形成不同的操作固件。这种固件操作的有效性才是决定比特吞吐特性的关键。

  在处理一组数据时,设通信协议处理数据的时间为tp,串行通信发送数据的时间为tc,则总的通信时间为t=tp+tc,因此,串行通信接口的比特吞吐特性可用如下函数表示:

  ξ=fctc/(tp+tc) (5)

  式中,ξ叫做比特吞吐系数,fc是固件设备的串行通信波特率。可见,在fc固定的条件下,要提高比特吞吐特性,就必须尽量减少tp+tc并增加tc。在tp=0这种极端情况下,比特吞吐系数才能等于通信波特率。

  利用比特吞吐系数可以方便地检查单片机的串行通信能力能否满足应用系统的要求。例如,应用系统要求每秒钟内传输10个字节数据,相当于要求每秒钟的比特吞吐系数为80K。这里K是数据帧格式有效系数:异步串行通信中K>1;同步串行通信中K=1。根据这个要求,可以对应用系统所设计的软件结构进行核实,如果不能满足,则说明应用系统不能满足对通信的要求,必须进行调整。

  2.有效性分析

  所谓有效性,是指对包括通信协议在内的整个通信过程的有效性。设单片机应用系统发送和接收的控制信息数据是随机函数y=P(x),其中x代表单位时间内的数据传输量。Y的数据期望是:

  σ=E[y]=E[P(x)] (6)

  σ叫做单片机串行通信系统的数据传输有效性系数。显然,在满足应用系统功能的前提下,σ的值小,说明数据传输的有效性高;反之,系统数据传输量大,说明系数控制信息的有效性差。必须注意,这里只考虑控制信息,并不包括必要的数据采集。

  有效性分析就是要根据系数数据传输的随机分布,估计系统数据的有效性。可以直接利用有效性系数作为检验的标准。

  此外,数据识别率也是衡量单片机通信效果和应用系统固件特性的一种重要参数。

  数据识别率是指对接收到的数据语义理解的速度。设单片机接收到能代表完整意义的X个字节所需要的时间是tx,语义理解(翻译和判别)需要的时间为tY,则数据识别率为

  η=X/(tx+ty) (7)

  数据识别率表示了单位时间内单片机通信的效果,η值越大,表明单片机的整体固件特性越好,通信效率越高。

  3.数据完全性

  数据安全性不仅与系统的串行通信物理特征有关,更主要的是与应用系统通信的固件特性有关,尤其是通信协议中的应用层,直接关系系统的数据安全。

  数据安全性可以用通信稳定性和数据识别率表示。

  通信稳定性与通信线路和物理接口的侵入和干扰状态有关。对于单片机通信系统来说,当多个单片机采用串行连接的方法连接在1条总线上时,通信线路的侵入状态由通信协议直接确定。如使用令牌通信方式时,基本上没有侵入状态;但如果用客户/服务器方式,侵入状态将随线路上单片机数量的增加而恶化。这是比较复杂的通信系统行为特性分析问题,本文不再分析。

  结论
 
  本文对单片机通信接口的物理特性和固件特性进行了分析。指出了确定物理接口电路分布参数的分析方法,并导出了在不考虑传输线电感(PCB板)条件下电路分布参数与保证通信可靠条件之间的关系计算公式。这些计算表明,接口电路的分布参数是限制通信速度的主要因素之一。

  通信接口控制的固件特性对单片机通信性能有重要影响。通信接口控制的固件特性需要用通信接口操作次序集合A、相关协议集合B和隐含规约集合C的交集进行检查。选择一组合适的固件结构组合,以保证通信系统通信接口控制性能固件的正确性。

  对单片机通信性能评价时,可以使用本文提出的单片机通信性能分析参数。这些参数是比特吞吐系数ξ、数据传输有效性系数σ和数据识别率η。利用这些参数,可以定量地对单片机通信特性进行分析,同时也中以利用这些参数进行单片机的选择和应用系统设计。

  必须指出,单片机通信系统的安全特性也是一个重要的应用基础,限于篇幅本文不再讨论。

系统分类: 单片机   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(531)
总共 , 当前 /