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

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 / }

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

举报

6个回答
xmshao 最优答案 回答时间:2024-6-18 18:01:03
在STM32G4的Cube库例程里有关于FDCAN的演示例程,可以参考下。
可以先基于回环模式测试OK后,再行Normal模式实测验证。
xydmhy 回答时间:2024-6-17 15:34:48

image.png

image.png

image.png

image.png

feizibaba 回答时间:2024-9-2 12:35:11

xmshao 发表于 2024-6-18 18:01
在STM32G4的Cube库例程里有关于FDCAN的演示例程,可以参考下。
可以先基于回环模式测试OK后,再行Normal模 ...

案例代码哪里能找到

xmshao 回答时间:2024-9-2 13:58:17

feizibaba 发表于 2024-9-2 12:35
案例代码哪里能找到

image.png

G4系列Cube库例程就有。

image.png
feizibaba 回答时间:2024-9-2 15:24:39

xmshao 发表于 2024-9-2 13:58
![image.png](data/attachment/forum/202409/02/135751c5ii856wcwkzr6jc.png?imageMogr2/auto-orient ...

[md]我想问一下,我跟案例的回环模式大差不差,屏幕上显示发送出去了,但是USBCANfd无法接收到数据

xmshao 回答时间:2024-9-2 16:18:01

feizibaba 发表于 2024-9-2 15:24
我想问一下,我跟案例的回环模式大差不差,屏幕上显示发送出去了,但是USBCANfd无法接收到数据
...

回环模式主要验证基本的CAN配置,Normal模式时重点检查硬件线路,包括管脚的连接等。

相关器件手册也研究下,往往一些小细节被忽视了出不来预期结果。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版