单片机和MCP2510的CAN息线通信模块设计.docx

上传人:b****4 文档编号:12038782 上传时间:2023-04-16 格式:DOCX 页数:11 大小:95.52KB
下载 相关 举报
单片机和MCP2510的CAN息线通信模块设计.docx_第1页
第1页 / 共11页
单片机和MCP2510的CAN息线通信模块设计.docx_第2页
第2页 / 共11页
单片机和MCP2510的CAN息线通信模块设计.docx_第3页
第3页 / 共11页
单片机和MCP2510的CAN息线通信模块设计.docx_第4页
第4页 / 共11页
单片机和MCP2510的CAN息线通信模块设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机和MCP2510的CAN息线通信模块设计.docx

《单片机和MCP2510的CAN息线通信模块设计.docx》由会员分享,可在线阅读,更多相关《单片机和MCP2510的CAN息线通信模块设计.docx(11页珍藏版)》请在冰豆网上搜索。

单片机和MCP2510的CAN息线通信模块设计.docx

单片机和MCP2510的CAN息线通信模块设计

单片机和MCP2510的CAN息线通信模块设计

作者:

66wen 来源:

维库开发网 更新时间:

2009年09月21日 编辑:

admin

内容摘要:

CAN总线系统智能节点是网络上报文的接收和发送站,一般由单片机和CAN控制器或二者合二为一组成。

本文的智能节点可联结多个集散控制系统,其软硬件电路的设计方法同样适合于其他基于CAN总线的分布式控制系统的节点设计。

关键词:

CAN协议CAN总线外部中断CAN控制器维库中断源DIP封装维持电流单片机控制字

CAN(Controller Area Network)总线,即控制器局域网。

由于具有高性能、高可靠性以及独特的设计,CAN总线越来越受到人们的重视。

德国的Bosch公司最初为汽车监控和控制系统设计了CAN总线,现在,其应用已面向过程工业、机械工业、纺织工业、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。

CAN总线已经形成国际标准,并已经公认为是最有前途的现场总线之一。

CAN总线规范已经被国际标准化组织制订为国际标准ISOll898,并得到众多半导体器件厂商的支持,推出各种集成有CAN协议的产品。

CAN总线系统智能节点是网络上报文的接收和发送站,一般由单片机和CAN控制器或二者合二为一组成。

MCP2510是Microchip公司生产的一种独立的可编程CAN控制器芯片。

本文将介绍新型的独立CAN通信控制器MCP2510,并给出其在CAN总线系统智能节点中的应用实例。

1 MCP2510芯片介绍

MCP2510是一种带有SPI接口的CAN控制器,DIP封装如图l所示。

它支持CAN技术规范V2.OA/B。

能够发送或接收标准的和扩展的信息帧,同时具有接收滤波和信息管理的功能。

MCP2510通过SI接口与MCU进行数据传输,最高数据传输速率可达5Mbps,MCU可通过MCP2510与CAN总线上的其他MCU单元通信。

MCP25lO内含3个发送缓冲器和2个接收缓冲器,同时还具有灵活的中断管理能力,这些特点使得MCU对CAN总线的操作变得非常简便。

1.1MCP2510的主要特点

◇支持CANV2.OA/B;

◇具有SPI接口,支持SPI模式0,O和l,1;

◇内含3个发送缓冲器和2个接收缓冲器,可对其优先权进行编程;

◇具有6个接收过滤器,2个接收过滤器屏蔽;

◇具有灵活的中断管理能力;

◇采用低功耗CMOS工艺技术,其工作电压范围为3.0~5.5V,有效电流为5mA,维持电流为10μA;

◇工作温度范围为-40~+125℃。

1.2 结构及工作原理

MCP25lO有PDIP、SOIC和TSSOP三种封装形式。

图2是MCP2510的内部结构框图。

CAN协议机负责与CAN总线的接口,SPI接口逻辑用于实现同MCU的通信,而寄存、缓冲器组与控制逻辑则用来完成各种方式的设定和操作控制。

现结合其工作过程将各部分的功能、原理作一介绍。

(1)收发操作

MCP2510的发送操作通过3个发送缓冲器来实现。

