STM32F3xx CAN(控制器局域网)接收

STM32F3xx CAN(控制器局域网)接收,stm32,can-bus,Stm32,Can Bus,我正在使用STM32F303K8的CAN。我可以传输数据,但我不能接收数据;函数HAL_CAN_Receive()返回HAL_超时。我用1米和32时钟工作。 有谁能告诉我如何使用HAL_can_Receive()从E can接收数据为了在STM32上接收can消息,您必须启用至少一个过滤器。 该消息与所有过滤器进行比较,并且需要至少匹配一个过滤器才能放入fifo 您可以创建一个匹配所有消息的筛选器 sFilterConfig.FilterNumber = 0; sFilterConfig.F

我正在使用STM32F303K8的CAN。我可以传输数据,但我不能接收数据;函数HAL_CAN_Receive()返回HAL_超时。我用1米和32时钟工作。
有谁能告诉我如何使用HAL_can_Receive()从E can接收数据

为了在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;

为了在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;

好的,两件事。什么在传播?你设置了过滤器吗?我没有设置过滤器,我正在从adapdater CAN-USB传输数据,而且我使用mbed.h进行了测试。它可以工作,但不能与HAL_CAN_Receive()一起工作。这里可以编写main.c代码[好的,两件事。什么是传输?你设置了过滤器吗?我没有设置过滤器,我正在从adapdater CAN-USB传输数据,而且我用mbed进行了测试。h它可以工作,但不能与HAL_CAN_Receive()一起工作。这里可以编写main.c代码吗[和OP:我有同样的问题,但已经使用了你提到的代码,对我不起作用…你同时可能有不同的解决方案吗?和OP:我有同样的问题,但使用了你提到的代码,对我不起作用…你同时可能有不同的解决方案吗?