天天看点

关于MCP2515帧连发、多发的坑

     工作中的一个项目让我接触到了MCP2515这个can控制器芯片,其低廉的价格让我毫不犹豫的选择了它,然而在使用过程中我发现我遇到了一个bug,就是在我发送某帧数据后,总线上会莫名其妙的多几帧一样的数据,而且相隔时间非常短,在经过一天的折磨后,无意在官方社区网站找到了这个帖子:http://www.microchip.com.cn/community/forum/viewthread.php?tid=9354

     里面提到了一个官方的AN文档,里面的内容大致是:在使用WriteByte(TXB0CTRL,0x08) 这种方式触发数据发送后,必须在数据发送之前拉高CS端口,否则会造成数据多发的现象。

    可是由于我的硬件原因,我并不能满足这一要求,文档里还给出了其他两种结决方法:使用MCP2515的几个特殊指令发送:

关于MCP2515帧连发、多发的坑

或使用硬件触发引脚。

      然而当我使用这两种方式时,又发现一个BUG,就是我发送数据时会发生收不到数据的情况,后经测试,连续写SPI数据后立即触发发送,会造成这一现象,需要在连续写入数据后,在写入一个单字节数据(随便什么数据,我的选择是重新写入数据长度)才能解决。不知道是不是和我的硬件有关,仅作记录以后再详细查找原因。希望对其他人有帮助。

继续阅读