加载中...
CAN总线及CAN方案
发表于:2010-06-04 | 分类: 应用方案
字数统计: 4k | 阅读时长: 14分钟 | 阅读量:

 

是什么

CAN Controller Area Network,CAN+ CAN- 被誉为自动化领域的计算机局域网 德国Bosch 公司为解决现代车辆中众多的控制和数据交换问题,开发出一种CAN(Controller Area Network)现场总线通信结构。CAN总线硬件连接简单,有良好的可靠性、实时性和性能价格比。CAN总线能够满足现代自动化通信的需要,已成为工业 数据总线通信领域中最为活跃的一支。    

CAN的特点

CAN可靠性高,具有较好的仲裁机制(时间的先后、ID的大小、帧的类型等确定优先级);废除了传统的站地址编码,而代之以标识符(协议中分配),节点配置更灵活    

  1. CAN总线为多主站总线,各节点均可在任意时刻主动向网络上的其他节点发送信息,不分主从,通信灵活;
  2. CAN总线采用独特的非破坏性总线仲裁技术,优先级高的节点优先传送数据,能满足实时性要求;
  3. CAN总线具有点对点、一点对多点及全局广播传送数据的功能;
  4. CAN总线上每帧有效字节数最多为8个,并有CRC及其他校验措施,数据出错率极低,万一某一节点出现严重错误,可自动脱离总线,总线上的其他操作不受影
  5. CAN总线只有两根导线,系统扩充时,可直接将新节点挂在总线上即可,因此走线少,系统扩充容易,改型灵活
  6. CAN总线传输速度快,在传输距离小于40 m时,最大传输速率可达1 Mb/s
  7. CAN总线上的节点数主要取决于总线驱动电路,在CAN2.0B标准中,其报文标识符几乎不受限制

总之,CAN总线具有实时性强、可靠性高、通信速率快、结构简单、互操作性好、总线协议具有完善的错误处理机制、灵活性高和价格低廉等特点。

CAN如何进行地址编码

最大的优点是废除了CAN总线取消了传统的站地址编码,而代之以对通信数据块进行编码。不存在地址概念,增加节点其他的都不需要改变,支持以数据为中心的通信模式。当电梯层站数不同时,只需要在总线上进行增减控制器的节点数,并对相应的数据帧进行适当的修改。 不采用地址编码那怎么办?485通过硬件本地址进行选择,CAN不通过本地址,那如何判断是否进行接收? 终于找到答案: 总线控制器中有接收滤波器:它把报文头中的标识符和接收滤波寄存器中的内容进行比较,以判断该报文是否被接收。如果被接收,报文存入RXFIFO。 其实相当于软件设置地址了 数据块的标识符有 11  位 CAN2.0A  通信协议或 29 位CAN2.0B通信协议。 二进制数表示,因此理论上可以定义 2的11次方或 2的29次方个不同的数据块。这种按数据块编码的方式还可以使不同的节点同时收到相同的数据,这在分布式控制领域非常有用。 CAN总线节点的软件设计主要包括三大部分: CAN节点初始化、 报文发送和 报文接收。初始化程序设计对于 CAN 总线节点的正常工作相当重要。它主要包 括工作方式的设置、时钟输出寄存器的设置、接收屏蔽寄存器和接收代码寄存器 的设置、总线定时器的设置、输出控制寄存器的设置和中断允许寄存器的设置。 SPI CAN通信协议主要由CAN控制器完成 CAN通讯是通过SPI对MCP2510芯片的操作 复位MCP2510 读MCP2510 写MCP2510 通信接口模块程序主要包括三部分:初始化子程序、发送子程序和接收子程序。初始化程序主要是通过CAN控制器控制段中的寄存器写入控制字,从而确定CAN控制器的工作方式等。有三种方式进入初始化程序:一是上电复位,二是硬件复位;三是软件复位,即在运行期间通过给CAN控制器发一个复位请求,置复位请求位为1。在复位期间必须初始化的寄存器有控制寄存器CTL、发送控制寄存器TCR、接收中断允许寄存器RIER、总线定时寄存器BTR、验收控制寄存器IDAC、验收寄存器IDAR、验收屏蔽寄存器DMR等。 标识符的值越小,帧数据的优先级越高 ref 比如可以软件来分析地址接收与否的软件过滤相比,CAN把这个工作交给控制器收发器了,是硬件过滤,减少了系统开销 控制器提供滤波器和屏蔽寄存器 屏蔽寄存器与接收的标识符相或,得到值是接收滤波器的值的帧允许接收,其他的拒绝 例如设置 某接收滤波寄存器00000000001(11位) 接收屏蔽寄存器11111111101(11位) 因为屏蔽器规定第二位(为0)以外的所有标识符位要严格匹配(与滤波器值一致),第二位的滤波器值和收到的CAN标识符第二位值是否一致都可以. 则可接收标识符为00000000011和00000000001的帧,其他的拒绝 你一个网络不可能连接那么多节点,11位的标识符有点浪费,我们可以将最高3位用来表示所发送的数据类型,在接收点设置滤波器和屏蔽器只比较节点号部分, 如何设置滤波器 屏蔽寄存器 如何设置标识符 DeviceNet协议定义了分配方法 顺便问一下如果想设置验收滤波器只接受标示符为0x00000021的CAN数据,验收滤波器如何设置 ———————————————————————– 很显然,你的高位是0x0000,低位是0x0021,所以你标识符这位直接配 CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterIdLow=0x0021; 然后配置屏蔽,你如果只接收这个标识符,那很简单,全部配成1(即必需匹配) CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF; 当然你可以直接把配置成标识符模式 现在需要一起发送超过八个字节的 数据。。但是 SJA1000 的一次最多只能发送八个字节的数据。如何能 次发送超过八个字节的 数据 发送拆开,接收方重组 ^_^,这下明白了,之前我一直以为 CAN 总线传输数据,标识符只是用来鉴别地址,接收节点收到的只 有那 8 个字节数据,标识符做完地址鉴别后就没有用了,原来节点接收数据后,标识符也可以像数据一样读 出来!!这下就知道主机到底是要干嘛了! 标识符和数据都是可以灵活使用的,不一定非得在初始化时确定ID,看你的协议了 物理地址与标识符,我认为一个是网络中物理节点来区分,一个是以网络中的数据帧种类类型来区分,前者是固定的,后者可以灵活运用标识符中可以包含物理节点数据帧功能种类定义源节点目的节点优先级的丰富的信息,是功能取向的

