本人初学STM32,用两块开发板做CAN通信实验,现在用的方式是:
过滤器设置为全部接受,在接收的数据中判断是否为发送给本机的数据,这样有些冗余,而且芯片经常会受到中断的干扰,摸索了好久没弄清楚。
有哪位做过这方面的实验,请多多指导
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=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//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);//滤波器初始化
CanTxMsg TxMessage;
CanRxMsg RxMessage;
TxMessage.StdId=0x0000; //配置报文的标准标识符
TxMessage.ExtId=0x00; //配置扩屏标识符
TxMessage.IDE=CAN_ID_STD; //报文使用标准标识符+扩屏标识符方式
TxMessage.RTR=CAN_RTR_DATA; //报文为数据帧
请问接收板、发送板的过滤器, 发送标识符TxMessage.StdId、TxMessage.ExtId该如何设计。
非常感谢! |