zoukankan      html  css  js  c++  java
  • mcp2515 芯片驱动总线错误BUG的解决方法


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


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


    分析:

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


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


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

  • 相关阅读:
    不知道是不是爬虫
    springCloud 搭建Eureka
    HttpsUtils
    java验证
    复选框值存数据库 存取问题
    Oracle VM VirtualBox 无法链接本地
    ssh 无法查询数据库
    CSS 分割线
    vue+Element 表格编辑
    数组,对象的深拷贝 与 浅拷贝
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436646.html
Copyright © 2011-2022 走看看