这3个发送缓冲器各占据14字节的SRAM。

第1字节是控制寄存器TXBNCTRL,该寄存器用来设定信息发送的条件,且给出了信息的发送状态;第2~6字节用来存放标准的和扩展的标识符以及仲裁信息;最后8字节则用来存放待发送的数据信息。

在进行发送前,必须先对这些寄存器进行初始化。

(2)中断管理

MCP2510有8个中断源,包括发送中断、接收中断、错误中断及总线唤醒中断等。

利用中断使能寄存器(CANINTE)和中断屏蔽寄存器(CANINTF)可以方便地实现对各种中断的有效管理。

当有中断发生时,INT引脚变为低电平并保持在低电平,直到MCU清除中断为止。

(3)错误检测

CAN协议具有CRCF错误、应答错误、形式错误、位错误和填充错误等检测功能。

MCP2510内含接收出错计数器(REC)和发送出错计数器(TEC)两个错误计数器。

因而对网络中的任何一个节点来说,都有可能因为错误计数器的数值不同而使其处于错误一激话、错误一认可和总线一脱离3种状态之一。

2 MCP2510在智能节点中的应用实例

利用MCP2510和CAN总线收发器TJAl050可构成一个CAN总线分布式测控网络。

系统可包括一个主控制器和多个节点控制器,这种节点控制器可对电动机的电流、电压及周围的温度进行监控,其结构如图3所示。

这种网络拓扑结构采用了总线式结构和无源抽头连接,且结构简单、成本低,因而系统的可靠性较高。

其信息传输采用CAN通信协议,通信介质采用双绞线。

由于CAN总线是基于发送报文的编码,不对CAN控制节点进行编码,故系统的可扩充性比较好,同时增删CAN总线上的控制节点不会对系统的其余节点造成任何影响。

节点控制器的MCU可选用具有SPI接口的微处理器,也可采用不带SPI接口的微处理器。

本系统采用的是不带SPI接口的微处理器AT89C5l。

AT89C51可通过P1口与CAN控制器的SPI接口直接相连,并用软件算法来实现SPI接口协议。

CAN总线收发器TJAl050则作为MCP2510与物理总线的接口。

如果需要进一步提高系统的抗干扰能力,则可在MCP2510和TJAl050之间再加一个光电隔离器。

智能节点电路原理图如图4所示。

2.1 软件设计

MCP2510正常工作之前,需要进行正确的初始化,包括设置SPI接口的数据传输速率、CAN通信的波特率、MCP25lO的接收过滤器和屏蔽器以及发送和接收中断允许标志位等。

与SJAl000不同的是,单片机对MCP2510的接收缓冲器和发送缓冲器的操作,必须通过SPI接口用MCP25lO内置读写命令来完成。

其读、写命令时序图如图5和图6所示。

本文中MCP2510主要采取中断模式进行总线数据的接收和发送。

整个系统主序提供两种中断:

定时器中断和外部中断。

定时器中断的中断子程序主要负责处理来自模拟通道AINO~AIN7的A/D数据,向MCP25lO发送“数据发送请求命令”以及发送数据。

外部中断的中断处理子程序主要包括CAN总线错误处理子程序和数据接收子程序。

2.2 软件主体设计流程

软件主体设计流程如图7所示。

软件设计时需要注意以下问题:

①因为MCP2510在初始化完成后处于默认Config-uration模式下,所以就需要在MCP2510的初始化完后将其置为Normal模式,否则MCP2510将一直停留在Configuration模式下,不能正常进行工作。

将MCP2510置Normal模式可通过使用MCP2510内置的BitModify(位修改)4指令向CANCTRL控制字写入一个0字节来实现。

②在对MCP2510进行任何操作之前,都要由微处理器向MCP2510的片选CS输出一个低电平,使得MCP2510选通。

③在执行MCP2510的“读”操作时,发送完读指令及其地址码之后,仍然需要向MCP2510提供时钟,以接收“读”到的数据。

可以通过向MCP2510发送一个O字节来实现。

④在对MCP2510完成任意操作后,都要延时一段时间,使其有足够的时间来准备接收下次操作的命令,防止出现MCP2510“忙”的情况。

3 总 结

