《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于AT91RM9200的CAN智能节点设计
基于AT91RM9200的CAN智能节点设计
现代电子技术 何炳林 张焕文 梁柱扬 杜祺漳
摘要: 本文将提出一种基于ARM9处理器AT91RM9200和CAN控制器MCP25lO构建的CAN智能节点的设计方案,并介绍了该方案的软硬件设计及调试方法。
Abstract:
Key words :

 

        近年来工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度的不断提高,以现场总线技术为基础的开放型集散测控系统得到广泛应用。总线是控制器局域网(controller area network,CAN)属于现场总线范畴,是一种能有效支持分布式控制的串行通信网络,可将挂接在现场总线上作为网络节点的智能设备连接成网络系统,并进一步构成集散测控系统。CAN智能节点位于传感器和执行机构所在的现场,在集散控制系统中起着承上启下的作用。一方面,它必须和上位机进行通信,以完成数据交换;另一方面,它根据系统的需要以完成测量与控制的功能。因此,CAN智能节点的设计在工业集散测控系统中有着十分重要的作用。本文将提出一种基于ARM9处理器AT91RM9200和CAN控制器MCP25lO构建的CAN智能节点的设计方案,并介绍了该方案的软硬件设计及调试方法。
 
  1 硬件设计
 
  CAN智能节点的设计涉及2个方面:需要实现的功能;如何实现CAN通信。因此本文基于AT91RM9200和MCP2510提出的CAN智能节点的设计框架如图1所示。在此首先介绍主要芯片的特性,然后再说明智能节点的设计原理。
 
 
  1.1 芯片特性
  AT91RM9200是Atmel公司生产的一款ARM9处理器,它是完全围绕ARM920T ARM Thumb处理器构建的系统。它有丰富的系统与应用外设及标准的接口,从而为低功耗、低成本、高性能的计算机宽范围应用提供一个单片解决方案。
 
  MCP2510是由美国微芯科技有限公司(MicrochipTechnology Inc.)生产的一款带SPI接口的CAN协议控制器,完全支持CAN总线V2.0A/B技术规范;能够发送和接收标准和扩展报文,通信速率最高可达1 Mb/s,同时具备验收过滤以及报文管理功能;通过SPI接口与MCU进行通信,最高数据传输速率高达5 Mb/s;包含3个发送缓冲器和2个接收缓冲器,还具有灵活的中断管理能力。所有这些特点使得MCU对CAN总线的操作变得非常简单。PCA82C250是由Philips半导体公司生产的一款CAN收发器,是CAN协议控制器和物理传输线路之间的接口。它可以用高达l Mb/s的位速率在2条有差动电压的总线电缆上传输数据。
 
  1.2 设计原理
 
  本文将CAN智能节点需要实现的功能统称为功能模块。由于AT91RM9200处理器具有丰富的系统与应用外设及标准的接口,因此根据应用的需要很容易就可实现功能模块的扩展。本文着重说明AT91RM9200处理器如何实现CAN总线的扩展。
 
  AT91RM9200处理器提供4个SPI接口。其中MOSI(主机输出从机输入)、MISO(主机输入从机输出)、SPCK(串行时钟)3个引脚信号由4个SPI接口共用;而4个片选信号NPCSO,NPCSl,NPCS2,NPCS3则用于分别选通4个SPI接口。而CAN控制器MCP2510的SPI接口引脚定义:SI(数据输入)、SO(数据输出)、SCK(时钟输入)、CS(片选输入)。该设计将AT91RM9200第二个SPI接口与MCP2510的SPI接口相连(MOSI←→SI,MIS0←→SO,SPCK←→SCK,NPCSl←→CS),从而建立了它们之间通信的桥梁。同时将MCP2510芯片的中断输出引脚INT与AT91RM9200芯片的中断输入引脚IRQ5相连,从而可将MCP2510芯片产生的中断(包括发送、接收、报文错误、总线活动唤醒、错误等中断)事件通知AT91RM9200处理器,让其作出相应的处理。
 
  CAN控制器MCP2510可以通过串行数据发送引脚(TXCAN)和串行数据接收引脚(RXCAN)直接连接到CAN收发器PCA82C250。该设计为了实现MC-P2510与PCA82C250之间的电流隔离,在它们之间放置了2个光耦。然而,在协议控制器和收发器之间使用光耦,通常会增加总线节点的循环延迟。光耦6N137的典型传播延时为60 ns,比较适合传输速率小于等于125 Kb/s时的中低速应用场合;而在传输速率在125 Kb/s~1 Mb/s的高速应用场合中,应考虑使用传播延时小于40 ns的高速光耦,如HCPL-7101。
 
  CAN收发器PCA82C250通过有差动发送和接收功能的2个总线终端CANH和CANL连接到总线电缆。PCA82C250的输入引脚Rs通过外接电阻Rext到地,可以选择3种不同的工作模式。第1种是高速模式,支持最大的总线速度和/或长度;第2种是斜率模式,其输出转换速度可故意降低以减少电磁辐射;第3种是准备模式,其在电池供电并对功耗消耗非常低的应用非常适合。该设计将PCA82C250的引脚RS外接阻值为47 kΩ的电阻,从而使它工作在斜率模式,这样可以使用非屏蔽的总线电缆,降低系统的成本。但总线信号转换速率被故意减低了,因此该设计只能应用在传输速率小于等于125 Kb/s时的中低速应用场合,相应光耦选择6N137即可。
 
         2 软件设计
  CAN智能节点软件设计主要包括2个方面:CAN通信和CAN节点功能模块的软件设计。CAN节点功能模块软件的实现因需求而异,在此不做介绍。本文着重介绍CAN通信软件的设计,它主要由3部分组成:CAN初始化、CAN发送数据、CAN接收数据
 
  2.1 CAN初始化

  由图2(a)可知,CAN初始化主要包括PIOA端口初始化、SPI初始化、MCP2510初始化、中断初始化。
 
 
  现分别介绍如下:
 
  (1)PIOA端口初始化。由于AT91RM9200每个引脚可配置为通用功能I/O线或与1个或2个外设I/O复用的I/O线。因此必须通过软件配置PIOA端口:将PA0,PAl,PA2,PA4引脚分别定义为MISO,MOSI,SPCK,NPCSl,从而完成CAN智能节点SPI接口的定义;将PA3引脚定义为IRQ5,从而完成CAN智能节点中断信号的定义。
 
  (2)SPI初始化。通过PIOA端口初始化,只是完成SPI接口的引脚定义。为了使SPI接口能够正常工作,首先配置电源管理控制器(PMC)以使能SPI时钟;如果允许SPI中断请求,必须对高级中断控制器(AIC)进行配置;最后通过SPI的模式寄存器SPI_MR。指定SPI为主机模式、固定外设选择、SPI时钟为MCK、片选信号NPCSl有效;通过SPI的片选1寄存器SPI_CSRl指定SPCK时钟极性、时钟相位以支持MCP2510的(O,O)或(1,1)的SPI模式,指定SPI接口以8位数据进行传输匹配MCP2510的命令及数据格式,指定SPI的串行时钟波特率以匹配与MCP2510的通信。
 
  (3)MCP2510初始化。在完成PIOA端口、SPI初始化的基础上,即可按照图2(a)虚线框中的流程进行MCP2510初始化:首先必须使MCP2510进入配置模式;然后对MCP2510相关寄存器(位定时配置寄存器、接收滤波寄存器、接收屏蔽寄存器、引脚控制和状态寄存器)进行配置;最后使MCP2510进入正常模式。根据MCP2510提供的SPI命令集(读指令、写指令、请求发送指令、状态读指令、位修改指令、复位指令),可以通过对AT91RM9200的SPI接收数据寄存器SPI_RDR,SPI发送数据寄存器SPI_TDR,SPI状态寄存器SPI_SR的操作实现相应的函数:McpRdByte(),Mcp-WrByte(),WriteRTS(),McpRdStatus(),BitModify(),McpReset()。软件通过这些基本的指令函数完成MCP2510相关寄存器的配置。
 
  (4)中断初始化。通过AT91RM9200的高级中断控制器(AIC),首先配置IRQ5中断的优先级为最高,中断触发类型为下降沿触发;接着将中断服务程序IRQ5_ISR()的地址设置到中断向量寄存器;最后使能IRQ5中断。
 
  2.2 CAN发送数据
 
  当完成CAN的初始化后,即可使用3个发送缓冲器发送报文数据。由图2(b)可知:在发送数据前,首先通过发送缓冲器N(N=O,1,2)控制寄存器TXBNCTRL终止报文发送,并设定发送缓冲器N报文发送的优先级;接着通过发送缓冲器N标准标识符高低位寄存器TXBNSIDH,TXBNSIDL设定标准标识符,如果报文采用扩展标识符,还需通过发送缓冲器N扩展标识符高低位寄存器TXBNEID8,TXBNEID0设定扩展标识符。当发送缓冲器N相关寄存器初始化后,发送任务处于休眠等待状态。一旦有数据需要发送,即可将需要发送的数据(每次最多8 B)存放在发送缓冲器N的数据寄存器TXBND7~TXlBND0,并且通过送缓冲器N的数据长度寄存器TXBNDLC设定每次发送的字节数,最后通过发送缓冲器N控制寄存器TXB-NCTRL启动数据发送。当数据发送完毕,发送任务又处于休眠等待状态。
 
  2.3 CAN接收数据
 
  当完成CAN的初始化后,即可使用两个接收缓冲器接收报文数据。由图2(c)可知:在接收数据前,首先通过接收缓冲器N(N=0,1)控制寄存器RXBNCTRL,设定接收缓冲器的工作模式为接收符合滤波条件的所有带扩展标识符或标准标识符的有效报文;如果允许MCP2510接收中断,还需通过中断使能寄存器CANINTE允许接收缓冲器N装入报文时产生中断。
 
  当接收缓冲器N相关寄存器初始化后,接收任务处于休眠等待状态。当接收任务通过轮询或中断方法发现需要接收数据时,它通过接收缓冲器N标准标识符高低位寄存器RXBNSIDH,RXBNSIDL获取标准标识符;如果收到的报文是扩展帧,可通过RXBNSIDL及接收缓冲器N扩展标识符中间、低位寄存器RXBNEID8,RXBNEIDO获取扩展标识符;通过接收缓冲器N数据长度码寄存器RXBNDLC获取接收到的数据字节个数,进而通过接收缓冲器N数据寄存器RBNDm7~RBNDm0获取接收报文中的数据信息。当数据接收完毕,接收任务又处于休眠等待状态。 
 
  3 软硬件调试
 
  当CAN智能节点的硬件和软件设计完毕,需要对其进行软、硬件的调试以验证其设计的正确性。CAN智能节点软、硬件调试按以下步骤依次进行:
 
  (1)CAN自发、自收功能调试。只要在CAN初始化过程完成MCP2510相关寄存器的配置,将MCP2510设置为环回模式,即可使MCP2510器件内部发送缓冲器和接收缓冲器之间进行报文自发、自收,而无需通过CAN总线。
 
  (2)CAN通信功能调试。按照图3所示方案进行CAN通信功能的调试。其中USB_CAN适配器采用武汉吉阳光电科技有限公司一款带有USB接口和1路CAN接口的GY8507 USB_CAN总线适配器。通过该适配器,PC可以通过USB接口连接一个标准CAN网络,从而与CAN智能节点通信。使用厂家提供的CANTools工具软件可以方便进行CAN智能节点数据的发送和接收调试。
 
 
  (3)CAN功能模块调试。由于CAN智能节点具体实现的功能各异,不详细介绍CAN功能模块的调试。
 
  4 结语
 
  目前已完成CAN智能节点通信电路的软、硬件设计及调试,并成功将软件移植到VxWorks 5.5操作系统上运行。基于功能强大的AT91RM-9200处理器以及高可靠和强实时的VxWorks 5.5操作系统,容易构建出满足应用需求的CAN智能节点。
此内容为AET网站原创,未经授权禁止转载。