CAN方案

首先CAN通讯功能包括物理层、数据链路层和应用层。 物理层、数据链路层已经由硬件实现,目前都已经标准化,有现成的部件(CAN控制器和收发器)选择。因此在单片机上加上CAN控制器、收发器,软件实现相应的驱动程序就基本实现了CAN的通讯功能。  

CPU—-(SPI)—-CAN控制器—-(RX/TX)–CAN收发器—CAN总线

  • CAN transceiver

MCP2551 PCA82C250 TJA1040/50 完全替换PCA82C250的TJA1040高速CAN总线收发器TJA1040收发器具备TJA1050的所有功能,同时还具有极低功耗的待机模式,以及通过总线唤醒能力。当TJA1040断电时,总线反向电流为零,这样,没有接通电源的节点不会对网络其他部分造成影响,实际上它们此刻是不可见的。这种特性使得TJA1040非常适用于局部网络中的供电与点火开关相连的节点。  它与PCA82C250/251以及TJA1050完全兼容  

  • CAN controller

MCP2510 是Microchip公司推出的独立CAN总线控制器芯片,它完全符CAN总线2.0B技术规范,并带有符合工业标准的SPI串行接口。MCP2510在目前市场上是体积最小、 最易于使用也是价格最便宜的独立CAN控制器。 MCP2515   国内市场上最热门的独立CAN控制器当属Philips公司的SJA1000,SJAl000是一款独立CAN控制器,应用于移动目标和工业局域区域网控制领域。该器件是Philips公司CAN控制器PCA82C200的替代产品。  

  • CPU

带CAN控制器的CPU+CAN收发器

  带CAN接口CPU推荐: PIC18F45K80 新推出的料,价格好,和4580兼容,如果开发周期有一定时间,目前可用4580开发,随后替换 PIC18F4580    

CAN主要应用领域

汽车电子、电梯等

PIC CAN芯片

8位: 28脚—— PIC18F2480/2580/2585/2680/2682/2685 40/44脚– PIC18F4480/4580/4585/4680/4682/4685 64脚 – PIC18F6585/6680 80脚 – PIC18F8585/8680 16位: PIC24HJ64GP506/510 PIC24HJ128GP506/510 PIC24HJ256GP610 dsPIC33略

CAN电路接口

CAN+ CAN- ==== CAN简介 CAN, 全称为“Controller Area Network”,是国际上应用最广泛的现场总线之一,由20世纪80年代初德国Bosch公司开发。 CAN总线能有效支持分布式控制或实时控制的串行通信网络,具有抗干扰性强和使用可靠等优点,提供高速数据传送, 在短距离(40m)条件下具有高速(1Mbit/s)数据传输能力。 最初主要应用汽车工业,现在广泛应用于汽车工业、航空工业和工业控制等自动化领域,如分布式环境监测系统、温室环境监控系统、变电站变监测系统等。 美国最早将CAN总线应用于导弹、飞机、坦克等武器的通讯系统里。趋势表明,在国际自动控制领域,21世纪将是以CAN等总线为主的现场总线的世纪。 经实际应用系统的检验证明,采用CAN总线的物理层专用接口电路(如PCA82C250等)替代RS-485总线专用接口电路来形成一个混合模式的多机互连的分布式测控系统的通信网络,可以很大程度上克服RS-485总线的固有缺陷,而且在软件上仅做少许修改,甚至不修改原有的RS-485总线的通信软件就能适应新的系统工作。必要时通过修改原有的RS-485总线的通信软件即可实现多主式多机数据通信,充分利用了CAN总线物理层的优势。在硬件方面,能够以简单的形式、较低的价格、较高的性能构造出极具竞争力的分布式测控系统,使多机互连的分布式测控系统的通信网络性能得以提升,保证在恶劣工况条件下通信系统的安全、可靠工作。 RS-485总线基本上独霸了以单片机为核心的分布式多机测控系统通信物理层的应用。但随着科技的发展,RS-485总线的总线效率低、系统实时性差、通讯可靠性低、后期维护成本高、网络工程调试复杂、传输距离不理想、单总线可挂接节点少、应用不灵活等缺点慢慢地暴露出来,因此,迫切需要寻找一种新型、简单有效的通信物理层接口芯片来替代RS-485总线物理层接口电路进行网络通信,这对提高多机互连的分布式测控系统的可靠性具有重大意义 特点: (1)报文(Message) 总线上的报文以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以发送报文。 (2)信息路由(Information Routing) 在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。 (3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。 (4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。 (5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。 (6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。 (7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。 (8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。 (9)总线状态 总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。CAN总线采用二进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。但是CAN协议并没有具体定义这两种状态的具体实现方式,如图7-7所示。 10)故障界定(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。 (11)应答接收节点对正确接收的报文给出应答,对不一致报文进行标记。

附资料

Atmel Microcontrollers CAN Tutorial

上一篇:
VDD VCC VSS VPP
下一篇:
汽车电子应用中的继电器驱动器
本文目录
本文目录