请问can总线电平的相位相反是如何达到的

摘要:介绍了控制器局域网总线(can總线电平)的应用特性以及将其应用于具体的工程项目时can总线电平系统的分层结构及各层的主要功能基于can总线电平系统结构构成,通过工程实践的具体应用以及对CAN控制器及收发器硬件结构的深入理解并从通信的角度出发着重深入分析了can总线电平通信的节点同步机制、总线哋址机制、总线仲裁机制(即总线的冲突解决机制)以及总线鲁棒性的实现原理。
关键词:控制器局域网总线;同步机制;地址机制;仲裁机淛;鲁棒性实现

Network)总线即控制器局域网总线,在工业控制、医疗电子、家用电器及传感器领域都得到了广泛的应用目前国内外文献中针對can总线电平协议分析的文章主要是针对CAN协议的帧结构以或位时序特性进行分析,如文献鲜有从通信的角度对can总线电平协议进行分析鲜有從工程应用的角度出发,对can总线电平的通信机制进行深入分析的文章

1 CAN应用特性及结构构成 kbps。由于电气特性限制即总线分布电容和分布電阻对总线波形的影响,can总线电平上最大节点数目为110个对于应用工程师,只需正确配置收发端的波特率和位参数即可实现收发节点的数據同步通过CAN控制器硬件对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。同时由于CAN报文采用短幀结构,并且每帧均包含CRC校验部分保证了数据出错率极低。can总线电平在工程应用中结构构成如图1所示

系统实现中的CAN应用层、操作系统(茬无操作系统的应用中以后台程序实现)及驱动程序共同实现了ISO参考模型中的应用层功能。其中CAN应用层定义ID分组、发送数据装包、接收数據处理以及应用层总线安全监测;操作系统/后台程序用于在CAN中断到达后调度CAN驱动程序对数据进行处理;驱动程序包括初始化(控制器工作狀态设置、波特率设置、验收滤波器配置)、收发驱动及异常处理程序。
    对于传输介质层需要根据环境干扰噪声、总线长度等来确定。在強干扰噪声的情况下必须采用屏蔽线;由于分布电容造成的总线波形失真及分布电阻造成的总线电平的衰减总线长度需要考虑采用的传輸介质的分布电阻和分布电容特性;同时,若采用高速总线还需通过实验确定总线的匹配电阻值

对于CAN控制器的实现,可以选用集成于系統主控芯片的CAN控制器实现如恩智浦公司出品的LPC2000系列的微控制器,或者也可以选用分立元件的CAN控制器如SJA1000。对于CAN收发器的实现可以选用CTM1050、TJA1050等。若环境干扰噪声较大则需在控制器和收发器之间添加隔离芯片或采用集成了隔离功能的CAN收发器。值得一提的是恩智浦公司新推絀的LPC11C24微控制器芯片中不仅集成了CAN控制器,同时集成了CAN收发器功能对于can总线电平系统的快速开发提供了良好的支持。另外根据实际应用嘚总线长度及总线上的节点数目,还需考虑收发器芯片的发送和接收的延迟时间

对于CAN驱动层和应用层,驱动程序包括CAN初始化(包括硬件使能、波特率设置、控制器工作模式设置及验收滤波器ID表配置)、收/发驱动并向上层提供接口函数其中需要说明的是验收滤波器的ID表配置需要根据应用层对系统ID的分组来进行;CAN应用层根据总线上各节点之间的数据收发关系进行数据包的ID分组、发送数据装包、接收数据处理及應用层总线安全监测等。另外常用的can总线电平上层协议主要有CANOpen、DeviceNet以及iCAN等。2 在进行通信过程中需要解决的最重要的问题之一就是如何实現收发端数据的同步,即接收端可以正确接收和解析发送端发送的数据can总线电平协议是一种异步串行通信协议,属于基带通信其同步嘚实现源于高级数据链路控制协议(HDLC)。具体来说can总线电平协议的同步是通过如下所述的3个方面来实现的。2.1 参数设定    通信双方通过软件设置相同的波特率、相同的相位调整段长度、相同的同步跳转宽度通过以上3个元素设置,定义了can总线电平传输过程中的位时间长度以及采樣点位置位结构如图2所示,图中的CAN时钟即是协议中定义的TQ时间该时钟是通过外部时钟或者CPU外设时钟分频后得到的CAN控制器的基本时钟信號,SS段对应于起始段总线上的跳变沿应发生在此段时间内,TESG1对应于传输段和相位调整段1TESG2对应于相位调整段2,对于高速总线控制器在TESG1囷TESG2之间对总线进行采样判别。

    CAN协议中明确定义的固定的帧结构便于CAN控制器和收发器对总线状态进行监测,在CAN2.0协议规范中分为标准帧囷扩展帧两种帧结构,两者区别只在于仲裁域标准帧采用11位标识符,而扩展帧有29位标识符具体的标准帧、扩展帧帧结构如表1、表2所示。

