• stm32 CAN过滤器组


    在互联型产品中, CAN1和CAN2分享28个过滤器组
    其它STM32F103xx系列产品中有14个过滤器组

    位宽设置
    1

    四种配置方式:
    1个32位的屏蔽位模式
    2个32位的标识符列表模式,可以过滤2个标识符id
    2个16位的屏蔽位模式
    4个16位的标识符列表模式,可以过滤4个标准标识符id

    扩展标识符必须选择32位宽

    标识符列表模式
    在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一
    个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符
    相同

    CAN_FilterInitStructure.CAN_FilterNumber = 0; //过滤器组0(FM1R)
    CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdList;
    CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
    //第一个标识符id(FR1)- 标准标识符举例
    CAN_FilterInitStructure.CAN_FilterIdHigh = 0x123 << 5;  //根据位宽设置图
    CAN_FilterInitStructure.CAN_FilterIdLow = CAN_ID_STD;   //选择标准标识符
    //第二个标识符id(FR2)- 扩展标识符举例
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0;
    CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x321 << 3 | CAN_ID_EXT; //根据位宽设置图 | 选择扩展标识符

    发送方标识符id必须是0x123或0x321

    屏蔽位模式
    屏蔽位模式可以过滤出一组标识符

    //标准标识符举例
    CAN_FilterInitStructure.CAN_FilterNumber = 0; //过滤器组0(FM1R)
    CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
    CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
    CAN_FilterInitStructure.CAN_FilterIdHigh = 0x123 << 5;
    CAN_FilterInitStructure.CAN_FilterIdLow = CAN_ID_STD;   //选择标准标识符
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x23 << 5;
    CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0;

    CAN_FilterIdx:期望的标识符id
    CAN_FilterMaskIdx:屏蔽位。关心的位

    期望的标识符id:
    1
    关心的位:
    只关心为1的位,必须和期望的标识符id位一致。其他位是多少不关心
    2

    优先级规则

    位宽为32位的过滤器,优先级高于位宽为16位的过滤器
    对于位宽相同的过滤器,标识符列表模式的优先级高于屏蔽位模式
    位宽和模式都相同的过滤器,优先级由过滤器号决定,过滤器号小的优先级高

  • 相关阅读:
    1、购买阿里云服务器
    struts2页面乱码解决方法
    struts第一次编写怎么都无法跳转页面
    时间转换与map集合
    struts2addActionError 、addFieldError、addActionMessage方法
    struts2基本流程
    struts2自定义类型转换器
    jsp聊天窗口随笔
    conn!=null与conn.isClosed的区别
    应用表单隐藏域进行提交
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709506.html
Copyright © 2020-2023  润新知