当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于AT91RM9200的CAN智能节点设计

近年来工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度的不断提高,以现场总线技术为基础的开放型集散测控系统得到广泛应用。总线是控制器局域网(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处理器,让其作出相应的处理。[!--empirenews.page--]
    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中断。[!--empirenews.page--]
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智能节点

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

3月20日,技术领先的测试和测量解决方案提供商泰克宣布推出泰克CAN XL(控制器局域网扩展长度)协议解码软件,支持工程师整合最新一代CAN通信技术,并帮助泰克客户在技术日新月异的当今时代保持竞争优势。

关键字: CAN

印度孟买2023年8月17日 /美通社/ -- 全球身份验证和数字KYC解决方案提供商 Accura Scan很高兴地宣布,在以0%错误接受率(FAR)通过演示攻击检测(PAD)iBeta 2级审核后获得ISO...

关键字: BETA CAN FACE ISO

汽车SoC半导体IP领域的顶级提供商Arasan推出了一个完全集成的解决方案:结合CANsec Acceleration IP的CAN-XL IP(适用于安全CAN总线事务)...

关键字: CAN IP 加速器 无缝集成

本文介绍了评估“控制器局域网”(CAN)收发器的正确系统级测试方法。通过展示在多CAN节点系统中执行不同CAN节点之间的数据传输时如何避免实际数据传输问题,解释了此种测试方法的优越之处。阅读本文后,读者将对CAN系统有更...

关键字: CAN收发器 CAN系统 CAN

汽车CAN/LIN总线系统测试的关键是测试流程、测试标准和测试工具,掌握专业的总线分析和测试工具的使用技术,开发测试软件并将它们应用到测试过程是对中国汽车厂家和汽车工程师的重大挑战汽车总线测试流程。概括的讲,汽车总线的测...

关键字: CAN 总线 汽车

现在CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面,现场总线是当今自动化领域技术发展的热点之一、被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠...

关键字: CAN 总线 硬件

CAN(Controller Area Network)是一种多主方式的串行通讯总线。基本设计规范要求有高的位速率、高抗电磁干扰性,而且能够检测出产生的任何错误,当信号传输距离达到 10Km 时 CAN-bus 仍可提供...

关键字: CAN 串行通讯 总线

CAN(Controller Area Network)即控制器局域网络。是应用在现场、在微机化测量设备之间实现双向串行多节点数字通讯系统,是一种开放式、数字化、多点通信的底层控制网络。 CAN协议建立在ISO/OSI模...

关键字: CAN 数字通讯 总线

当前市场行业发展CAN总线虽然有强大的抗干扰和纠错重发机制,但目前CAN大量地运用于电动汽车、充电桩、电力电子、轨道交通等电磁环境比较恶劣的场合,因此对CAN总线的抗干扰能力也会存在挑战,所以对CAN总线的抗干扰能力需要...

关键字: CAN 通信 总线

CAN总线控制器实现网络协议ISO 11898–1的所有低级功能,同时收发器与物理层通信。不同的物理层需要不同的收发器,如高速can、低速容错can、高速可变数据速率can。在一个典型的实现中,CAN总线控制器和微处理器...

关键字: CAN 总线 控制器
关闭
关闭