can总线开发步骤(周立功公司)

所需积分/C币:40 2014-09-13 00:25:25 440KB PDF
收藏 收藏 1
举报

一个详细的can开发步骤的文档,细点比较多,适合开发过程的使用
广州周立功单片机发展有限公司 www.zlgmcu.com 23cAN芯片 目前,许多大的半导体厂商都生产有各类CAN控制器、收发器芯片;但在欧洲,由 PHILIPS生产的 S]A1000芯片,CAN收发器占领着大部分CAN应用领域。至2002年,累计已生产有10亿个CAN芯 片投入应用 对于不同的应用领域,应该向用户提供不同的芯片组合:包括合适的CAN收发器.CAN控制器或者 内嵌CAN控制器的处理器ε 由 PHILIPS生产的CAN-bus芯片分为以下几类 分类 型号 简介 LPc2119/2192/2194集成2路CAN通道,LQFP64小型封装 32位ARM7芯片 LPc2290/2292/2294集成2/4路CAN通道,TQFP144封装 8位8xC51芯片p87c591 集成 Pelican控制器的增强型MCU 独立CAN控制器SJA1000 应用最广的独立CAN控制器 PCA82C250 通用,远程通讯 通用CAN收发器 PCA82C251 适合工业控制 TJA1050 适合 Devicenet网络、控制应用 高速CAN收发器 JJA1040 适合汽车电子、 Devicenet网络 标准LN收发器TJA1020 适合汽车电子等 其他器件 十多个型号的DC/DC模块、其他CAN-bus元件等 表2.1 ZLGCAM系列芯片 针对这一系列芯片: ZLGCAN已制作了很容易编程的程序库,使得工程师可以在不需要深入理解 CAN2.0协议及芯片内部结构的基础上:就能方便地实现CAN通讯。比如,针对SJA1000芯片,就只需 调用“初始化、发送、接收”命令,并编写简单的“错误处理”程序:就可以实现与CAN相关的所有操作, 从而可以将更多的精力用于产品的通讯(协议〕功能、操作显示等方面。 《基于ARM7的 FUlIcAn函数库v1.0oy P87c591cAN控制器 Pelican模块,V100》 P87c591的A/D转换控制器函数 《S]A1000 Pelican函数库,V130予 ssJA1000 Basiccan函数库,V1.00 2.4CAN工具 一旦准备启动一个具体的CAN-bus项目,首先就会选择合适的CAN-bus开发工具。 ZLGCAM系列 CAN工具品种众多、规格齐全,能够向客户提供多种层次的选择:不仅具有与国际产品相近甚至超越的性 能,又有适合中国国情的价格:性能价格比一流: 由于CAN-bus是一个串行通讯网络,单个CAN节点的调试存在局限性,也会产生许多困难,并不 能够代表实时运行的貞正CAN-bus网络;因此在网络中需要建立1个基于PC的CAN节点(可使用 ZLGCAN接口卡等),才能够有效地对cAN-bus网络通讯进行“实时”调试/监控。 ZLGCAN可以提供 CANstarter开发套件、cAN原型开发板、芯片仿真器、CAN接囗卡、cAN 分析仪、cAN协议转换器.cAN中继器等产品:部分型号已经通过多个行业、企业的实际运行测试,其 中包括很多知名的大型企业、产品性能与质量受到客户信赖 广州周立功单片机发展有限公司 www.zlgmcu.com 2.5通讯协议 在建立一个实际运行的CAN-bus通讯网络时,由CAN底层硬件来实现对物理层、数据链硌层的控 制;CAN2.0协议规定的通讯检错机制已足够保证CAN-bus通讯网络具有非常高的可靠性。但对于用户 协议层,仍然需要制定或选择合适的通讯协议:对网络上的通讯数据流进行解析与管理 下图为CAN-bus通讯层的概念 CAN bus通讯层概念 发送节点 接收节点 应用协议层 通讯数据 应用协议层 数据链路层!→「D+Daa….|D+daa 数据链路层 物理层 CAN CAN L CAN 物理层 CAN bus 图2.7CAN通讯层概念 对于普通的CAN-bus应用领域:采用通常的“命令一响应”模式通讯协议,即可以实现非常可靠 且有效的“主一从”通讯网络。对于需要进行大量数据交换,或者通讯方式灵活的CAN-bus网络,也可 以采用一些标准的多主通讯协议,比如 Hilon b协议:或者采用CAN2.0协议中远程帧定义。 在汽车电子产品领域,通常可参考或直接采用SAEJ1939等一系列国际标准规范。 在电力通讯设计领域, DeviceNET V2.0规范已被采纳为中国国家标准,是未来数年中电力通讯产品 的通讯规约领导者 在智能棧宇通讯领域,建议使用 Modbus协议或沿用原RS485模式等“主一从”协议,以保持产品 的可持续发展,并可以节省开发人力资源ε 2.6cAN附件 在CAN-bus通讯网络的建设中,还需要涉及其他相关联的技术支持,比如:网络保护、通讯电缆。 CAN-bus网络最初被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信 息,形成汽车电子控制网络r基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的 任何错误,主要是用在强干扰环境、室外迒程通讯等场合。因此,CAN-bus收发器已具备些保护功能 新一代收发器比如T]A1040,TJA1041、TJA1054等)更具备很完善的保护功能:但在一些远程通讯 场合或强干扰通讯的场合,还需要根据实际情凊、考虑增加一些附加网络保护设施,比如过电压保护TvS、 温度保护PTC、共模扼流圈、防雷击装置、极性保护等,以防止雷击、浪涌、极性反接等,以预防故暉发 生,起良好的保护作用。 对于通讯电缆,使用国标AWG18(截面积为血0.75mm2)的普通双绞线,一般可以保证在1KM 距离下实现CAN可靠通讯;如果CAN通讯距离超过1KM,则建议通讯电缆线的截面积大于中1.5mm2 广州周立功单片机发展有限公司 www.zlgmcu.com 常规方式是陌通讯距离的加长而适当加大电缆线截面积3在强干扰的应用环境下,建议选择有屏蔽层的通 讯电缆线;此时,通讯电缆线应单端良好接地。如果设备要求符合CAN高层协议( Devicenet、 CANopen 等),则通讯电缆也必须符合对应规范中的要求ε 三,重点分析 3.1cAN-bus历程 虽然,CAN-bus被称为最易于设计的现场总线技术,但是如果从头至尾设计套CAN-bus通讯 网络,即使对非常熟悉MCU的用户来说:这也不是那么简单的事 ZLGCAN提供了非常完善的 CAN-bus技术支持依靠 ZLGCAN提供的设计文档、开发工具等帮助, 客户甚至只需花费一个工作周的时间:即可以设计并调试完成一个真正的基本CAN-bus通讯网络:要知 道,原来这些工作原先可能要花费一个单片机设计工程师近半年的工作时间 下面,我们就以设计并调试一个完整的CAN-bus通讯网络(包括芯片为SJA1000的2个通讯节点 为例,详细介绍这个学习,设计,调试的过程 CAN-bus节点 CAN-bus节点 (S]A1000芯片) (S]A1000芯片) CAN-bus网络 图3.1一个简单的CAN-bus通讯网络 3.1.1cAN-bus网络的连接 CAN-bus网络采用直线拓朴结构,在一个网络上至少存在2个CAN-bus节点。在总线的2个终端 各需要安装1个120U终端电阻;如果节点数目大于2,中间节点就不要求安装120U终端电阻 对于干线,其通讯距离与CAN-bus网络通讯波特率成反比:在5Kbps下能够传输10Km距离,在 1Mbps下能够传输40m距离。对于支线,其长度一般不应超过3米。如果直接采用国际标准规范,则对 干线、支线有更严格的要求, CAN-bus信号采用差分传输方式,所有节点的CANH连接在一起,CANL连接在一起。当总线上 有“1信号时,CANH、CANL之间压差0.9V,称“显性";当总线上有“0”信号时,CANH、CANL 之间压差≤0.4V,称“隐性”。 3.5 CAN H 321 2.5 1.5 CAN L recessive dominant recessive 图32CAN-bus信号的差分波形 3.12cAN-bus单元电路设计 广州周立功单片机发展有限公司 www.zlgmcu.com 我们以一个参考的CAN-bus节点电路为例,进行分析、介绍。这个电路的原图( Protel格式)存放 在 CANstarter-I开发套件中。 这是一个由“P87C52+S]A1000+PCA82C250+电气隔离”组成的CAN-bus标准节点电路 SJA000芯片选用ⅫDATA空间的0X7F00地址页。如果是一个简单的应用,则可以省略电气隔离电路 如果用于强干扰场合:则需要补充前面章节所述的保护电路。S]A1000芯片的复位电路受P87C52芯片 I○引脚却控制这一点需要注意。 这是一个非常成熟且可靠的电路,建议直接采用。 本半 |= SJA1t址:M下m 图3.3CAN-bus参考单元电路 3.13芯片控制程序的编写 在CAN-bus网络中,通讯的数据格式有2种:CAN2.0A格式,11位ID码,也称 Basiccan模式 CAN2.0B格式,29位ID码:也称 Pelican模式; Pelican模式的通讯具有更优秀的表现,且可以兼容 Basiccan模式的通讯3因此,对丁新开发的CAN-bus设计项目:一般都选择 Pelican模式进行通讯 ZLGCAN提供有 Basiccan模式、 Pelican模式下S]A1000芯片的操作函数库,支持A51、C51 语言直接调用,使用非常灵活ε因此:我们直接在项目中调用S]A1000PELI函数库的C51语言版,无 需自行开发关于SJA1000的控制程序. 对SJA1000芯片的操作主要由3个功能环节组成:初始化、发送帧、接收帧 s]A1000芯片的初始化过程比较繁琐,好在 CANstarter-I开发套件中也提供有完整的初始化示范 源程序,直接调用即可。根据程序分析,SJA1000芯片的初始化工作分成10个步骤完成。 步骤 操作对象 函数定义 1检测硬件连接是否正确 REG CAN TEST SJATestInterface( 2进入复位状态 REG CAN CMR SJAEntry ResetModeo 3设置时钟分频寄存器 REG CAN CDR SJASetClock Division( 4|设置输出控制寄存器 REG CAN OCR SJASetoutcontrolo 5设置通讯波特率 REG CAN BTRX SJASetBand Rate Standard 6设置代码验收寄存器 REG CAN ACRX SJASetAccCodeo 7设置代码屏蔽寄存器 REG CAN AMRX SJASetAccMasko 退出复位状态 REG CAN CMR SJAQuitResetMode( 9设置工作模式 REG CAN CMR SJASystemPrgCMDO 10设置中断使能寄存器 REG CAN IER Write SJARego 表3.1SJA1000芯片初始化过程 广州周立功单片机发展有限公司 www.zlgmcu.com 注意:S]A1000初始化时必须确定站片的硬件复位已经完成复位引已变为高电平状态 通过S]A1000芯片发送CAN帧报文、接收CAN帧报文,也可以在SJA1000PELI函数库中直接 调用对应的函数 SENDSJADATA(unsigned char *SEND BUFFER, unsigned char len) REVSJADATA(unsigned char *REV BUFFER, unsigned char len) 在使用发送函数 SENDSJADATA(和接收函数 REVSJADATA)时,注意其参数* SEND BUFFER、 *REV_ BUFFER中所指向的数据内容应符合CAN2.0B协议帧格式。 在节点设备运行的应用程序中还需要完成的代码部分就是采用中断/查询方式读取SJA1000的中断 寄存器,这也与SJA1000_PELI函数库相关,直接调用以下函数: ReadSJAReg(REG CAN IR); 关于节点设备其他部分的功能程序,则参照通常的程序设计方法完成 3.1.4通讯协议的编制 通讯协议的选择可以根据具体应用项目而决定,相关的详细情况请参考前一章节的有关内容。 下面以通常的“命令一响应”模式为例,说明在此过程中需要注意的一些习惯事例 ●主节点发送命令时,遵循“主节点发命令一等从节点发回应-OK”模式,即主节点下达一命令 然后等待接收从节点发来的响应数据,再根据所接收数据的正、误,向应用程序报告此命令的执 行情况。 在帧报文转输过程中仼一帧报文均包含有校验码:接收方需要对报文进行处理,与校验砒较, 判断帧报文的传输正确性 当主节点发送命令后未收到响应:则尝试重发(由硬件或软件完成);累计达到设定的次数时, 即向应用程序报告通讯失败,请求进行检测与维护 3.15cAN-bus网络的调试 CAN-bus是一个串行通讯网络,因而,单个节点的调试存在许多局限性,并不能够代表实时运行的 真正CAN-bus网络。使用 Pelican模式支持的“自收自发”测试功能可以检测节点本身的CAN硬件电路功 能,但也不能够测试与CAN-bus网络密切相关的通讯参数比如:通讯波特率、验收滤波器、总线仲裁、 网络负载等相关参数 借助于一套有 ZLGCANtest通甬用测试软件支持 ZLGCAN接口卡,就可以方便地监听 CAN-bus网络通 讯数据,或者模拟单个CAN-bus节点的行为:向网络发送CAN-bus帧扳文,以提供给其它节点接收信息。 使用 CATalyst分析软件:可以实时监控毎一秒的cAN-bus总线负载率(总线传输数据时间/总时间), 以确保系统运行在可靠的环境下:另外,借助其标识符编辑功能,还可以将总线上捕获的帧报文按易读的 格式显示。 在强大的开发工具帮助下:CAN-bus网络的调试也就变得十分容易而简单。 广州周立功单片机发展有限公司 www.zlgmcu.com 网口区 批梨①设备染作①)缤查的形助 献类,数可100[活 欢位A 次呼实还吧隔 止 [方[山级[长数标 000000 00003.8 0(a3 0808 00 01 02 03 01 05 0 07 00000 000003 00000t 000o 50050005 m0① 0000016 数换扩 0:0:0m c00u0a19 0:ua帮05ms如sms ★送总细时:51 图3.4 ZLGCANtest测试软件界面 经历以上步骤,即已成功建立一个CAN-bus通讯网络。 32cAN-bus应用 对于—个CAN-bus应用人员,所关心的重点多会集中于CAN-bus网络能够貞正实施的实际运行项 目CAN-bus通讯网络功能强大,领先于众多串行通讯应用领域;在具体的应用项目中,客户需要适当“裁 剪”,以经济、可靠的方式组建自己的CAN-bus通讯网络 组态开发:为能够使更多的用户可以容易地休验、设计CAN-bus通讯网络, ZLGCAN系列产 品提供oPC接口,支持在流行的组态软件环境(匡内MCGS、 Kingview、匡际 Intouch、iFi 等丶开发用户自己的CAN-bus网络项目。 如果大家在设计/应用过程中了解到或掌握与CAN-bus网络相关的通讯规范、产品信息、控制网络、 拓展应用等,请与cantons@Zlgmcu.com邮箱联系 四。难点讲解 4.1网络通讯连接 所有符合CAN2.0规范的节点可以连接在一起,构成—个直线拓朴结构的CAN-bus通讯网络;在网 络的2个终端,名需要安装1个120U终端电阻:中间节点不要求安装120U终端电阻 同一个CAN-bus通讯网络中,所有CAN节点的通讯波特率必须致。CAN-bus网络的千线长度与 通讯波特率成反比。通讯波特率为5Kbps时能够传输10Km距离,为1Mbps时能够传输40m距离ε 符合CAN2.0B( Pelican〕规范的CAN节点可以接收或者发送符合CAN2.0 B BasiccAN〕规范 的CAN帧报文;反之则不行。即;CAN2.0B规范是扩展的规范,并向下兼容CAN2.0A规范 只有正确初始化的CAN节点才是CAN-bus网络中的可见工作节点;不上申或未初始化为工作状态 的CAN节点在CAN-bus网络中是不可见的,即使它们巳经存在物理连接。 广州周立功单片机发展有限公司 www.zlgmcu.com 4.2通讯波特率设置 CAN节点的通讯波特率心须与所在CAN-bus总线致。下面以S]A1000芯片为例,说明通讯波特 率的计算过程 S]A1000独立CAN控制器的CAN通讯波特率由寄存器BTR0、BTR1、晶振共3个参数共同决定 计算一个在指定昰振频率下的S]A1000节点通讯波特率,实际上是计算寄存器BTRO、BTR1的设置值, 但手续非常繁琐,工作量很大:需要涉及计算CAN系统时钟冑期( SYNC SEG、TSEG1TSEG2、SW 和NBT)这是由CAN2.0规范所决定,主要是为了使在不同工作方式、通讯距离的CAN节点之间能够力 保正常、可靠通讯ε因此,我们建议直接采用国际CiA协会推荐的SJA1000波特率设置值,如下表所示 晶振频率=16MHz 晶振频率=12MHz Baudrate 〔kbps) BTRO BTR1 BTRO BTR1 Hex)( Hex)( Hex)( Hex 10 31 1C 65 1C 20 18 1C 52 1C 50 09 1C 47 1C 100 04 1C 43 1C 12 25 03 42 1C 250 01 1C 41 1C 500 00 1C 40 1C 800 00 16 40 16 1000 00 14 40 14 表4.1S]A000标准波特率 同时,需要注意:计算得出的CAN通讯波特率也仅是适合一个具体数值范围內的通讯波特率;这意 味着,标称通讯率为100Kbps的CAN节点一般能够与通讯速率为90Kbps-110Kbps的CAN节 点正常通讯 有关这一方面的理论资料,可以参考《確定S]A1000CAN控制器的位定时参数》等相关文档;《单 片机与嵌入式系统应用》等杂志也有相关的论文《CAN总线位定时参数的确定》等资料刊载。 ZLGCAN 也提供有一个计算S]A1000通讯波特率的工具,供大家参考使用 4.3验收滤波器管理 通过合理设置—一个CAN节点的代码验收/屏蔽寄存器组,可对该节点接收CAN帧信忘构成非常灵活 的滤波,从而减少CPU工作负载,提高运行效率。通常情况下,将代码屏蔽寄存器REG_ CAN AMRX 组设置为αxFF在 Basiccan模式j或α XFFFFFFFF(在 Pelican模式)值,即可接收来自CAN总线 上的所有CAN信息帧 在 Pelican模式下,滤方式可以设置为单滤波和双滤波兩种方式。有关这一方面的详细理论资料, 可以参考《CAN控制器S]A1000验收滤波器原理与应用》文档 例如,我们设置PCI-9810接口卡为单滤波方式,用于只接收ID为0X001、0X003的CAN20A 格式标准数据帧:对应的REG_ CAN ACRX、 REG CAN AMRX设置如下 ACRo ACR1 ACR2 A CR3 ID11-ID4 ID3-D0RTR××XX 数据1 数据2 000000000010X|XX AMRO AMR1 AMR2 AMR 广州周立功单片机发展有限公司 www.zlgmcu.com ID11-1D4 ID3-IDO RTRIXXXX 数据1 数据2 00000000010 11111111 11111111 即设冒:ACR=0x00200000,AMR=0×004 F FF FF,接收ID为0x001、0X003的CAN2.0A格式标准数据帧 4.4错误管理机制 理解CAN错误管理机制:对在设计过程中避免CAN-bus网络通讯故障会非常有效。下面将详细地 介绍其中一些关键内容 在CAN2.0规范中,规定了检测以下错误类型的机制 位错误 当发送器将自己发送的电平与总线上的电平相比较:发现两者不相等时产生。当隐性位传输时,显形 位的检测在仲裁区:在帧ACK时间股殿,或被动故璋标忐传输期间,检测电平不-致则不会导致位错误产生 应答错误 当发送器确定帧信息没有得到应答时发生。在CRC校验场及唢结束场之间存在一个应答时间段,该 时间段内所有接收的节点,无论是否是预定的接收者都必须对接收的信息作出应答。 填充错误 当节点检测到6个相同电平值的连续位时发生。在正常工作情况下」当发送器检测到它已经发送了5 个数值相同的连续位时,那么它将在第六位上插入一个取反值(称之为位填充)。所有接收器在CRC循环 冗余检査计算之前将除去填充位ε这样,当节点检测到6个连续的具有相同值的位时:即产生一个填充位 错误。 CRC错误 当CRC(循环冗余检査)值与发送器生成值不匹配时发生。每一帧包含-个由发送器初始化的循环冗 余检查(CRC)域;接收器计算出CRC值:并与发送器产生的值相比较,如果两个值不相等即产生CRC错 误 格式错误 当在一必须发送预定值的区内检测到非法位时发生。确定的预定义的位值必须在CAN帧内的一个确 定点发送,比如起始位、场间隙等。如果在这些区域中的_个內检测到非法位值,即产生格式错误ε 检测到节点错误将改变节点错误状态。为了尽量减小网络上故障节点的负面影响,进而提供故障界定 方法,CAN2.0规范中定义了一个故障界定状态机制。一个节点可能处于下列三种错误状态之 错误主动( Error active)状态 当一个错误主动节点检测到上述某个错误时,它将发送一个错误主动帧,该帧由6个连续的显性位 组成,这一发送将覆盖其他任何同时生成的发送,并导致其他所有节点都检测到一个填充错误,并依次放 弃当前帧 当处于错误主动状态的节点检测到个发送问题时,它将发出一个活动错误帧,以避免所有其他节点 接收信息包ε无论检测到错误的节点是否要接收这个数据,它都要执行这个过程。 错误被动( Error passiⅤve)状态 当一个错误被动节点检测到上述的某一个错误时,它将发出一个错误被动帧,该帧由6个连续的隐 性位组成,这个帧可能会被同时出现的其他发送所覆盖。如果其它站点没有检测到这一错误,将不会引起 丢弃当前帧r 离线(BusO状态 处于离线状态下的节点不允许对总线有任何影响,它在逻辑上与网络断开。 ●关于故障界定状态机制,其所含过程简述如下 ●节点保持对发送和接收错误计数器的跟踪。 节点在开始错误主动状态时错误计数器的值等于0:硬件初始化后错误计数器的偵也等于0 该状态下的节点假设所有检测到的错误非该节点所为

...展开详情
试读 12P can总线开发步骤(周立功公司)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
AlphaGIS 没啥用,分又贵
2018-09-20
回复
wangsheng_10 资料入门可以看看
2015-03-12
回复
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
can总线开发步骤(周立功公司) 40积分/C币 立即下载
1/12
can总线开发步骤(周立功公司)第1页
can总线开发步骤(周立功公司)第2页
can总线开发步骤(周立功公司)第3页

试读结束, 可继续读1页

40积分/C币 立即下载 >