基于arm的can总线研究和实现------毕业论文_第1页
基于arm的can总线研究和实现------毕业论文_第2页
基于arm的can总线研究和实现------毕业论文_第3页
基于arm的can总线研究和实现------毕业论文_第4页
基于arm的can总线研究和实现------毕业论文_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文论文题目基于ARM的CAN总线研究和实现学生姓名学号专业通信工程指导教师学院信息科学与工程学院2008年5月25日目录摘要1ABSTRACT1一、引言2二、关于CAN特点的介绍2三、简单CAN通信硬件设计4四、CAN报文传输5五、简单CAN信息传递机制的介绍7六、软件设计8七、简单CAN通信协议的指定11八、简单测试12九、CAN网络设计13十、结束语15参考文献15基于基于基于基于ARM的的的的CAN总线研究和实现总线研究和实现总线研究和实现总线研究和实现摘要摘要摘要摘要CAN总线是一种支持分布式实时控制系统的串行通信的局域网络。由于其高性能、高可靠性、实时性好及其独特的设计,已广泛应用于控制系统中的各检测和执行机构之间的数据通信。本文针对大型复杂工业现场实时测控网络的要求,介绍了CAN总线的特点,介绍了基于CAN总线测控节点的设计与实现,阐述了CAN总线网络的通信模型和构建方法。重点对基于ATMEL公司的7X256芯片的节点硬件配置、软件功能、尤其是CAN通信的实现进行了比较详细地讨论。关键词关键词关键词关键词CAN总线;7X256;CAN通信THERESEARCHANDREALIZATIONOFCANBUSBASEDONARMABSTRACTCANBUSISAKINDOFAREANETWORKWHICHSUPPORTSTHESERIALCOMMUNICATIONOFREALTIMEOWINGTOITSHIGHPERFORMANCE,HIGHRELIABILITY,GOODPERFORMANCEOFREALTIMEANDITSUNIQUEDESIGN,CANBUSHASBEENWIDELYAPPLIEDINTHEDATACOMMUNICATIONBETWEENTHETESTINGANDIMPLEMENTINGAGENCIESINTHECONTROLSYSTEMATTHEREQUESTOFREALTIMEMONITORINGANDCONTROLNETWORKINTHELARGESCALEINDUSTRIALCOMPLEXSCENE,THISPAPERHASINTRODUCEDTHEFEATURESOFCANBUS,THEDESIGNANDIMPLEMENTATIONOFMONITORINGANDCONTROLNODESBASEDONCANBUSITHASDESCRIBEDTHECOMMUNICATIONMODELANDCOSTRUCTIONMETHODSOFCANBUSNETWORKTHISPAPERHASFOCUSEDONTHEDETAILEDDISCUSSIONOFNODEHARDWARECONFIGURATIONANDSOFTFUNCTIONOF7X256CHIPBASEDONATMELCOMPANY,ESPECIALLYTHEREALIZATIONOFCANBUSKEYWORDSCANBUS7X256CANCOMMUNICATION一一一一、引言引言引言引言目前在某些测控系统中仍采用RS485串行总线通讯。由于该方式只能构成主从式结构的通讯网络,一旦主节点出现故障,就会导致整个系统处于瘫痪状态,系统总体可靠性较低。此外,RS485网络在任意时刻,总线只能允许一个节点向总线发送数据。如果总线上的某些节点发生故障,导致多于一个以上的节点向总线发送数据时,就极有可能使总线呈现短路状态,从而损坏某些节点的RS485驱动器,导致故障范围的进一步扩大。针对这些问题,RS485网络本身无法给出一个良好的解决方法。而CAN总线技术由于具有多主工作方式、采用非破坏性总线仲裁技术、信号传输采用短帧结构等特点,可使这些问题得到较好的解决。CAN,全称为“CONTROLLERAREANETWORK”,即控制器局域网,最早由德国BOSCH公司提出,主要用于汽车内部测量与控制中心之间的数据通信。如发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。由于其卓越的性能、极高的可靠性,独特灵活的设计和低廉的价格,现已广泛应用于工业现域控制、智能大厦、小区安防、交通工具、医疗仪器环境监控等众多领域。已被公认为几种最有前途的现场总线之一。本文研究的是基于ARM的CAN总线的数据通信。具体实现CAN总线上一对一,以及一对多的数据通信。二二二二、关于关于关于关于CAN特点的介绍特点的介绍特点的介绍特点的介绍CAN总线是一种支持分布式实时控制系统的串行通信局域网。由于其高性能、高可靠性、实时性等优点,已广泛应用于控制系统中的检测和执行机构之间的数据通信。它具有以下一些技术特性1多主控制在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权(CSMA/CA方式)。多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权。2消息的发送在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(IDENTIFIER以下称为ID)决定优先级。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。3系统的柔软性与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。4通信速度根据整个网络的规模,可设定适合的通信速度。在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。5远程数据请求可通过发送“遥控帧”请求其他单元发送数据。6错误检测功能错误通知功能错误恢复功能所有的单元都可以检测错误(错误检测功能)。检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。7故障封闭CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起故障的单元从总线上隔离出去。8连接CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。CAN总线符合ISO11898标准,最大传输速率可达1MB/S,最大传输距离为10KM传输速率约为5K,传输介质可为双绞线、同轴电缆等。由于CAN总线是一种很有发展前景的现场总线,得到了国际上很多大公司的支持。基于CAN总线的以上特点,它特别适用于系统分布比较分散、实时性要求高、现场环境干扰大的场合。三三三三、简单简单简单简单CAN通信硬件设计通信硬件设计通信硬件设计通信硬件设计节点控制器ARM芯片选用ATMEL公司的7X256,属ARM7系列芯片。ARM7系列是具有ARM7TDMI内核的32位嵌入式微处理器,是目前应用很广的嵌入式RISC处理器。该系列芯片体积小、功耗低、成本低,高性能与灵活性相结合,有较多的寄存器,提供了扩充的增强的固定长的16/32位双指令集。此芯片集成了外设CAN控制器。芯片支持片上断点和调试点支持,具有先进的软件开发和调试环境。又因为此处理器芯片自身集成了CAN控制器,可以自动处理数据链路层和部分物理层,为CPU提供了完整的关于V20PARTA和V20PARTB协议功能,可以自动处理数据链路层和部分物理层。总线数据波特度均可达1MBPS可访问32位的寄存器和RAM全局验收过滤器可识别几乎所有总线的11位和29位RX标识符验收过滤器为选择的标准标识符提供了FULLCAN模式自动接收功能。所以使用ATMEL的7X256省去了CAN控制器外围电路的设计,同时也减少了线路干扰。CAN收发器采用PHILIPS公司的TJA1050高速CAN收发器。收发器是CAN协议控制器和物理总线之间的接口。它最初是应用在波特率范围在60K波特到1M波特的高速自动化应用中。TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。而且它与“ISO11898”标准完全兼容。TJA1050提供两种模式供用户使用。用过引脚S可以选择高速模式或静音模式。高速模式就是普通的工作模式,将引脚S接地可以进入这种模式。如果引脚S没有连接,高速模式就是默认的工作模式。在静音模式中,发送器是禁止的。但其他功能可以继续使用。将S引脚连接到VCC可以进入这个模式。静音模式可以防止在CAN控制器不受控制时对网络通讯造成堵塞。本设计要实现发送和接收,所以将S接地进入普通模式。总体的原理图如图1所示图1硬件设计原理图四四四四、CAN报文传输报文传输报文传输报文传输报文传输由以下4个不同的帧类型所表示和控制数据帧数据帧携带数据从发送器至接收器。远程帧总线单元发出远程帧,请求发送具有同一识别符的数据帧。错误帧任何单元检测到一总线错误就发出错误帧。过载帧过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。数据帧(或远程帧)通过帧间空间与前述的各帧分开。因在实际应用中基本上都是进行信息的采集及传递工作,所以这里仅仅介绍下数据帧。数据帧由7个不同的位场组成帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。数据帧的结构如图2所示CAN控制器TJA1050ARM7芯片TXRXCANLCANHCAN总线图2数据帧结构图(一一一一)帧起始帧起始帧起始帧起始它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。只在总线空闲时,才允许站开始发送(信号)。所有的站必须同步于首先开始发送信息的站的帧起始前沿。(二二二二)仲裁场仲裁场仲裁场仲裁场仲裁场包括识别符和远程发送请求位(RTR)。识别符识别符的长度为11位。这些位的发送顺序是从ID10到ID0。最低位是ID0。最高的7位(ID10到ID4)必须不能全是“隐性”。RTR位该位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”(三三三三)控制场控制场控制场控制场控制场由6个位组成,包括数据长度代码和两个将来作为扩展用的保留位。所发送的保留位必须为“显性”。接收器接收所有由“显性”和“隐性”组合在一起的位。数据长度代码数据长度代码指示了数据场中字节数量。数据长度代码为4个位,在控制场里被发送。(四四四四)数据场数据场数据场数据场数据场由数据帧中的发送数据组成。它可以为08个字节,每字节包含了8个位,首先发送MSB。(五五五五)CRC场场场场CRC场包括CRC序列(CRCSEQUENCE),其后是CRC界定符(CRCDELIMITER)。六六六六应答场应答场应答场应答场应答场长度为2个位,包含应答间隙(ACKSLOT)和应答界定符(ACKDELIMITER)。在应答场里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACKSLOT)期间(发送ACK信号)向发送器发送一“显性”的位以示应答。(七七七七)帧结尾帧结尾帧结尾帧结尾每一个数据帧和远程帧均由一标志序列界定。这个标志序列由7个“隐性”位组成。五五五五、简单的简单的简单的简单的CAN信息传递机制的介绍信息传递机制的介绍信息传递机制的介绍信息传递机制的介绍7X256的CAN控制器上有8个独立的邮箱。任何邮箱都可以通过程序设置为接收缓冲区(甚至是不连续的缓冲区)。当缓冲区满的时候一个中断就会被触发。邮箱的设置使开始接收的信息可以被锁存在CAN控制寄存器中。任何一个邮箱在指定其为接收邮箱的时候,可以指定其类型为RECEIVEMODE,或者RECEIVEWITHOVERWRITEMODE,如果将邮箱设置为RECEIVEWITHOVERWRITEMODE,那么如果在申请得到应答之前又接收到了新的信息,那么原来寄存器中的信息会被新接收到的信息覆盖掉。如果将邮箱设置为RECEIVEMODE模式,那么当邮箱中存在已接收的数据且还没有被应用程序通知其使用完毕时,该邮箱将拒绝接收任何信息。任何邮箱也都可以设置为发送缓冲区。多个发送邮箱可以在同一时间内被使能。每一个邮箱都可以被独立的设置为不同的优先级。CPU通过CAN控制器邮箱读写数据或信息。每个邮箱均被分配了一个标志符ID。CAN控制器通过压缩或解码数据信息创建或解码数据帧。程序运行管理下的CAN控制器可以自动的处理远程帧、错误帧和过载帧。CAN模块有8个缓冲区,也可以称作通道或者邮箱。每个正在应用的邮箱都被定义了一个与CAN标志符对应的标志符。报文标志符可以和标准帧标志符或扩展帧相匹配。标志符在CAN初始化时就被定义好了,但是可以在以后被更改以使邮箱可以处理新的信息。可以为多个邮箱配置相同的ID。每个邮箱可以被配置为独立的接收或发送模块。邮箱类型可以通过邮箱模式寄存器(CANMMRX)的MOT位定义。如果邮箱ID寄存器(CAN_MIDX)中的MIDE被置位,那么邮箱可以处理29位扩展的格式标志符,否则,邮箱将处理标准格式标志符。一旦一个新的信息被接收,它的ID会与邮箱掩码寄存器的值相与并与邮箱ID寄存器的值相比较。如果被接收,那么这个信息的ID将被复制到邮箱ID寄存器。六六六六、软件设计软件设计软件设计软件设计程序主体结构为CAN驱动程序部分。CAN驱动程序是针对ARM芯片上CAN接口模块编写的。CAN驱动程序主要包括CAN控制器初始化程序发送子程序接收子程序中断处理程序。下面主要对CAN控制器初始化程序进行简要的分析。(其余部分限于篇幅原因就不作具体介绍了,详细可见附带的源码文件)CAN控制器驱动程序初始化基本流程如下所述1设置复用的PIO引脚连接到CAN控制器。2使能CAN控制器输入时钟。3设置CAN控制器的波特率。4向高级中断控制器(AIC)注册CAN中断(需要编写相应的CAN中断服务子函数)。5使能AIC控制器的CAN中断。6使能CAN控制器。7使能CAN控制器的相关中断。8设置CAN邮箱(包括邮箱ID号、掩码、传输数据、传输数据长度、邮箱类型等)。代码分析/初始化CAN控制器/指定CAN收发引脚由CAN控制器控制AT91C_BASE_PIOAPIO_PDRCAN_MASKAT91C_BASE_PIOAPIO_ASRCAN_MASK/使能CAN输入时钟AT91C_BASE_PMCPMC_PCER1AIC_SVRAT91C_ID_CANUNSIGNEDINTCANIRQHANDLER/注册CAN中断的优先级跟触发模式AT91C_BASE_AICAIC_SMRAT91C_ID_CANAT91C_AIC_PRIOR_HIGHEST|AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL/设置CAN波特率AT91C_BASE_CANCAN_BRCAN_BR_500KIFTRANSMIT_TYPERECV/禁止CAN中断AT91C_BASE_CANCAN_IDRAT91C_CAN_MB1/设置MB0/设置邮箱0的ID号(标准帧)AT91C_BASE_CANCAN_MB0CAN_MB_MID0X5AACAN_MB0CAN_MB_MAM0XFFFFFFFF/设置邮箱MB0的模式为接收邮箱AT91C_BASE_CANCAN_MB0CAN_MB_MMRAT91C_CAN_MOT_RX/使能MB0中断AT91C_BASE_CANCAN_IERAT91C_CAN_MB0/设置MB2AT91C_BASE_CANCAN_MB2CAN_MB_MID0X5AACAN_MB2CAN_MB_MDH0/数据AT91C_BASE_CANCAN_MB2CAN_MB_MDL0/数据AT91C_BASE_CANCAN_MB2CAN_MB_MMRAT91C_CAN_MOT_CONSUMER/MB1为生产者邮箱/使能MB0中断AT91C_BASE_CANCAN_IERAT91C_CAN_MB2ELSE/禁止CAN中断AT91C_BASE_CANCAN_IDRAT91C_CAN_MB1/设置MB1AT91C_BASE_CANCAN_MB1CAN_MB_MID0X5AACAN_MB1CAN_MB_MDHSEND_DATA_H/数据AT91C_BASE_CANCAN_MB1CAN_MB_MDLSEND_DATA_L/数据AT91C_BASE_CANCAN_MB1CAN_MB_MMRAT91C_CAN_MOT_TX/MB1为发送邮箱ENDIF/使能CANAT91C_BASE_CANCAN_MRAT91C_CAN_CANEN/使能CAN中断并主动清除一次中断AT91C_BASE_AICAIC_IECR1AIC_ICCR1AT91C_ID_CAN/CAN控制器初始化结束/七七七七、简单的简单的简单的简单的CAN通信协议的制定通信协议的制定通信协议的制定通信协议的制定该通信协议仅仅是为了简单的对CAN总线的一对一,以及一对多的通信进行测试,没有具体的根据实际的应用需求进行分析设计。如果真正的用于工业现场的CAN总线协议要比这个复杂的多得多。首先,需要对所用到的节点的邮箱进行设置(配置其ID,掩码,模式等),以及节点的性质的配置(主机或者从机)。而在真正的工业现场应用中,硬性的规定节点的性质以及邮箱的ID号实在是一种非常落后的实现方式,灵活性跟扩展性都大大的受到了限制。在真正的应用中,任何一个节点都可以充当一个主机的身份与总线上其他的节点进行通信,而总线上的所有节点可以由主机发送一个重置ID号的命令后自动完成ID号的重新分配工作,上层软件会将此信息进行保存并用于之后的访问。主机以及从机中所用到的邮箱的ID号的简单设置如下主机邮箱号掩码邮箱ID邮箱性质说明MB0发送用于实现一对多或者一对一的数据访问MB20X00X1接收MB30X00X1接收MB40X00X1接收可以接收所有不同ID号的从MB50X00X1接收信息MB60X00X1接收MB70X00X1接收从机邮箱号掩码邮箱ID邮箱性质说明MB00X00XF1接收专门用于接收广播MB10X00XF2接收专门用于点对点接收MB2发送邮箱回发数据MB3发送邮箱回发数据邮箱掩码设置为0X0,邮箱0,邮箱1均可以接收到主机发送过来的命令,收到主机发送过来的数据后,则分别进行检测,如果收到的是一对多的采集命令,则不用再做邮箱ID号的检测,直接将邮箱准备好的数据发送回去;如果收到的是一对一的采集命令,则在进行邮箱ID号的匹配检测,如果ID号匹配,则将准备好的数据发送回去,否则不做任何处理。将主机的接收邮箱掩码设置为0X0,可以接收总线上任何一个节点发过来的数据,其一定程度上充当了一个万能接收的角色。CAN的上层通信协议是对CAN总线协议中数据场所包含信息的不同功能或性质的进一步细化,我们所准备的信息需要根据这个协议写入CAN总线协议的数据场。根据7X256的邮箱设计机制,将长度固定为64位,具体实现如下1编码顺序由低位段到高位段;2采用CAN20标准帧格式;3低32位为信息部分,高32位为数据部分;4低32位数据为信息位,定义如下第一个字节为命令信息0XAA一对多的信息采集符合条件的从机收采集命令后回发一个包含了采集信息的数据帧0XBB一对一的信息采集符合条件的从机收到采集命令后回发一个包含了采集信息的数据帧5高32位数据为数据信息对于主机发送的报文,这32位保留,暂时为0对于从机节点发送的报文,这32位为携带的数据信息八八八八、简单测试简单测试简单测试简单测试测试工作是在ADS12调试平台下进行的。测试过程中的数据信息需要在PC机上进行显示,但是如果是单纯的CAN数据是无法直接在PC机上显示的,于是,增加了一个CAN数据到串口数据的转化模块,具体的转化细节因不是本文讨论的重点,所以不作介绍了。数据通过一个串口软件在PC机上进行显示。调试工作用到三块开发板(一块开发板用作主机,其余的两块用于挂接到总线上的从机),并口线,串口线等。首先测试的是一对一的信息采集。设置主机的采集方式为一对一(低32位命令信息为0XAA,高32位数据信息为0),然后指定需要采集数据的从机上的邮箱ID号,当相应的从机邮箱收到信息后,会将准备好的数据返回给主机。仿真调试程序,看PC机显示结果是否为我们指定的数据。最后,测试的是一对多得信息采集。设置主机的采集方式为一对多(低32位命令信息为0XBB,高32位数据信息为0),然后指定需要采集数据的从机上的邮箱ID(随便一个ID号就可以了,因为在此情况下,没有对ID号进行匹配),当相应的从机组邮箱收到信息后,会将准备好的数据返回给主机。仿真调试,看PC机显示结果是否采集到了多个信息数据。九九九九、CAN网络设计网络设计网络设计网络设计考虑到应用于工业现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论