你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G431KBU3不进FDCAN中断

[复制链接]
xydmhy 提问时间:2024-6-17 15:31 / 未解决

求大佬看一下,FDCAN使用传统CAN模式,能发送数据,但是不能进入接收中断

image.png

代码配置了两处:

void FDCAN1_Config(void) { FDCAN_FilterTypeDef sFilterConfig; / Configure Rx filter / sFilterConfig.IdType = FDCAN_STANDARD_ID; sFilterConfig.FilterIndex = 1; sFilterConfig.FilterType = FDCAN_FILTER_RANGE; sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0; sFilterConfig.FilterID1 = 0x00000000; sFilterConfig.FilterID2 = 0x000007FF; if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK) { Error_Handler(); }

sFilterConfig.IdType = FDCAN_EXTENDED_ID; sFilterConfig.FilterIndex = 0; sFilterConfig.FilterType = FDCAN_FILTER_RANGE; sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0; sFilterConfig.FilterID1 = 0x00000000; sFilterConfig.FilterID2 = 0x1FFFFFFF; if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK) { Error_Handler(); }

/ Configure global filter: Filter all remote frames with STD and EXT ID Reject non matching frames with STD ID and EXT ID / if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK) { Error_Handler(); }

/ Activate Rx FIFO 0 new message notification on both FDCAN instances / if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK) { Error_Handler(); }

// if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_BUS_OFF, 0) != HAL_OK) // { // Error_Handler(); // }

/ Tx Config/ TxHeader1.Identifier = 0x000000000; // CAN ID TxHeader1.IdType = FDCAN_STANDARD_ID; // 标准ID TxHeader1.TxFrameType = FDCAN_DATA_FRAME; TxHeader1.DataLength = FDCAN_DLC_BYTES_8; TxHeader1.ErrorStateIndicator = FDCAN_ESI_PASSIVE; TxHeader1.BitRateSwitch = FDCAN_BRS_OFF; TxHeader1.FDFormat = FDCAN_FD_CAN; // CANFD TxHeader1.TxEventFifoControl = FDCAN_NO_TX_EVENTS; TxHeader1.MessageMarker = 0;

/ Configure and enable Tx Delay Compensation, required for BRS mode. TdcOffset default recommended value: DataTimeSeg1 DataPrescaler TdcFilter default recommended value: 0 / HAL_FDCAN_ConfigTxDelayCompensation(&hfdcan1, hfdcan1.Init.DataPrescaler hfdcan1.Init.DataTimeSeg1, 0); HAL_FDCAN_EnableTxDelayCompensation(&hfdcan1);

/ Start the FDCAN module / if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK) { Error_Handler(); } }

void FDCAN1_IT0_IRQHandler(void) { / USER CODE BEGIN FDCAN1_IT0_IRQn 0 /

/ USER CODE END FDCAN1_IT0_IRQn 0 / HAL_FDCAN_IRQHandler(&hfdcan1); / USER CODE BEGIN FDCAN1_IT0_IRQn 1 / HAL_FDCAN_GetRxMessage(&hfdcan1, FDCAN_RX_FIFO0, &RxHeader1, can1_rxbuf); / USER CODE END FDCAN1_IT0_IRQn 1 / }

收藏 评论2 发布时间:2024-6-17 15:31

举报

2个回答
xydmhy 回答时间:2024-6-17 15:34:48

image.png

image.png

image.png

image.png

xmshao 回答时间:2024-6-18 18:01:03
在STM32G4的Cube库例程里有关于FDCAN的演示例程,可以参考下。
可以先基于回环模式测试OK后,再行Normal模式实测验证。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版