首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32之CAN ---CAN ID过滤器分析(3)

STM32之CAN ---CAN ID过滤器分析(3)

3.5 CAN 过滤器激活寄存器 (CAN_FA1R)                                                                                地址偏移量: 0x21C
复位值: 0x0000 0000                       
                                                                               
                                                                                                                                                图7                       
                       
                                               
                                                                位31:14                                                                                                                        保留位,硬件强制为0。                                                       
                                                                位13:0                                                                                                                        FACTx : 过滤器激活
软件对某位设置1来激活相应的过滤器。只有对FACTx位清0,或对CAN_FMR寄存器的FINIT位设置1后,才能修改相应的过滤器寄存器x(CAN_FxR[0:1])。
0:过滤器被禁用;
1:过滤器被激活。                                                       
                                                                                3.6 CAN 过滤器组x寄存器 (CAN_FiRx) (i=0..13,x=1..2)                                                                                地址偏移量:0x240h..0x2AC
复位值:未定义位
注: 共有14组过滤器:i=0..13。每组过滤器由2个32位的寄存器,CAN_FiR[2:1]组成。只有在CAN_FaxR寄存器(CAN过滤器激活寄存器)相应的FACTx位清’0’,或CAN_FMR寄存器(CAN过滤器主控寄存器)的FINIT位为’1’时,才能修改相应的过滤器寄存器。                       
                                                                               
                                                                                                                                         图8                       
                       
                                                                位31:0                                                                                                                        FB[31:0] : 过滤器位
                                                               
  •                                                                                 当为标识符模式时:
             寄存器的每位对应于所期望的标识符的相应位的电平。
             0: 期望相应位为显性位;
             1: 期望相应位为隐性位。
                                                               
  •                                                                                 当为屏蔽位模式时:
             寄存器的每位指示是否对应的标识符寄存器位一定要与期望的标识符的相应位一致。
             0: 不关心,该位不用于比较;
             1: 必须匹配,到来的标识符位必须与滤波器对应的标识符寄存器位相一致。                                                       
注: 根据过滤器位宽和模式的不同设置,过滤器组中的两个寄存器的功能也不尽相同。。关于过滤器的映射,功能描述和屏蔽寄存器的关联,请参见2节标识符过滤。                                                                                屏蔽位模式下的屏蔽/标识符寄存器,跟标识符列表模式下的寄存器位定义相同。                       
                                                        4 代码实例                                                                                4.1 CAN ID值的结构分析
                                                                                              在讲到代码实例之前,首先大家都弄懂一件事,当给定一个CAN ID,如0x1800f001,当然这个是扩展ID,这里要问的是,这个CAN ID的值本身包含两部分,即基本ID与扩展ID,即么你知道这个扩展ID0x1800f001的哪些位是基本ID,哪些位又是扩展ID?(在基本CANID格式下不存在这个问题)                       
                                                                        在回答这个问题之前我们来看看ISO11898的定义,如下图:                       
                                                                               
                                                                                                                                             图9                       
                                                        如上图,基本格式不存在扩展ID,而扩展格式中ID0~ID17为Extension ID,而ID18~ID28为Base ID.                       
                                                        因此CAN ID值0x1800f001用二进制表示为:0b 0001 1000 0000 0000 1111 0000 0000 0001,用括号分别区别为:0b 000[1 1000 0000 00][00 1111 0000 0000 0001],红色部分为扩展ID,蓝色部分为基本ID。那么知道这些有什么用呢?接下来的代码示例中你就会有什么用了。
继承事业,薪火相传
返回列表