- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM8CAN标识符过滤器理解
STM8 CAN标识符过滤器理解
CAN的两座大山一座是位时间和同步昨天被我们推倒后紧接着今天另一座标识符过滤器再一次被我们打倒,下面是我的理解如有误高手请拍砖!
STM8的CAN有6个过滤器组:根据配置,每1组过滤器组可以有1个,2个或4个过滤器.这些过滤器相当于关卡,每当收到一条报文时,CAN要先将收到的报文从这些过滤器上过滤一下,能通过的报文是有效报文,收进FIFO中,不能通过的是无效报文 不是发给我的报文 ,直接丢弃.所有的过滤器是并联的,即,一个报文只要通过了一个过滤器,就是算是有效的. 每组过滤器组有两种工作模式:?标识符列表模式,标识符屏蔽位模式.在标识符列表模式下,收到报文的标识符必须与过滤器的值完全相等,才能通过.在标识符屏蔽位模式下,可以指定标识符的哪些位为何值时,才能通过.这其实就是限定了处于某一范围的标识符能够通过.在一组过滤器中,整组的过滤器都使用同一种工作模式. 另外,每组过滤器中的过滤器宽度是可变的,可以是32、16、8位由工作模式和宽度,一个过滤器组可以变成以下几中形式之一: 1 ?1个32位的屏蔽位模式的过滤器。???2个32位的列表模式的过滤器。
2 ?2个16位的屏蔽位模式的过滤器。???4个16位的列表模式的过滤器。
2个16位的列表模式过滤器和1个屏蔽位模式过滤器。
3 1个16位的屏蔽位模式的过滤器和2个8位屏蔽位模式的过滤器。 2个16位的列表模式的过滤器和2个8位的屏蔽位模式的过滤器。 1个16位的屏蔽位模式的过滤器和4个8位的列表模式的过滤器。 2个16位的列表模式过滤器和4个8位的列表模式的过滤器。
4 ?4个8位的屏蔽位模式的过滤器。 4个8位列表模式的过滤器和2个8位的屏蔽位模式的过滤器。 8个8位的列表模式的过滤器。 所有的过滤器是并联的,即,一个报文只要通过了一个过滤器,就是算是有效的.每组过滤器组有8个8位的寄存器用于存储过滤用的标准值,分别是CAN_FxRi[i 1...8 ,x 0...8 ]在32位的屏蔽位模式下: 有1个过滤器, FxR[5...8]用于指定需要关心哪些位,FxR[1...4]用于指定这些位的标准值在32位的列表模式下: 有两个过滤器. FxR[1...4]指定过滤器0的标准值,收到报文的标识符只有跟FxR[1...4]完全相同时,才算通过. FxR[5...8]指定过滤器1的标准值.在16位的屏蔽位模式下: 有2个过滤器. FxR[1...4]配置过滤器0,其中,[31-16]位指定要关心的位,[15-0]位指定这些位的标准值. FxR[5...8]配置过滤器1,其中,[31-16]位指定要关心的位,[15-0]位指定这些位的标准值.在16位的列表模式下: 有4个过滤器. FxR[1...2]配置过滤器0,FxR[3...4]配置过滤器1 FxR[5...6]配置过滤器2,FxR[7...8]配置过滤器3.
其他模式类似这里我就不一一举例了。
STM8的CAN有1个FIFO,每组过滤器组必须关联这一个FIFO.且复位默认就关联到FIFO.所谓关联,是指假如收到的报文从某个过滤器通过了,那么该报文会被存到该过滤器相连的FIFO.每当收到一个报文,CAN就将这个报文先与FIFO关联的过滤器比较,如果被匹配,就将此报文放入FIFO中.如果还是不匹配,此报文就被丢弃.FIFO的所有过滤器都是并联的,只要通过了其中任何一个过滤器,该报文就有效每个FIFO中只有激活了的过滤器才起作用,换句话说,如果一个FIFO有8个过滤器,但是只激话了3个,那么比较报文时,只拿这3个过滤器作比较.一般要用到某个过滤器时,在初始化阶段就直接将它激活.需要注意的是,FIFO必须至少激活一个过滤器,它才有可能收到报文.如果一个过滤器都没有激活,那么是所有报文都报废的.一般的,如果不想用复杂的过滤功能,FIFO可以只激活一组过滤器组,且将它设置成32位的屏蔽位模式,两个标准值寄存器 FxR[1..4],FxR[5..8] 都设置成0.这样所有报文均能通过.STM8?CAN中,另一个较难理解的就是过滤器编号.过滤器编号用于加速CPU对收到报文的处理.收到一个有效报文时,?CAN会将收到的报文,?以及它所通过的过滤器编号,?一起存入接收邮箱中,CPU在处理时,可以根据过滤器编号,快速的知道该报文的用途,从而作出处理.不用过滤器编号其实也是可以的,?这时候CPU就要分析所收报文的标识符,?从而知道报文的用途.由于标识符所含的信息较多,处理起来就慢一点了.STM8使用以下规则对过滤器编号: 1 ?FIFO的过滤器分别独立编号,均从0开始按顺序编号. 2 ?所有关联同一个FIFO的过滤器,不管
文档评论(0)