我看了很多的帖子,遇到一个问题,就是CAN通信的时候,在屏蔽位模式下,按照原子的设置(所有的都接收),是可以接收到CAN分析仪发的报文的;
但是我自己设置为列表模式(32bit),也就是发送的报文与FxR1或者FxR2其中之一相同就可以接收,反之则舍弃掉!
现在我的设置如下:
CAN_FilterInitStructure.CAN_FilterNumber=0; //过滤器0/
// CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; //屏蔽位模式
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList; //列表模式
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位宽
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0100; //32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0200;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;//激活过滤器0
CAN_FilterInit(&CAN_FilterInitStructure); //滤波器初始化
我设置CAN分析仪的ID为:
但是CAN分析仪发送的数据,战舰开发板收不到;战舰发送的数据CAN分析仪可以接收到(通信正常),我按照自己理解的滤波器这块,整不出答案,请大神帮忙解答一下!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在函数Can_Send_Msg() 这里面定义的ID 你可以去看看
多谢 这个在多机通讯的时候 可以理解为从机的地址吧
http://www.openedv.com/thread-89611-1-1.html 讲解的很好,可以去看看
一周热门 更多>