CAN笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CAN笔记

CAN节点通过标识符来识别CAN帧是不是自己想要的,识别方法就是通过滤波屏蔽寄存器的设置来完成,接收滤波寄存器设置了标识符每位的值,接收屏蔽寄存器一般有相同的数量匹配接收滤波寄存器,规定接收滤波寄存器标识符每一位的值是否需要进行匹配,比如芯片设置有6个接收滤波寄存器和6个接收屏蔽寄存器,从总线上接收CAN帧,然后依次将收到的CAN帧标识符与6对接收滤波和屏蔽寄存器进行匹配,符合某对接收滤波和屏蔽寄存器要求了,就停止匹配,将数据接收到对应的缓冲区中. 例如设置某接收滤波寄存器00000000001 11位 ,接收屏蔽寄存器1XXXXXXXXXX 11位 ,则该对组合会拒绝接收00000000011和00000000001之外所有的标识符对应的CAN帧,因为屏蔽器规定第二位 为0 以外的所有标识符位要严格匹配 与滤波器值一致 ,第二位的滤波器值和收到的CAN标识符第二位值是否一致都可以. 不同的芯片滤波屏蔽寄存器的运行方式不太一致,至少我用过的AT90CAN128和MCP2515差别就很大,不过原理都一样. 4楼: 初学CAN的朋友应该都会遇到我这样的问题,我的理解是,一个节点向网络中发送一条信息,所有的节点都能收到,收到后每个节点将收到的标识符自行与自己的比较,符合的才接收,过滤器和屏蔽器决定标识符中哪些位参与比较,也就是说有些位可以不参与比较就直接接收,这很有用,比如,11位的标识符不可能都用来标识下位机号,你一个网络不可能连接那么多节点,11位的标识符有点浪费,我们可以将最高3位用来表示所发送的数据类型,在接收点设置滤波器和屏蔽器只比较节点号部分,先将数据接收下来,在将最高3位拿来判断是什么数据,我的试验结果是RXB0SIDH会被发送端的TXB0SIDH修改,判断RXB0SIDH的最高三位即可知道接收的数据类型,以上是我这几天的学习结果,希望大家共同讨论。 CAN_FilterInitStructure.CAN_FilterNumber 0; CAN_FilterInitStructure.CAN_FilterMode CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh u32 CAN_ID0 21 0xFFFF0000 16; CAN_FilterInitStructure.CAN_FilterIdLow u32 CAN_ID0 21 |CAN_ID_STD|CAN_RTR_DATA 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdHigh 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow 0xFFFF; CAN_FilterInitStructure.CAN_FilterFIFOAssignment CAN_FIFO0; CAN_FilterInitStructure.CAN_FilterActivation ENABLE; CAN_FilterInit CAN_FilterInitStructure ; 楼主没有理解CAN里面节点ID的含义。 1. A发出的远程帧中ID为B的ID 2. B收到一个ID跟自己节点相符的远程帧后,就发同样ID的数据帧就可以了。 3. 由于数据都是在CAN上广播的,所以A就可以收到这个数据帧了。 形象一点就像在广播里面点歌: A想听张国荣的歌, 就给电台B打个电话 远程帧) 电话号码当然是电台的号码, 电台不需要知道谁点的歌,只管放就行了。 远程帧的作用,如能详细描述那更好! 4楼: 可以用来 表征 这个节点的存在(告诉其它节点 还在线,而又无其它数据传递必要)。 CANopen规范中,通常不建议使用。 5楼: 是告诉其他的CPU我需要这个ID号的数据,远程帧没有数据,只有ID和远程帧位 说点大白话 6楼: 首先远程帧虽然是用来发送的,但是却是用接收邮箱来配置(这句话说的肯定对)。 明白了吧。 就是接收邮箱 想接收某ID数据,就发送个远程帧做触发(这句话说的不一定对) 8楼: 是的,当你需要接受某个远程节点的数据时,就发送一个远程帧过去,那节点就会做出响应,发回数据,这个过程一般是在软件上处理,也有硬件实现的。

文档评论(0)

kaiss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档