【原创】【飞思卡尔】MCF52235 CAN模块使用教程【1】
0赞CAN总线协议的历史概况
控制器局域网(Controller Area Network,CAN),最早出现于20世纪80年代末,是德国Bosch公司为简化汽车电子中信号传输方式并减少日益增加的信号线而提出的。CAN总线是一个单一的网络总线,所有的外围器件可以挂接在该总线上。CAN技术在汽车电子、电梯控制、安全监控、医疗仪器、船舶运输等方面均得到了广泛的应用,目前已经成为国际上应用最广泛的现场总线之一。
CAN硬件系统的典型电路
1. 最简明的CAN硬件连接方法
该电路主要用于在电磁干扰较弱环境下的近距离通信。进行CAN通信节点调试时,可以利用这个简单且易于实现的电路。另外,可以利用该电路理解CAN总线的通信机制。
3.带隔离的典型CAN硬件系统电路
在实际应用过程中,为了提高系统的抗干扰能力,CAN 控制器引脚CANTX、CANRX 和收发器PCA82C250 并不是直接相连的,而是通过由高速光耦合器6N137 构成的隔离电路后再与PCA82C250 相连,这样可以很好地实现总线上各节点的电气隔离。
4.不带隔离的典型CAN硬件系统电路
在电磁干扰较弱的环境下,隔离电路可以省略,这样CAN控制器可直接与CAN收发器相连。
CAN总线的有关基本概念
1.CAN总线上的数据表示
CAN总线实际上大多数使用双绞线,利用差分方法进行信号表达,它是一种半双工通信方式。CAN总线上用显性(Dominant)和隐性(Recessive)分别表示逻辑0和逻辑1。若不同控制器同时向总线发送逻辑0和逻辑1时,总线上出现逻辑0(相当于逻辑与的关系)。
2.报文、信息路由、位速率、位填充
报文:是指在总线上传输的固定格式的信息,其长度是有限制的。信息路由(Information Routing):在CAN系统中,CAN不对通信节点分配地址,报文的寻址内容由报文的标识符ID指定。位速率(Bit Rate):是指CAN总线的传输速率。在给定的CAN系统中,位速率是固定唯一的。CAN总线上任意两个节点之间的最大传输距离与位速率有关。位填充(Bit Stuffing):是为防止突发错误而设定的功能。
3.多主机、标识符、优先权、仲裁
多主机(Multimaster):CAN总线是一个多主机(Multimaster)系统,总线空闲时,总线上任何节点都
可以开始向总线上传送报文,但只有最高优先权报文的节点可获得总线访问权。标识符ID:CAN节点的唯一标识。在实际应用时,应该给CAN总线上的每个节点按照一定规则分别一个唯一的ID。优先权(Priorities):在总线访问期间,报文的标识符ID定义了一个静态的报文优先权。仲裁(Arbitration):总线空闲时,总线上任何节点都可以开始发送报文,若同时有两个或两个以上节点开始发送,总线访问冲突运用逐位仲裁规则,借助于标识符ID解决。
4.远程数据请求、应答
远程数据请求(Remote Data Request):当总线上某节点需要请求另一节点发送数据时,这种情况,在CAN总线协议术语中叫远程数据请求(Remote Data Request)。应答(Acknowledgment):所有接收器对接收到的报文进行一致性(Consistency)检查。对于一致的报文,接收器给予应答;对于不一致的报文,接收器做出标志。
5. 故障界定、错误标定和恢复时间
故障界定(Fault Confinement):CAN节点能够把永久故障和短暂的干扰区别开来,故障节点会被关闭。
错误标定和恢复时间(Error Signaling and Recovery Time):任何检测到错误的节点会标志出已被损坏的报文。此报文会失效并自动重传。若不再出现错误,则从检测出错误到下一报文传送开始为止,恢复
时间最多为31位的时间。
6. CAN的分层结构
帧结构
CAN总线协议中有四种报文帧(Message Frame),它们分别是数据帧、远程帧、错误帧、过载帧。
1. 数据帧
数据帧由7个不同的位场组成:帧起始(Start Of Frame symbol,SOF)、仲裁场、控制场、数据场、CRC场、应答场、帧结束。
2. 远程帧
远程帧跟数据帧非常相似,不同之处在于二者的远程发送请求位(Remote Transmission Request.)不同。数据帧的RTR位为“0”,远程帧的RTR位为“1”。需要特别注意的一点是远程帧没有数据场。
3. 错误帧
错误帧由CAN控制器的硬件进行处理,与用户编程无关。
4. 过载帧
过载帧由CAN控制器的硬件进行处理,与用户编程无关。过载帧用于在先行和后续数据帧(或远程帧)之间提供一附加的延时。过载帧包括两个位场:过载标志和过载界定符。
11.1.5 位时间
所谓位时间,是指发送一位所需要的时间。实际工作过程的位时间与系统设定的位时间少有偏差,把理想情况下位时间称为标称位时间(Nominal Bit Time)。
一个标称位时间分为4个时间段:同步段(SYNC_SEG)、传播段(PROG_SEG)、相位段1(PHASE_SEG1)、相位段2(PHASE_SEG2)。
飞思卡尔mcf52235 can模块介绍:
完全支持CAN2.0B协议
多达16个报文缓冲区,每个报文缓冲区支持多达8字节数据传输
支持监听模式
3个可编程控制的报文过滤掩码寄存器
可编程控制缓冲区报文发送次序
基于16位自由运行定时器的时间戳机制
全局网络时间,通过特殊报文进行同步
中断掩码
传输介质相互独立
多主机总线
强抗电磁干扰性
对于高优先权信息具有短的响应时间
操作模式
1. 正常模式
在正常模式下,CAN模块收发数据帧、远程帧以及错误帧时,CAN协议的所有功能全部是允许状态。
2. 冻结模式
冻结模式又称为调试模式,主要用于FlexCAN模块初始化设置。
3. 禁止模式
该模式禁止FlexCAN模块。
4. 闭环模式
在系统调试时,往往让CAN控制器工作在闭环模式(也称为“自测模式”),用于检查CAN控制器工作是否正常。
5. 监听模式
在这种模式下,FlexCAN模块禁止数据发送,所有的错误计数器都被冻结,且该模块工作在CAN被动错误模式。
FlexCAN模块的内存映像以及寄存器定义
1.FlexCAN配置寄存器(CANMCR)
CANMCR定义全局系统配置,如模块的操作模式和最大报文缓冲区数目等。
2.FlexCAN控制寄存器(CANCTRL)
CANCTRL用于指定FlexCAN模块与CAN总线相关的属性,比如位速率参数,Rx位采样点,是否启动闭环模式,是否启动监听模式,总线关闭是否自动恢复,是否开启总线关闭/错误中断等。
3.接收掩码寄存器(RXGMASK,RX14MASK,RX15MASK)
这3个寄存器用于过滤接收报文ID。
4.中断掩码寄存器(IMASK)/ 中断标志寄存器(IFLAG)
中断掩码寄存器IMASK包含每一个报文缓冲区的中断掩码。它控制每一个报文缓冲区在一次成功的发送/接收过程以后,是否允许产生中断。
5. FlexCAN自由运行计数器寄存器(TIMER)
该寄存器内有一个16位自由运行的计数器,可以通过CPU进行读写。
FlexCAN报文缓冲区(Message Buffer,MB)
FlexCAN模块使用两个引脚CANTX和CANRX与其他CAN节点进行通信,其内部最重要的一个结构为报文缓冲区结构(Message Buffer Structure),FlexCAN模块通过报文缓冲区进行报文帧的发送/接收。