MPC5643L单片机——CAN通信FIFO接收使用笔记

一、一个FIFO最多可存储几组CAN数据?

手册里介绍了RX FIFO的寄存器数据结构,0x90-0xDC保留用作存储FIFO引擎,它里面的结构和上面0x80~0x90完全一样吗?也是16个字节吗?好像没有说明。根据大小计算0xDC-0x90=0x4C=76Bytes。若存储16个字节,可存储4个数据。换言之,FIFO里面最多可存储1+5=6个数据(至少包含ID)

MPC5643L单片机——CAN通信FIFO接收使用笔记_第1张图片

二、FIFO初始化: 

       不是任何帧都能进FIFO,首先使能FIFO,然后指定符合哪些CANID的帧可以进FIFO,即设置FIFO ID Table,显然最多允许8个CANID的帧。

MPC5643L单片机——CAN通信FIFO接收使用笔记_第2张图片

         MPC5643L单片机——CAN通信FIFO接收使用笔记_第3张图片

三、如何使用FIFO接收数据:

       情况一,比如下载程序时,用500kbps波特率,平均一帧8Bytes传输时间400us, 按1ms间隔传输。那么主程序也以1ms间隔接收,总体上两边吞吐率相等。会发生某个间隔内有2帧数据,也会发生下一个间隔总线上没有一帧数据。这样的话只要检测到IFLAG1.B.BUF5I==1,就认为Buffer里还有数据(CANID+8字节Data+数据长度+时间戳),立即取出来。从而不会丢失数据。

      情况一,总线上以500us甚至更短间隔传输数据,但是每次最多只传输6个字节。那么主程序无论以多长周期接收,只要接收6次,就可以把Buffer里面的数据全部取完。

MPC5643L单片机——CAN通信FIFO接收使用笔记_第4张图片

MPC5643L单片机——CAN通信FIFO接收使用笔记_第5张图片

你可能感兴趣的:(学习笔记)