CAN总线已被公认为是最有前途的几种现场总线之一。

因其性价比高、实现简单等突出优点深受越来越多的研发人员的青睐。

本文的智能节点可联结多个集散控制系统,其软硬件电路的设计方法同样适合于其他基于CAN总线的分布式控制系统的节点设计。

本篇文章共2页,此页为末页 首页

CAN总线与以太网互连系统设计

作者:

66WEN收集整理 来源:

 更新时间:

2006年09月13日 编辑:

DB

内容摘要:

摘要:

介绍了一种基于单片机SX52的CAN与以太网互连方案,阐述了以太网和CAN总线网络协议转换的软硬件设计,实现了以太...

关键词:

控制器协议转换模块以太网发送程序网关数据CAN

摘要:

介绍了一种基于单片机SX52的CAN与以太网互连方案,阐述了以太网和CAN总线网络协议转换的软硬件设计,实现了以太网与现有CAN总线网的直接连接。

保证管理监控层(以太网)与生产测控层(CAN总线网)之间的连接,使得上下层数据能方便地通信。

 关键词:

现场总线 CAN总线 以太网在大型企业自动化系统中,上层企业管理层和生产监控层一般都采用以太网和PC机,而下层车间现场则采用现场总线和单片机测控设备。

上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡或并行打印口的EPP接口卡实现。

这种连接方式成本高,开发周期长。

针对这种情况,笔者设计一种单独的CAN以太网网关互连系统,成功地实现以太网与现有CAN总线网的直接数据互联。

1 系统结构系统总体结构分为三部分:

现场测控网络(CAN网络)、嵌入式透明SX52网关、以太网信息管理终端(如监控平台和网络数据库等),如图1所示。

CAN总线是一个设备互连总线型控制网络。

在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。

但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层需通过数据网关。

嵌入式透明SX52网关就是为此而设计的。

透明式网关在以太网应用层构建和解析完整的CAN协议数据包。

CAN协议数据包作为TCP/IP网络应用层的数据进行传输,它对通信数据的具体实际意义不做任何解释。

透明式网关由通信处理器、CAN总线控制器和以太网控制器三部分组成。

其中SX52单片机为核心处理器,它实现了CAN控制网络与以太网之间的协议转换。

以太网信息管理层的控制指令发送到嵌入式透明SX52网关,将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。

同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。

以太网信息管理终端是一个根据用户的具体要求而设计的用户层应用软件。

它可以是一个WIN32监控程序或网络数据库(记录CAN节点设备数据)软件等;甚至可能是CAN节点设备的服务器软件,为设备提供较复杂的数据处理工作。

2 硬件设计系统硬件分为两大部分:

CAN总线网络设备接口设计和嵌入式透明SX52网关设计。

2.1 CAN总线网络设备接口设计CAN总线网络设备接口设计较网关设计简单。

它是在完成设备功能的基础上加入一个CAN通信控制器接口芯片,实现与CAN总线网络的连接。

考虑到开发成本和灵活性,笔者在设计中选用PHILIPHS公司的独立CAN通信控制器SJA1000芯片和CAN总线收发器82C250芯片。

其结构如图2所示。

2.2 嵌入式透明SX52网关设计嵌入式透明网关设计是整个系统设计的核心。

其结构如图3所示。

它由CAN控制器协议转换模块和以太网控制器协议转换模块两部分组成。

网关硬件中SX52微处理器起核心作用。

它是由美国Ubicom公司研制的高速可配置通信控制器,其处理速度相当高。

在外接100MHz时钟时,指令执行速度可达100 MIPS。

它可实现TCP/IP协议栈中的ARP、IP、UDP、TCP、HTTP、SMTP、ICMP等网络协议。

CAN控制器协议转换模块硬件电路原理如图3左框图。

它由三部分组成:

微控制器SX52、独立CAN通信控制器SJA1000、CAN总线收发器82C250。

其中SX52为唯一的CPU核心,负责SJA1000的初始化,通过读写SJA1000内部寄存器实现数据的接收、发送和错误处理等。

PCA82C250则提供对总线的差动发送能力和对CAN控制器的差动接收能力。

