英创信息技术主板EM9170的CAN通讯应用说明

描述

EM9170工控主板采用FlexCAN,有关filter的设置,说明如下。

CAN Filter的设置:通过DeviceIoControl的CAN_IOCTL_SET_FILTER命令来设置,输入参数为数据结构:

typedef struct
        { 
                DWORD dwGroup;        // 组号,= 0,1,2
                DWORD dwType;          // = 0:标准帧;= 1:扩展帧
                DWORD dwID;               // 标准帧:11-bit;扩展帧:29-bit,右对齐
                DWORD dwRTR;          // = 0:数据帧;= 1:远程帧
                DWORD dwMask;         // 各位与dwID对应,= 0:该位不检查;= 1:该位须检查
        } CAN_FILTER, *PCAN_FILTER;

对以上数据结构中各个参数的定义解释如下:

•  DWORD dwGroup:组号,EM9170的CAN接收Buffer共分成3组,可同时接收不同ID组的数据帧。EM9170的多个分组,类似于SJA1000中的双滤波概念,即总线上的数据

帧只要满足任意一组设定的条件,该数据帧将被接收。

•  DWORD dwType:设置本组接收数据帧的类型。

•  DWORD dwRTR:设置本组接收的是否为远程帧。

•  DWORD dwID:用于定义本组接收的数据帧ID的公共部分,即相同部分。 

•  DWORD dwMask:用于定义需要匹配的bit位,即置1的bit位。dwMask与dwID需要配合使用,举例说明如下:

例:本组为标准帧包括连续的64个ID号,dwID = 2’b01010000000 = 0x280,相应的dwMask = 2’b11111000000 = 0x7C0。这时的dwMask表示可被接收的数据帧的低6位ID可以是任意编码(设置为0的那些位),但其高5位(设置为1的那些位)必须与dwID的高5位的定义匹配,即为2’b01010xxxxxx。在实际应用中,为了便于理解,CAN地址的划分,通常采用低位分配给各个设备,而高位地址作为应用组标志。而每一个应用组的地址数采取2的幂次方,可方便设置dwMask。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分