stm32 can2设置问题
- 格式:docx
- 大小:141.40 KB
- 文档页数:1
stm32 can2设置问题
在stm32的互联型产品中,有两个can接口,一个主,一个从,主接口一般正常配置,网上资料比较多,但是从接口在配置的时候经常是只能发送,不能接收,一般原因都在于过滤器没有设置,
如上图所示,在互联型产品中,会有0~28个过滤器组,而寄存器CAN_FMR的CAN2SB[5:0]代表了从can的过滤器开始组,由于其复位值为0x2A1C 0E01,所以可以判断CAN2SB[5:0]的开机复位值为14,从而在互联型产品中,can2的默认过滤器开始值为14,所以在进行can2的初始化过程中需要调用以下代码:
/* CAN2 filter init */
CAN_FilterInitStructure.CAN_FilterNumber=14;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
这样设置后,其他设置可以跟can1的设置一样,就可以在接受到数据后产生中断,从而进行进一步处理。