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