STM32F3xx CAN(控制器区域网络)接收

时间:2017-04-27 19:47:22

标签: stm32 can-bus

我正在使用STM32F303K8的CAN。我可以传输数据,但我无法接收数据;函数HAL_CAN_Receive()返回HAL_TIMEOUT。我正在使用1M和32时钟。 任何人都可以告诉我如何使用HAL_CAN_Receive()从CAN接收数据

1 个答案:

答案 0 :(得分:4)

要在STM32上接收CAN消息,您必须至少启用一个过滤器。 该消息将与所有过滤器进行比较,并且需要匹配至少一个要放入fifo的过滤器。

您可以创建一个匹配所有邮件的过滤器。

 sFilterConfig.FilterNumber = 0;
 sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
 sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
 sFilterConfig.FilterIdHigh = 0x0000;
 sFilterConfig.FilterIdLow = 0x0000;
 sFilterConfig.FilterMaskIdHigh = 0x0000;
 sFilterConfig.FilterMaskIdLow = 0x0000;
 sFilterConfig.FilterFIFOAssignment = 0;
 sFilterConfig.FilterActivation = ENABLE;
 sFilterConfig.BankNumber = 14;