2.3 硬同步和再同步

    所谓硬同步就是指在总线空闲期间(即总线电平表现为连续的隐性位)控制器一旦检测到从隐性电平到显性电平的跳变,就说明此时总线上有站点开始发送数据则强制CAN控制器的位状态计数器同步到图2所示的SS段,同时位时钟从此开始重新计数(CAN位时间由上层軟件设定)硬同步用于帧的起始判定。

在can总线电平协议中再同步是基于位填充机制实现的。与HDLC协议类似在CAN的帧结构中,从帧起始到CRC序列位为止一旦检测到5个连续相同极性的位,CAN控制器自动插入一个极性相反的位再同步就是在数据传输过程中,CAN控制器通过检测总线上嘚跳变沿与节点内部位时间的差异来调整相位调整段1和相位调整段2调整大小是由同步跳转宽度编程设定的,调整大小单位为TQ具体调整規则是,在传输过程中由CAN控制器检测到的总线上的跳变沿如果位于节点内部的SS位时间段内,则不需要调整;若跳变沿位于TESG1段说明总线仩的位时间相对于节点的位时间有延迟,则CAN控制器延长节点的TESG1位时间段若延迟时间值(T0值)大于同步跳转宽度,延长时间为同步跳转宽度值否则节点的CAN控制器延长其与总线位时间的差值;若跳变沿位于TESG2段,说明总线上的位时间相对于节点的位时间有超前则CAN控制器减少节点嘚TESG2位时间段,具体调整规则与TESG1段的调整规则相似

3 can总线电平地址机制分析 不同于工业以太网、RS485等总线,can总线电平是通过数据包ID而非节点地址来收发数据的即can总线电平上的节点没有固定的地址,取而代之的是每个节点都需要通过软件配置一个ID表(在该节点的验收滤波器单元中)如果总线上的数据包的ID号在该节点的ID表中存在,则数据包成功通过该节点的验收滤波器单元的验收并将被送到上层软件处理单元并进荇相应的数据处理,否则该数据包被丢弃。举例来说若总线上的节点A想发送数据包到节点B,则该数据包的ID号必须位于节点B的ID表中同悝,若节点A想广播数据包到总线上则该数据包的ID号必须位于总线上所有其它节点的ID表中。如前所述ID表是通过软件进行配置的,但验收濾波功能却是通过CAN控制器中的验收滤波器这个硬件单元进行的所以从速度上来说,验收造成的延迟很小另外,采用这种地址机制的优點还在于是采用此总线的系统具有很高的灵活性即新加入或删除的节点不会影响系统原有节点间的通信。

下面将以恩智浦公司的LPC2478芯片集荿的CAN控制器为例具体说明can总线电平系统的地址配置方法。如图3所示首先根据总线上所需传输的数据包进行分类,即对数据包ID和相应的節点进行规划例如在我们的系统中主要有如下几类数据包:查询数据包、控制命令数据包(包括动作和参数数据包)、报警数据包及反馈参數数据包,对应的节点特性是查询数据包和控制命令数据包主要是主站发送给各从站单元而报警数据包和反馈参数数据包主要由从站各節点单元发送给主站单元节点。然后根据ID分类情况配置各节点的验收滤波器单元,具体的配置方法是:首先根据节点特点配置相应的验收滤波器工作模式:关闭模式(不接收总线报文)、旁路模式(接收总线上所有的报文)和正常工作模式(硬件滤波)若配置为正常工作模式时,接著就需配置相应的验收滤波器表(ID表)即将该节点需要接收的数据包ID号的填充到该节点控制器相应的ID表区域中,而这样就完成了can总线电平节點的地址分配工作一般而言,ID表分为如下4个区域:明确的标准帧标识符区、标准帧组格式标识符区、明确的扩展帧格式标识符区以及扩展帧组格式标识符区其中,明确格式是单个独立的ID标识符而组格式区时连续编号的ID标识符。

4 can总线电平仲裁机制分析 总线仲裁是指当總线上有多个节点在同时发送数据时总线协议的处理方法。can总线电平采用的是无破坏性的仲裁机制即若总线上的多个节点同时发送数据,具有高优先级数据包的节点仲裁胜出可以继续发送数据,而其它仲裁失败的节点将退出发送状态而转为接收节点与其他总线仲裁机淛(例如局域网的CSMA/CD)相比,其不仅不会破坏已发送的数据并且不会造成发送数据的延迟,是can总线电平与其他总线相比的优点之一其主要昰通过can总线电平所具备的如下两个特点实现:1)can总线电平的线与特性,即当总线上多个节点同时发送显性和隐形电平时总线电平表现为显性电平。2)CAN控制器即使在发送数据的同时也在监控总线电平状态即当在仲裁时,当控制器发送隐性电平但检测到总线为显性电平时节点仲裁失败,转为接收节点

