第48 章 CAN(Flex CAN) FlexCAN模块是一个通信控制器,该模块实现了CAN协议即CAN2.0B协议规范。下图为一个常用的框图,介绍了FlexCAN模块的的字模块,包括了用来存储消息缓冲的相关联的内存区域,Rx全局掩码寄存器、Rx私有掩码寄存器、Rx先进先出队列以及 Rx队列标识过滤器。各个子模块的功能将在随后的章节介绍。 图 48-1 Flex CAN 框图 48.1.1 概述 CAN协议主要(但不是唯一)是设计用于汽车串口总线使用,在以下这些方面满足了规范的要求:实时处理、汽车在电磁干扰环境下的可靠操作、成本效益以及有带宽要求。FlexCAN模块完全实现了CAN协议规范V2.0B版本,该版本支持标准的与扩展的消息帧。消息缓冲区存储在一个专用于 FlexCAN模块的RAM区。可以参考芯片配置细节来了解在 MCU内配置的消息缓冲区的数目。 CAN协议引擎(PE)子模块管理 CAN总线上的串行通信,请求存取 RAM接收和传输消息帧,验证接收到的消息以及进行错误处理。控制器主机接口子模块用来选择接收和传输的消息缓冲区,使用仲裁与 ID匹配算法,以建立同 CPU或者其他模块的连接。时钟、地址、数据总线或者中断输出以及测试信号通过总线接口单元都可以进行访问。 48.1.2 Flex CAN 模块特征 FlexCAN模块具有以下鲜明的传统特征: 1.完全支持 CAN2.0B协议:标准数据帧;扩展数据帧;0~8字节的数据长度;可编程控制的波特率,数据传输速率可达 1Mbps;与内容相关的寻址防止。 2.0到 8字节长度报文缓冲区; 3.每个报文缓冲区都可以配置成发送缓冲区或者接受缓冲区,支持标准和扩展帧格式; 4.每个消息缓冲区都有自己的接受掩码控制寄存器; 5.全功能的接受队列,该队列可以存储最多 6个帧,并且自动进行内部指针处理; 6.传输中止能力; 7.可编程的 CAN协议接口的时钟源,可以是总线时钟也可以是外部晶振; 8.没有使用的结构空间可以当成普通的 RAM空间使用; 9.可编程的回环模式支持自测试; 10.可编程的传输优先级机制:最低ID、最少缓冲区数目或者最高优先级; 11.基于16位自由运行定时器的时间戳机制; 12.全局网络时间,通过一个特殊的帧来同步; 13.中断掩码; 14.独立的传输媒介(假定一个外部收发器); 15.对于高优先权信息具有短的相应时间; 16.低功耗模式,当总线激活时可以编程实现从低功耗模式唤醒。 此外,下面的最新的主要特征也添加到了先前的 FlexCAN版本中: 1.远程请求帧可以被自动或者软件处理; 2.正常模式...