我也遇到了同样得问题,已经解决了,是RAM空间不足导致的,MCP2517的RAM是2k,在配置MCP2517的FIFO寄存器得时候会配置FIFO的的存储深度(也就是每个FIFO最多存储几个CAN报文,最大应该是32个)以及每个CAN报文的字节数(CANFD最大携带64字节的数据),我的情况就是这里没有考虑RAM的大小(注意FIFO存放的CAN报文就是放在RAM里的)。假如使用了一个FIFO,存储深度为20,则,1*20*72=1440字节(已经1K多了)。72是每帧报文实际占用的字节数,即64+8=72,如果报文中携带时间戳的话就是76了,即64+8+4=76。当然这是携带64字节有效数据的情况下。这时候你还要把发送FIFO考虑进去,因为发送FIFO和接收FIFO共用2K的RAM。如果对这些不是很明确的话,很容易把RAM用完,而导致错误。我就是反复看技术手册发现的,我经过调整接收及发送FIFO的配置后,即尽量节约使用RAM,所以我遇到的问题解决了。希望看到的人也有帮助。
|