CAN总线及其应用
CAN基本知识 CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。 由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛的应用。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN 有哪些特性? CAN具有十分优越的特点,这些特性包括: 低成本 极高的总线利用率 很远的数据传输距离(长达10Km) 高速的数据传输速率(高达1Mbit/s) 可根据报文的ID决定接收或屏蔽该报文 可靠的错误处理和检错机制 发送的信息遭到破坏后,可自动重发 节点在错误严重的情况下具有自动退出总线的功能 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息
报文传输由以下4 个不同的帧类型所表示和控制: - 数据帧:数据帧携带数据从发送器至接收器。 - 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。 - 错误帧:任何单元检测到一总线错误就发出错误帧。 - 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
什么是标准格式CAN和扩展格式CAN? 标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。CAN 协议的2.0A版本规定CAN控制器必须有一个11位的标志符。同时,在2.0B版本中规定,CAN控制器的标志符长度可以是11位或29位。遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报文或29位标识符的扩展格式报文。如果禁止CAN2.0B,则CAN 控制器只能发送和接收11位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。
CAN 2.0B协议帧格式
什么是CSMA/CD ? CSMA/CD是“载波侦听多路访问/冲突检测”(Carrier Sense Multiple Access with Collision Detect)的缩写。 利用CSMA访问总线,可对总线上信号进行检测,只有当总线处于空闲状态时,才允许发送。利用这种方法,可以允许多个节点挂接到同一网络上。当检测到一个冲突位时,所有节点重新回到‘监听’总线状态,直到该冲突时间过后,才开始发送。在总线超载的情况下,这种技术可能会造成发送信号经过许多延迟。为了避免发送时延,可利用CSMA/CD方式访问总线。当总线上有两个节点同时进行发送时,必须通过“无损的逐位仲裁”方法来使有最高优先权的的报文优先发送。在CAN总线上发送的每一条报文都具有唯一的一个11位或29位数字的ID。CAN总线状态取决于二进制数‘0’而不是‘1’,所以ID号越小,则该报文拥有越高的优先权。因此一个为全‘0’标志符的报文具有总线上的最高级优先权。可用另外的方法来解释:在消息冲突的位置,第一个节点发送0而另外的节点发送1,那么发送0的节点将取得总线的控制权,并且能够成功的发送出它的信息。
CAN控制器SJA1000 SJA1000 独立的CAN 控制器有2 个不同的操作模式 − BasicCAN 模式和PCA82C200 兼容 − PeliCAN 模式 BasicCAN 模式是上电后默认的操作模式. PeliCAN 模式是新的操作模式它能够处理所有CAN2.0B 规范的帧类型而且它还提供一些增强功能使SJA1000 能应用于更宽的领域
SJA1000 的主要新功能: 标准帧和扩展帧信息的接收和传送 接收FIFO 64 字节 在标准和扩展格式中都有单/双验收滤波器(含屏蔽和代码寄存器) 读/写访问的错误计数器 可编程的错误限制报警 最近一次的误码寄存器 对每一个CAN 总线错误的错误中断 仲裁丢失中断以及详细的位位置 一次性发送当错误或仲裁丢失时不重发 只听模式CAN 总线监听无应答无错误标志 支持热插无干扰软件驱动位速检测 硬件禁止CLKOUT 输出
根据CAN 规范CAN 核心模块控制CAN 帧的发送和接收 接口管理逻辑负责连接外部主控制器,该控制器能可以是微型控制器或任何其他器件。经过SJA1000复用的地址/数据总线访问寄存器和控制读/写选通信号都在这里处理。 SJA1000 的发送缓冲器能够存储一个完整的报文(扩展的或标准的)当主控制器初始化发送,接口管理逻辑会使CAN 核心模块从发送缓冲器读CAN 报文。 当收到一个报文时,CAN 核心模块将串行位流转换成用于验收滤波器的并行数据。通过这个可编程的滤波器SJA1000 能确定主控制器要接收哪些报文。 所有收到的报文由验收滤波器验收并存储在接收FIFO ,储存报文的多少由工作模式决定,而最多能存储32 个报文。
要在CAN 总线上发送的数据被载入SJA1000 的存储区这个存储区叫发送缓冲器。
BasicCAN 模式:缓冲器长10 个字节 − 2 个标识符字节 − 最多8 个数据字节 PeliCAN 模式 这些缓冲器是13 个字节 − 1 字节帧信息 − 2 个或4 个标识符字节标准帧或扩展帧
BasicCAN 模式接收缓冲器
PeliCAN 模式接收缓冲器
独立的CAN 控制器SJA1000 装配了一个多功能的验收滤波器。该滤波器允许自动检查标识符和数据字节,使用这些有效的滤波方法可以防止对于某个节点无效的报文或报文组存储在接收缓冲器里。因此降低了主控制器的处理负载。
滤波器由验收码寄存器和屏蔽寄存器根据给定算法来控制。接收到的数据会和验收代码寄存器中的值进行逐位比较。接收屏蔽寄存器定义与比较相关的位的位置(0=相关,1=不相关),只有收到报文的相应的位与验收代码寄存器相应的位相同报文才会被接收。
BasicCAN 模式里的验收滤波 SJA1000 在这个模式,滤波器是由两个8 位寄存器--验收码寄存器(ACR )和验收屏蔽寄存器(AMR )控制。CAN 报文标识符的高8 位和这些寄存器里值相比较, 因此可以定义若干组的标识符为被任何一个节点接收
在验收屏蔽寄存器里是“1 ”的位置上,标识符相应的位可以是任何值,这对于三个最低位也一样。因此在这个例子里可以接收64 个不同的标识符,标识符其他的位必须等于验收代码寄存器相应位的值。
PeliCAN 模式里的验收滤波 PeliCAN 模式的验收滤波已被扩展4 个8 位的验收码寄存器(ACR0 、ACR1、 ACR2 和ACR3 )和验收屏蔽寄存器(AMR0、 AMR1 、AMR2 和AMR3 )可以用多种方法滤波报文。这些寄存器可用于控制一个长的滤波器或两个短的滤波器。报文的哪些位用于验收滤波取决于收到的(帧标准帧或扩展帧)和选择的滤波器模式(单滤波器或双滤波器)。标准帧的验收滤波可以包括RTR 位甚至数据字节。 对于不需要经过验收滤波的报文位(例如报文组被定义为接受),验收屏蔽寄存器必须相应的位位置上置1。如果报文不包括数据字节(例如是一个远程帧或者数据长度码为零),但是验收滤波包括数据字节,则如果标识符直到RTR 位都有效的话报文会被接收。
单滤波器配置 这种滤波器配置可以定义一个长滤波器(4 字节)。滤波器字节和信息字节之间位的对应关系取决于当前接收帧格式。
标准帧 如果接收的是标准帧格式的信息,在验收滤波中只使用前两个数据字节来存放包括RTR 位的完整的识别码。如果由于置位RTR 位而导致没有数据字节,或因为设置相应的数据长度代码而没有或只有一个数据字节,信息也会被接收的。 注意AMR1 和ACR1 的低四位是不用的。为了和将来的产品兼容这些位可通过设置AMR1.3、AMR1.2 、AMR1.4 和AMR1.0 为1 而定为“不影响”。
扩展帧 如果接收的信息是扩展帧格式的,包括RTR 位的全部识别码将被接受过滤使用。 必须注意的是AMR3 的最低两位和ACR3 是不用的。为了和将来的产品兼容这些位应该通过置位AMR3.1 和AMR3.0 来定为不影响。
双滤波器的配置 这种配置可以定义两个短滤波器。一条接收的信息要和两个滤波器比较来决定是否放入接收缓冲器中。 至少有一个滤波器发出接受信号,接收的信息才有效。滤波器字节和信息字节之间位的对应关系取决于当前接收的帧格式。
标准帧 如果接收的是标准帧信息,被定义的两个滤波器是不一样的。第一个滤波器比较包括RTR 位的整个标准识别码和信息的第一个数据字节。第二个滤波器只比较包括RTR 位的整个标准识别码。 为了成功接收信息,所有单个位的比较时应至少有一个滤波器表示接受。RTR 位置位或数据长度代码是0 时表示没有数据字节存在。无论怎样,只要从开始到RTR 位的部分都被表示接收,信息就可以通过滤波器1。 如果没有向滤波器请求数据字节过滤,AMR1 和AMR3 的低四位必须被置为1 (不影响)。当使用包括RTR 位的整个标准识别码时,两个滤波器都同样工作。
扩展帧 如果接收到扩展帧信息,定义的两个滤波器是相同的,两个滤波器都只比较扩展识别码的前两个字节。 为了能成功接收信息,所有单个位的比较时至少有一个滤波器表示接收。
PCI-9820 非智能两通道CAN 接口卡 PCI-9820 非智能两通道CAN 接口卡是具有高性能价格比的CAN 总线通讯接口卡,该产品采用标准PCI 接口能让计算机方便的连接到CAN 总线上实现CAN2.0B 协议兼容CAN 2.0A 的连接通讯。 PCI-9820 接口卡配备两通道逻辑独立CAN 接口,使得在开发应用中更显方便和灵活,每个通道光电隔离,保护计算机机避免地环流的损坏,增强系统在恶劣环境中使用的可靠性。
设备参数 计算机接口: 32位33M PCI 数据总线即插即用 CAN控制器: PHILIPS SJA1000 CAN收发器: PHILIPS PCA82C250 数据传送速率 :CAN 总线速率可编程范围在5Kbps 1Mbps 内 CAN 通讯接口: DB9 针型插座符合DeviceNet 和CANopen 标准 光电隔离耐压 :1000VDC CAN协议: CAN 2.0B规范兼容CAN 2.0A 建议最高帧流量 :单通道1000 帧/秒 数据缓冲区大小 :软件发送缓冲大小16 帧,软件接收缓冲大小100000 帧 温度 :0- 70 物理尺寸: 标准PCI 短卡130mm * 90mm