设置发送函数中的
//TxMessage.StdId=0x12; // 标准标识符
TxMessage.ExtId=0x120DC0DB; // 设置扩展标示符
TxMessage.IDE=CAN_Id_Extended; // 扩展帧
TxMessage.RTR=CAN_RTR_Data; // 数据帧
后在设置
CAN_FilterInitStructure.CAN_FilterNumber=0; //过滤器0
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; //屏蔽位模式
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位宽
CAN_FilterInitStructure.CAN_FilterIdHigh=0x120D; //32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0xC0DB;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;//激活过滤器0
CAN_FilterInit(&CAN_FilterInitStructure); //滤波器初始化
后上位机发送扩展ID为0x120DC0DB的数据指令给开发板,在我LCD液晶上显示不出接收到的数据,表明没有仲裁成功如果改为:
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
则可以成功接收到数据,但是起不到屏蔽ID 的作用了,至今找不到问题在哪里?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
其实我没有超出29位,后来u我看了下寄存器,只是把我需要收到的ID左移三位,再加上对应的帧类型标识,总共加起来一起是32位
大神这个CAN ID怎么设置啊。左移三位看懂了。后面的没看懂。
好的我尝试尝试。谢谢你啊
一周热门 更多>