
求大佬看一下,FDCAN使用传统CAN模式,能发送数据,但是不能进入接收中断 代码配置了两处: 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 / } |
最近在做单极倍频SPWM
stm32G474RBT3的flash擦除寿命是多少?
stm32g431rbt怎么显示汉字
F103和G474的180°移相區別
STM32G431内部运放1和2输出连接的ADC为什么不是OPAMP?
STM32G431K COMP 比较器下降沿中断
STSPIN32G4内部驱动电压输出问题
STM32G431 用MCSDK5.4.8 进行PMSM永磁同步电机FOC控制,转速上升到某一值(3500rpm)无法继续上升,上不去
STM32G431CBU6 驱动STDRIVE101,自己配置的PWM互补输出,死区时间为500ns,为什么STDRIVE101的报警灯会亮,CP接10K接地了,scref接的+5V
STM32G474, I2C设备地址,总出现多余地址0x20,是什么原因?
可以先基于回环模式测试OK后,再行Normal模式实测验证。
案例代码哪里能找到
G4系列Cube库例程就有。
[md]我想问一下,我跟案例的回环模式大差不差,屏幕上显示发送出去了,但是USBCANfd无法接收到数据
回环模式主要验证基本的CAN配置,Normal模式时重点检查硬件线路,包括管脚的连接等。
相关器件手册也研究下,往往一些小细节被忽视了出不来预期结果。