can总线理解
2016-04-04 14:31
232 查看
CAN2.0B
数据传输格式标准帧格式
标识符为11位,数据最多为8个字节(可以比它少),一帧为:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+11+1+1+1+4+(0~8)*8+15+1+1+1+7=44~108位
扩展帧格式
标识符为29位,数据最多为8个字节(可以比它少),一帧为:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+29+1+1+1+4+(0~8)*8+15+1+1+1+7=62~126位
标识符(ID)
发送数据的结点在发送数据时必然携带本发送站点的ID,即标识符。
通常来书,标识符有足够的长度,可以携带包括站点信息在内的很多信息,因此一般它还用于其他的功能,比如说。。。
携带数据节点的信息,比如说数据类型等
指定其他可以接收数据的接收点(可以通过设置后面的过滤器和屏蔽器来选择其他节点是否接收特定ID对应节点发送的数据)产生相应的动作,比如说将反馈信息回传给主节点等
过滤器(Filter)
可以通过设置过滤器的各个位,判断是否接收特定标号(ID)对应节点的信息,相当于硬件滤波
设置某接收滤波寄存器
00000000001(11 位),接收屏蔽寄存器
11111111101(11 位),则该对组合会拒绝接收
00000000011和
00000000001之外所有的标识符对应的 CAN 帧,因为屏蔽器规定第二位(为0)以外的所有标识符位要严格匹配(与滤波器值一致),第二位的滤波器值和收到的 CAN 标识符第二位值是否一致都可以。
屏蔽器(Mask)
可以设置让接收器过滤掉某一位的ID,即对ID的该位不予考虑,之与是1还是0时屏蔽,不同的芯片标准不一样,但是原理都是一样的
有些芯片需要设置多个过滤器或者屏蔽器,这是为了从硬件角度提升效率,减少CPU的使用率
错误
CAN总线提供了很多错误提示,具体的话随便上网找一下=。=
相关文章推荐
- C语言一些关于位操作符的小练习
- C++ 构造函数
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- LeetCode 60: Permutation Sequence
- 51nod 1225 余数之和 数论
- CSS3制作hover下划线动画
- 面试题6 重建二叉树
- IOS-二维码
- C#中的继承举例
- 继承
- Bug的诞生
- 面向对象
- ABP源码分析二十一:Feature
- LeetCode-20.Valid Parentheses
- 三五法则以及行为像值的类和行为像指针的类
- XHTML结构化
- 商业研究(9):入口思维(刚需、频次、免费、变现)
- 商业研究(9):入口思维(刚需、频次、免费、变现)
- 商业研究(9):入口思维(刚需、频次、免费、变现)
- Arduino & Matlab