概述
CANFD:可以理解成CAN协议的升级版,只升级了协议,物理层未改变。
Can与CanFD主要区别:传输速率不同、数据长度不同、帧格式不同、ID长度不同。
传输速率不同
Can:最大传输速率1Mbps。
CanFD:速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps,如下图所示。
数据长度不同
Can:一帧数据最长8字节
CanFD:一帧数据最长64字节。
帧格式不同
CanFD新增了FDF、BRS、ESI位。
FDF:表示CAN报文还是CAN-FD报文。
BRS:表示位速率转换,该位隐性时,速率可变(即BSR到CRC使用转换速率传输),该位为显性时,以正常的CAN-FD总线速率传输(恒定速率);
ESI:表示发送节点状态。
ID长度不同
CAN标准帧ID长度最长11bit
CANFD标准帧ID长度可扩展到12bit。
CAN2.0B标准帧
CAN 标准帧信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。
字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。
字节2、3为报文识别码,11位有效。
字节4~1为数据帧的实际数据,远程帧时无效。
CAN2.0B扩展帧
CAN 扩展帧信息为13个字节,包括两部分,信息和数据部分。前5个字节为信息部分
字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF=1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC 表示在数据帧时实际的数据长度。
字节2~5为报文识别码,其高29位有效。
字节6~13数据帧的实际数据,远程帧时无效。
工作流程:
1、使能flexcan模块时钟
2、使模块进入禁止模式
3、在禁止模式下选择好时钟源(协议引擎时钟源)
4、开启flexcan模块 一旦开启flexcan模块,flexcan即进入冻结模式,也可以同过软中断来复位flexcan然后进入冻结模式
5、初始化flexcan模块寄存器,初始化MB为0
6、退出冻结模式
7、设置Rx消息缓冲区(CS,format,type,id,date)首先写0x0000d到CS字段失活MB,最后写0x01000激活MB
8、设置Tx消息缓冲区(CS,format,type,id,length, date)首先写0x1000d到CS字段失活MB,最后写0x11000激活MB,等待消息发送。
9、通过读取中断标志位判断是否完成发送接收。