我现在设置
TxMessage.StdId=0x00; // 标准标识符为0
TxMessage.ExtId=0x1234; // 设置扩展标示符(29位)
TxMessage.IDE=1; // 使用标准标识符:0,标准;1,扩展
TxMessage.RTR=0; // 消息类型为数据帧:一帧8位
然后我在滤波过滤标示符的时候这样设置
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=0x0000;////32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x91a4; //这样计算正确不???
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_FilterInitStructure.CAN_FilterIdLow=0x91a4;
0x91a4这样计算对么?我不是很确定,但是现在一直接受不到报文。而当我改为
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xfff0;
的时候,能接受到报文,但是读取的报文位乱码。这是什么情况?
下边是计算过程。还请指导。
|