以太网控制器协议转换模块主要由微控制器SX52、以太网通信控制器RTL8019AS和隔离滤波器FB2002组成。

RTL8019AS是台湾Realtek公司制造的一种高集成度的全双工10Mbps以太网控制芯片,实现了基于Ethernet协议的MAC层的全部功能,内置16KB的SRAM、双DMA通道和FIFO完成数据包的接收和发送功能。

在网关设计中,使用跳线模式(JP置为高)硬配置RTL8019AS为8位模式。

使用RTL8019的低5位地址线A0~A4以及低8位数据线D0~D7。

SX52的B口的B0~B4脚作为地址线连接RTL8019AS的低5位地址线,B5~B7作为控制线分别连接读写时序控制脚IORB、IOWB、IOCHRDY;C口作为数据线连接RTL8019AS的低8位数据线;A口保留,用作日后扩展。

图3中AT24C64为8KB EEPROM,主要用来保存嵌入式透明SX-52网关的配置信息,如网关IP地址、MAC地址和SJA1000的ID网络标示符、网络掩码AMR和总线定时(BTR0、BTR1)等。

这样,可以灵活方便地修改网关参数,适应不同环境,同时也考虑到以后的扩展。

RTL8019AS除与SX52连接外,还将其网络收发器的4根引脚TPOUT+、TPOUT-、TPIN+、TPIN-通过外接的隔离滤波器FB2002与以太网相连。

采用隔离滤波器FB2002是为了提高网络通信的抗干扰能力。

3 软件设计整个互联系统的软件设计可以分为三部分:

CAN总线设备接口通信程序、透明网关协议转换程序和以太网层应用程序设计。

其中,CAN总线设备接口通信程序和透明网关协议转换程序的CAN控制器协议模块在结构上有较大的相似性,但有可能因采用微控制器不同而导致实现的程序语言相异。

因而,在此不作论述,而主要讨论后两个方面的程序设计。

3.1 透明网关协议转换程序透明网关协议转换程序的整体设计思路为:

当以太网应用层有数据要发送到CAN节点时,首先,数据发送到透明网关由以太网控制器协议转换模块从传输层数据报文中解析出完整的CAN协议数据包,存放在数据缓冲区A再通知总调度模块,由它调用CAN控制器协议模块将CAN协议数据包发送到CAN总线上。

反过来,当CAN设备有数据要发送到用户层时,首先,数据发送到透明网关由CAN控制器协议模块将完整的CAN协议数据包存放在数据缓冲区B再通知总调度模块,由它调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装起来,再发送到以太网的应用层。

其程序结构如图4所示。

3.1.1 CAN控制器协议模块CAN控制器协议转换模块程序主要由SJA1000的寄存器读程序CANRead()、写程序CANWrite()、初始化程序CANInit()、发送程序txdsub()、接收程序rxdsub()程序组成。

之所以要编写单独的SJA1000的寄存器读、写子程序,这是由SX52芯片只有I/O端口决定的。

选用CAN2.0A协议构建CAN总线控制网络,对SJA1000的初始化主要完成控制寄存器CR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线定时寄存器BTR0,1和输出控制寄存器OCR的设置。

初始化完成后,由总调度模块监控SJA1000控制器。

当CAN总线上有数据到达时,它调用接收子程序rxdsub(),把这一帧数据包存入数据缓冲区B中,然后释放接收缓冲器。

同样,当有按CAN2.0A协议格式组合成的一帧数据报文在数据缓冲区A中要发送到CAN总线上去时,总调度模块将调CAN发送子程序txdsub()发送。

3.1.2 以太网控制器协议转换模块以太网控制器协议转换模块主要负责从UDP数据包中解析出完整CAN协议报文,存入数据缓冲区A。

同时,可能将数据缓冲区B中的完整CAN协议报文封装成UDP数据报,然后将其发送到以太网上。

本篇文章共2页,此页为首页 下一页

在通信传输层采用UDP协议是考虑到CAN协议数据报为短帧形式(每个数据帧最多为8字节)。

如果采用TCP传输协议,要传输8字节CAN协议数据,要先通过3次握手建立连接,再传输数据,之后还要通过握手释放连接。

