第48 章 CAN(Flex CAN) FlexCAN模块是一个通信控制器,该模块实现了CAN协议即CAN2
0B协议规范
下图为一个常用的框图,介绍了FlexCAN模块的的字模块,包括了用来存储消息缓冲的相关联的内存区域,Rx全局掩码寄存器、Rx私有掩码寄存器、Rx先进先出队列以及 Rx队列标识过滤器
各个子模块的功能将在随后的章节介绍
图 48-1 Flex CAN 框图 48
1 概述 CAN协议主要(但不是唯一)是设计用于汽车串口总线使用,在以下这些方面满足了规范的要求:实时处理、汽车在电磁干扰环境下的可靠操作、成本效益以及有带宽要求
FlexCAN模块完全实现了CAN协议规范V2
0B版本,该版本支持标准的与扩展的消息帧
消息缓冲区存储在一个专用于 FlexCAN模块的RAM区
可以参考芯片配置细节来了解在 MCU内配置的消息缓冲区的数目
CAN协议引擎(PE)子模块管理 CAN总线上的串行通信,请求存取 RAM接收和传输消息帧,验证接收到的消息以及进行错误处理
控制器主机接口子模块用来选择接收和传输的消息缓冲区,使用仲裁与 ID匹配算法,以建立同 CPU或者其他模块的连接
时钟、地址、数据总线或者中断输出以及测试信号通过总线接口单元都可以进行访问
2 Flex CAN 模块特征 FlexCAN模块具有以下鲜明的传统特征: 1
完全支持 CAN2
0B协议:标准数据帧;扩展数据帧;0~8字节的数据长度;可编程控制的波特率,数据传输速率可达 1Mbps;与内容相关的寻址防止
0到 8字节长度报文缓冲区; 3
每个报文缓冲区都可以配置成发送缓冲区或者接受缓冲区,支持标准和扩展帧格式; 4
每个消息缓冲区都有自己的接受掩码控制寄存器; 5
全功能的接受队列,该队列可以存储最多 6个帧,并且自动进行内部指针处理; 6
传输中止能力; 7