您好,欢迎访问三七文档
附件4:CAN滤波设置使用说明书附件4:CAN滤波设置使用说明书说明书版本:V2.00更新日期:2014.10.01附件4:CAN滤波设置使用说明书1滤波寄存器滤波寄存器包括2个32位的寄存器:过滤验收滤波器(ACR)和过滤屏蔽寄存器(AMR),通过软件设置这两个寄存器的值,实现对CAN接收报文的过滤功能。在CAN模块接收到报文时,会将报文标识符与过滤器中的相应位进行比较。如果标识符与用户配置的过滤器匹配,报文会被存储到CAN控制器相应的接收缓存队列中。接收屏蔽器可用于在接收时忽略标识符的选定位。在接收报文时,这些位将不与过滤器中的位进行比较。例如,如果用户希望接收带有标识符0、1、2和3的所有报文,用户需要屏蔽掉标识符的低2位。屏蔽寄存器的某一位等于1时,表示忽略对该位对应ID位的滤波,如屏蔽寄存器值=FFFFFFFF,则可接收所有消息。验收滤波器ACR,验收屏蔽器AMR都是32bits(4bytes)。对于需要验收滤波的ID值,ID的最高位(标准帧ID最高位为Bit10,扩展帧为Bit28)与ACR/AMR的最高位(Bit31)位对齐,即左对齐方式。CAN总线验收滤波器和验收屏蔽器均对于CAN接收而言。注:当AMR为FFFFFFFF时,表示屏蔽ACR的所有滤波位,即可以接收所有的信息。注:关于ID格式的详细说明,请参照:《附件1:ID对齐方式详细说明》说明文档。示例:(1).标准帧举例:若要接收标准帧,则滤波方式需要选择为“接收所有类型”或“只接收标准帧”,ACR=任意值,AMR=0xFFFFFFFF,适配器能接收任意ID的CAN消息;ACR=0x6F000000,AMR=0x00FFFFFF,适配器可接收ID为0x378到0x37F的帧。如下图所示:珠海创芯光电科技有限公司技术支持邮箱:dspstudio@163.com附件4:CAN滤波设置使用说明书(2).扩展帧举例:若要接收扩展帧,则滤波方式需要选择为“接收所有类型”或“只接收扩展帧”,ACR=任意值,AMR=0xFFFFFFFF,适配器能接收任意ID的CAN消息;ACR=0x00001BC0,AMR=0x0000003F,则可接收ID=0x00000378到0x0000037F的CAN消息帧。如下图所示:设置过滤验收滤波器时,VCI_SetReference2函数的RefType参数须传递2;设置过滤屏蔽寄存器时,VCI_SetReference2函数的RefType参数须传递6,具体应用可参考本小节后的示例代码。VC源代码示例1_设置滤波寄存器:#includeControlCan.h珠海创芯光电科技有限公司技术支持邮箱:dspstudio@163.com附件4:CAN滤波设置使用说明书intnDeviceType=4;/*USB-CAN2.0*/intnDeviceInd=0;/*第0个设备*/intnCANInd=0;DWORDdwRel;BYTErefType=2;/*设置过滤验收寄存器*/BYTEpData[4]={0};/*将验收滤波器分成4个字节设置,设置其值为:0x00001BC0*/pData[0]=0x00;/*验收滤波器最高字节*/pData[1]=0x00;/*验收滤波器次高字节*/pData[2]=0x1B;/*验收滤波器次低字节*/pData[3]=0XC0;/*验收滤波器最低字节*/bRel=VCI_SetReference2(nDeviceType,nDeviceInd,nCANInd,refType,pData);if(dwRel!=1){MessageBox(_T(设置验收滤波器失败!),_T(警告),MB_OK|MB_ICONQUESTION);returnFALSE;}refType=6;/*设置过滤屏蔽寄存器*//*将屏蔽滤波器分成4个字节设置,设置其值为:0x0000003F*/pData[0]=0x00;/*屏蔽滤波器最高字节*/pData[1]=0x00;/*屏蔽滤波器次高字节*/pData[2]=0x00;/*屏蔽滤波器次低字节*/pData[3]=0x3F;/*屏蔽滤波器最低字节*/bRel=VCI_SetReference2(nDeviceType,nDeviceInd,nCANInd,refType,pData);if(dwRel!=1){MessageBox(_T(设置屏蔽滤波器失败!),_T(警告),MB_OK|MB_ICONQUESTION);returnFALSE;}珠海创芯光电科技有限公司技术支持邮箱:dspstudio@163.com附件4:CAN滤波设置使用说明书2滤波模式USB-CAN适配器提供3种滤波模式:接收所有类型、只接收标准帧、只接收扩展帧。下表为滤波模式取值对照表:值名称说明1接收所有类型滤波器允许接收标准帧和扩展帧。2只接收标准帧滤波器允许接收标准帧,扩展帧将不能通过。3只接收扩展帧滤波器允许接收扩展帧,标准帧将不能通过。在设置滤波模式时,VCI_SetReference2函数的RefType参数须传递1,具体应用可参考本小节后的示例代码。2.1接收所有类型当滤波模式设置为“接收所有类型”时,过滤验收寄存器和屏蔽寄存器的设置对标准帧ID和扩展帧ID同时有效,映射方式为左对齐。例如,在此滤波模式下,验收码值=0xF8000000,屏蔽码值=0x01FFFFFF,则根据左对齐的映射方式,接收到扩展帧时,将忽略其ID的低22位,高7位必须与验收码高7位匹配才会被接收;同样,接收到标准帧时,将忽略其ID的低4位,高7位必须与验收码高7位匹配才会被接收。如下图所示:珠海创芯光电科技有限公司技术支持邮箱:dspstudio@163.com附件4:CAN滤波设置使用说明书2.2只接收标准帧当滤波模式设置为“只接收标准帧”时,过滤验收寄存器和屏蔽寄存器的设置对标准帧ID有效,对于接收到的扩展帧则直接被忽略,映射方式为左对齐。例如,在此滤波模式下,验收码值=0x3F000000,屏蔽码值=0x00FFFFFF,则根据左对齐的映射方式,接收到标准帧时,将忽略其ID的低3位,高8位必须与验收码高8位匹配才会被接收;对于在该滤波模式下接收到的任意扩展帧,均被滤波器直接阻止。如下图所示:2.3只接收扩展帧当滤波模式设置为“只接收扩展帧”时,过滤验收寄存器和屏蔽寄存器的设置对扩展帧ID有效,对于接收到的标准帧则直接被忽略,映射方式为左对齐。例如,在此滤波模式下,验收码值=0xFFF40000,屏蔽码值=0x0003FFFF,则根据左对齐的映射方式,接收到扩展帧时,将忽略其ID的低15位,高14位必须与验收码高14位匹配才会被接收;对于在该滤波模式下接收到的任意标准帧,均被滤波器直接阻止。如下图所示:珠海创芯光电科技有限公司技术支持邮箱:dspstudio@163.com附件4:CAN滤波设置使用说明书VC源代码示例2_设置滤波方式:#includeControlCan.hintnDeviceType=4;/*USB-CAN2.0*/intnDeviceInd=0;/*第0个设备*/intnCANInd=0;BYTErefType=1;/*设置滤波模式*/DWORDdwRel;BYTEpData[1]={0};pData[0]=1;/*接收所有类型*/bRel=VCI_SetReference2(nDeviceType,nDeviceInd,nCANInd,refType,pData);if(dwRel!=1){MessageBox(_T(设置滤波模式失败!),_T(警告),MB_OK|MB_ICONQUESTION);returnFALSE;}注意:CAN总线在正常收发数据的时候,尽量不要通过USBCAN适配器修改CAN总线参数或关闭CAN总线,应等数据收发停止或将USBCAN适配器脱离CAN总线再进行相应操作。珠海创芯光电科技有限公司技术支持邮箱:dspstudio@163.com
本文标题:39CAN滤波设置
链接地址:https://www.777doc.com/doc-6039344 .html