这样传输效率对有限的网络资源来说无疑是一种浪费。

而UDP是无连接的传输,可以提高网络传输效率,同时,也减轻网关的处理任务。

当然,UDP传输协议是不可靠的,对于控制网络来说,是不允许的。

为了提高通信的可靠性,采用了回传校验机制。

通过实验测试表明这种方式是行之有效的。

以太网控制器协议转换模块主要由以太网卡驱动、ARP、UDP协议的若干个API函数组成,如NICInit()、NICDMAInit()、NICInitTxFrame()、NICSendTxFrame()、NICReadAgain()、ARPCheckIfIs()、ARPSendResponse()、ARPSendStPacket()、ICMPProcPktIn()、UDPAppInit()、IPGenCheckSum()、、UDPAppProcPktIn()、UDPStartPktOut()和UDPEndPktOut()等。

所使用的变量有:

remoteIP[3:

0]、myIP[3:

0]、UDPRxSrcPortMSB、UDPRxSrcPortLSB、UDPRxDataLenMSB、UDPRxDataLenLSB、UDPTxSrcPortMSB,UDPTxSrcPortLSB、UDPTxDestPortMSB、UDPTxDestPortLSB、DPTxDataLenMSB, UDPTxDataLenLSB等。

系统首次执行或复位时,以太网控制器协议转换模块将首先调用NICInit()和UDPAppInit()等进行NIC、ARP、IP、UDP和应用程序的初始化。

初始化完成后,即进入主循环。

在主循环中,SX52将反复检测RTL8019AS是否接收以太网帧。

当有数据被接收时,SX52调用NICDMAInit()和NICReadAgain()读入以太网帧首部再调用ARPCheckIfIs()判断接收帧是否为ARP数据。

若是ARP,则转入ARPSendResponse()和ARPSendStPacket()子程序进行ARP处理并发送响应ARP数据报;若不是ARP,则判断是否为IP数据报。

若非IP数据报则清除该以太网帧;当所接收帧包含IP数据报时,则需进一步判断是ICMP数据报还是UDP数据报文。

若是ICMP数据报则执行ICMPProcPktIn()子程序处理ICMP数据报并重发IP数据报;若数据为UDP数据报文,则调用UDPProcPktIn()子程序。

该程序将读入UDP数据报文首部的数据并进行相应处理,还原出完整的CAN协议数据报文存入数据缓冲区B中,再通知总调度程序,由总调度程序调用CAN总线控制子程序将CAN协议数据报文发往CAN总线。

反过来,当总调度程序通知以太网控制器协议转换模块将数据缓冲区B中准备好的CAN协议数据发送到以太网上时,它将调用NICInitTxFrame()、UDPStartPktOut()、IPGenCheckSum()、IPStartPktOut()、NICSendTxFrame()、UDPEndPktOut()等子函数进行发送处理,从而实现CAN总线到以太网的数据传输。

3.2 以太网层应用程序设计以太网上的通信协议一般采用TCP/IP协议。

本文采用流行的SOCKET套接字编程,传输层协议选择UDP(用户数据报协议),通过Visual C++编写用户层程序。

WinSock提供了对UDP的支持,通过UDP协议可以向指定IP地址的透明网关发送CAN协议数据,同时也可以通过它接收CAN协议数据。

发送和接收方处于相同的地位没有主次之分。

利用CAsyncSocket类操纵无连接的数据发送较简单。

首先生成一个本地套接口(需要指明SOCK_DGRAM标记);然后利用 int CAsyncSocketSendTo const void lpBuf int nBufLenUINT nHostPort LPCTSTR lpszHostAddress = NULLint nFlags = 0发送数据,int CAsyncSocketReceiveFromvoid lpBufint nBufLenCString& rSocketAddressUINT& rSocketPortint nFlags = 0 接收数据。

利用UDP协议可以使管理主机和SX52网关实现双向的数据通信。

同时,这种传输方式也易于使数据SX52网关透明化。

本文介绍了一种低成本、高可靠性、快捷的CAN总线与以太网互连方案。

该互连方案保证管理监控层与生产测控层之间的连接,方便了上下层信息交流,满足工厂、变电站等工业场合的应用要求。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1