5 can总线电平鲁棒性分析

    can总线电平的鲁棒性是通过其对节点和总线数据包安全性的实时检测与监控来实现的,另外can总线电平通过采用的差分信号对外界干扰信号有较强的抑制作用。具体论述如下

5.1 实时监控总线波形

CAN控制器不仅在上电后会一直监测總线上其它节点发送的的数据包,并且在自己发送数据包得过程中也在实时监测自己发送的数据一旦检测到位错误、填充错误、CRC错误、格式错误或者应答错误,该节点就会根据其所处的错误状态(错误激活状态或者错误认可状态)发送相应的错误标志实际上笔者认为只有错誤激活站点发送激活错误标识(即6个连续的显性位后接8个隐性位的错误标识界定符)会对总线及总线上的节点产生影响,而处于错误认可状态嘚节点发送的错误认可标识实际对总线没有任何影响(发送的6个隐性电平与总线空闲状态是一致的)

5.2 实时监控节点状态判定节点权限

节点會根据总线上数据包的情况实时改变自身的状态(错误激活、错误认可或者总线关闭状态),处于错误激活的节点正常参与总线通信错误认鈳的单元参与总线通信,但是在其启动下一个发送之前需要发送8个额外的隐性位对于总线上发送的数据包,如表1所示15位的CRC序列实现了對起始位、仲裁域、控制域以及数据域(如果有的话)的监控,接收站点在接收到数据后会根据与发送节点相同的算法生成该数据包的CRC序列並与接收到的CRC序列做比较,如果不同则说明有错接收节点不会对该数据包做出应答,发送节点就会检测到应答错误并重新发送该数据包总之,can总线电平通过数据链路层以及物理层就已经实现了较高的总线的数据安全性和总线的稳定性

文中以ISO11898协议规范为基础,从通信的角度详细分析了can总线电平的节点同步机制、节点地址机制、总线仲裁机制(即总线冲突解决机制)及总线鲁棒性的实现原理和基础同时简要介绍了can总线电平的应用特性以及将其应用于实际系统中时总线的系统分层结构,对深入理解can总线电平协议和将can总线电平应用到具体工程项目中以及研究或开发特定要求的总线系统具有指导意义。

}

总线可以具有两种互补的逻辑值の一:“显性”或“隐性”用逻辑0 代表“显性”等级,逻辑1 代表“隐性”等级

数据帧携带数据由发送器至接收器,它由7个不同的位场組成分别是帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结束。在具体编程中只要正确地运用仲裁场、控制场中的数据长度码、数据场即可

帧起始――标志一个数据帧或远程帧的开始,它是一个显性位

仲裁场――包括报文标识符11位(CAN2.0A标准)和远程发送申请RTR位,这12位共同组成报文优先权信息数据帧的优先权比同一标识符的远程帧的优先权要高。最高的7 位(ID-10 到ID-4)必须不能全是“隐性”

控制场――由6位组成,包括2位作为控制总线发送电平的备用位(留作CAN通信协议扩展功能用)与4位数据长度码其中数据长度码(DLC0-DLC3)指出了数据场中的芓节数目0∽8(被发送/接收的数据的字节数目)。

数据场――存储在发送缓冲器数据区或接收缓冲器数据区中以待发送或接收的数据按芓节存储的数据可由微控制器发送到网络中,也可由其它节点接收其中第一个字节的最高位首先被发送或接收。

CRC场――又名循环冗余码校验场包括CRC序列(15位)和CRC界定符(1个隐性位)。CRC场通过一种多项式的运算来检查报文传输过程中的错误并自动纠正错误。这一步由控淛器自身来完成

应答场――包括应答间隙和应答界定符两位。发送站发送两个“隐性”位当接收器正确地接收到有效的报文,接收器僦会在应答间隙(ACK SLOT)期间(发送ACK 信号)向发送器发送一“显性”的位以示应答

帧结束――每一个数据帧和远程帧均结束于帧结束序列,咜由7个隐性位组成

错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志(ERROR FLAG)的叠加第二个场是错误界定符。

有两种形式的错误标志主动错误标志(Active error flag)和被动错误标志(Passive error flag)。主动错误标志由6个连续的“显性”位组成被动错误标志由6 个连续的“隐性”的位组成,除非被其他节点的“显性”位重写

主动错误:“错误主动”的单元可以正常地参与总线通讯并在错误被检测到时发出主动错误標志,也就是当检测到错误就立即告诉大家检测到错误条件的“错误主动”的站通过发送主动错误标志(显性),以指示错误所有其怹的站由此检测到错误条件并与此同时开始发送错误标志。结果就是把各个单独站发送的不同的错误标志叠加在一起这个顺序的总长度朂小为6 个位,最大为12 个位主动错误标志?它本身就是一个错误位序列(连续

}

我要回帖

更多关于 二总线 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信