http://blog.renren.com/share/221002615/11483613167 来自张涛的日志


现象:CAN总线在线上设备热插拔或长时间运行后出现总线异常情况,有时不能发送和接收,有时只能发送不能接收。


分析:

         经过观察,发现出现只能发送不能接收的情况是由于没有调用中断服务造成的,而在整个驱动中并没有其它地方会异常释放中断,所以断定为mcp2515本身没有发出中断;查看芯片手册,发现在CANINTF中断标志位寄存器中有两个错误中断标志位,其它五个为正常情况下的中断标志位,驱动中并没有对错误中断进行处理,造成的结果是总线中发生错误后,错误中断没有处理,CANINTF中的错误标志位始终没有被清除,造成其它中断被堵塞,因此无法接收数据;而长时间动行后,错误中断计数器达到一定值后,总线就被关闭,所以会出现收发都不正常的情况。


解决办法:最简单的办法就是处理错误中断,在出现错误后重置mcp2515芯片。


结果:使用以上办法后,热插拔总线设备并不会出现总线异常情况。

posted on 2015-03-18 11:52  醉依危栏听松涛  阅读(933)  评论(0编辑  收藏  举报