MCP2515的屏蔽器与过滤器有相同的数量。

CAN节点通过标识符来识别 CAN帧是不是自己想要的
识别方法就是通过滤波屏蔽寄存器的设置来完成

接收滤波寄存器设置了标识符每位的值
接收屏蔽寄存器一般有相同的数量匹配接收滤波寄存器
规定接收滤波寄存器标识符每一位的值是否需要进行匹配

比如芯片设置有 6个接收滤波寄存器和 6个接收屏蔽寄存器:
从总线上接收 CAN帧,然后依次将收到的 CAN帧标识符与 6对接收滤波和屏蔽寄存器进行匹配 ,符合某对接收滤波和屏蔽寄存器要求了 ,就停止匹配 ,将数据接收到对应的缓冲区中。

例如:
设置某接收滤波寄存器 00000000001(11位),
接收屏蔽寄存器 11111111101(11位)
则该对组合会拒绝接收 00000000011和 00000000001之外所有的标识符对应的 CAN帧
因为屏蔽器规定第二位(为 0)以外的所有标识符位要严格匹配(与滤波器值一致),第二位的滤波器值和收到的 CAN标识符第二位值是否一致都可以。
不同的芯片滤波屏蔽寄存器的运行方式不太一致 ,至少 AT90CAN128和MCP2515差别就很大 ,不过原理都一样

合理的设定硬件的 mask & filter,可以节省很多 CPU时间。

1:两个 CAN节点通信。一方发送,一方接收。发送方如果没有收到接收方的应答。一直就会处于发送。CPU会处于死循环。

解决1:设置一个等待时间,自开始发送起,等待时间到了以后,取消发送。
解决2:设置起发送位后,不需要等待是否发送成功,去干其它事,程序就不会死在这里了。

2:置起发送位后。发送方的CAN控制器自身是不是要等待接收方的控制器的
应答。。就是我问的 CAN的应答机制。是不是它的底层协议。

解决1:在每次发完后,,再对CAN进行下软件复位。
解决2:填好数据,置起发送位;
去做其它事,到要发送下一笔前,来检查上一次是否已经发送完;
如果上一笔没有发送完,则决定如何处理:取消发送,或是等待。
3:现在需要一起发送超过八个字节的数据。。但是 SJA1000的一次最多只能发送八个字节的数据。如何能一次发送超过八个字节的数据
解决:由发送方拆开,在接收方重组

MCP2515 (2)相关推荐

  1. mcp2515 芯片驱动总线错误BUG的解决方法(主要无法进入中断bug)

    http://blog.renren.com/share/221002615/11483613167 来自张涛的日志 现象:CAN总线在线上设备热插拔或长时间运行后出现总线异常情况,有时不能发送和接收 ...

  2. 关于MCP2515帧连发、多发的坑

    工作中的一个项目让我接触到了MCP2515这个can控制器芯片,其低廉的价格让我毫不犹豫的选择了它,然而在使用过程中我发现我遇到了一个bug,就是在我发送某帧数据后,总线上会莫名其妙的多几帧一样的数据 ...

  3. 三 s5p4418对mcp2515 can总线的支持

    对于mcp2515的移植相关知识课先参考这里http://blog.csdn.net/sno_guo/article/details/17029295 下面是针对s5p4418官方提供的内核为基础做的 ...

  4. can2--tiny6410移植mcp2515驱动

    根据te6410 移植mcp2515到tiny6410,将tiny按照te的连线如下 tiny6410,linux2.6.38移植mcp251x 使用spi1,eint81.修改板子文件mach-mi ...

  5. SPI 读取不同长度 寄存器_SPI协议,MCP2515裸机驱动详解

    SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH, ...

  6. iMX6UL配置MCP2515模块(SPI转CAN)——基于迅为iTOP-iMX6UL开发板

    写在前面   在文章"嵌入式Linux的CAN总线配置--基于迅为iTOP-4412开发板"中我给4412开发板配置了SPI转CAN模块,使用的是不带设备树的内核.在本篇文章中,要 ...

  7. STM32 MCP2515连发 多发 MCP2515收发程序 多路CAN通信 2路CAN

    MCP2515在发送数据时,如果通信速率较低一切都正常.但是当通信速率较高,比如1M时,发送一帧数据后,MCP2515有时会出现自动重复发送多帧数据的情况. 为解决这现象,请参照官方给的<MCP ...

  8. DP2515国产带SPI接口汽车CAN总线控制器芯片兼容替代MCP2515/MCP2515-I/ST

    目录 什么是CAN? DP2515简介 DP2515结构框图 芯片特性 参考原理图 什么是CAN? CAN是控制器局域网络(Controller Area Network, CAN)的简称,是如今是国 ...

  9. 第一次发文-汽车数字液晶仪表盘制作-嵌入式开发板-qt-linux-can总线-mcp2515模块-汽车obd

    各位客官老爷们大家好,这是我第一次申请公众号,也是第一次发文章,本着分享与求知的心态,记录一下自己开发汽车obd数字仪表盘的过程,能对别人有一丝的帮助,那是最好不过的,如果没有,也求拍砖与批评指导,对 ...

最新文章

  1. python dlib opencv人脸识别准确度_Python用opencv+dlib实现人脸识别
  2. [原]ubuntu14.04 网卡逻辑修改没有文件/etc/udev/rules.d/70-persistent-net.rules
  3. 【助教】关于代码提交相关注意事项
  4. MacBook 如何一次性关闭所有程序的通知消息
  5. node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)
  6. 给,你要的Go学习路线图来啦
  7. springboot 打印slf4_SpringBoot里slf4j日志功能的默认实现
  8. Luogu P1039 侦探推理(模拟+枚举)
  9. Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)...
  10. slice 和splice 的区别 js
  11. 论文简述 | Voxel Map for Visual SLAM
  12. 关于校验与确认两步操作时,新增,修改需要考虑的问题
  13. c# splitContainer1隐藏panel1/2
  14. Spring学习路线
  15. 【虚拟仿真】Unity3D中如何实现让3D模型显示在UI前面
  16. 利用Python制作属于自己的炫酷二维码
  17. qml鼠标拖动_Arcgis for qml - 鼠标拖拽移动
  18. U盘禁止写入/SD卡被禁用怎么解除
  19. “机器学习实战“刻意练习2/8周
  20. 用python筛选英文txt中的单词,生僻单词

热门文章

  1. 本博客通知(亓官劼)
  2. java 打印jpg、pdf、word
  3. Emlog程序纯黑色调CYP音乐模板源码
  4. 【C++学习笔记】复合类型和const限定符
  5. 请听一个故事------三个70多岁老人的创业故事(励志)
  6. ncre计算机职业英语,NCRE计算机职业英语一级考试样卷.doc
  7. pyscripter支持python什么版本_PyScripter在Windows上具有多个Python版本
  8. Android 应用进程保活APP常驻内存研究方案
  9. 理解OAuth 2.0
  10. 关于Docker以及安装方法