打印
[STM32H7]

STM32H743板子CANFD中断接收调试过程中的一点问题及解决方法

[复制链接]
689|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
木木guainv|  楼主 | 2021-9-6 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
控制器:STM32H743

功能:双路CANFD

速率:1M_5M

CANFD时钟为20M

采样点数:仲裁场85%,数据场75%。配置如下

hfdcan1.Init.NominalPrescaler = 1;
hfdcan1.Init.NominalSyncJumpWidth = 3;
hfdcan1.Init.NominalTimeSeg1 = 16;
hfdcan1.Init.NominalTimeSeg2 = 3;
hfdcan1.Init.DataPrescaler = 1;
hfdcan1.Init.DataSyncJumpWidth = 1;
hfdcan1.Init.DataTimeSeg1 = 2;
hfdcan1.Init.DataTimeSeg2 = 1;
问题:调试STM32H743过程中,参考正点原子的代码,轮询方式两路CANFD接收发送都是OK的,后来使用CUBE改为中断方式然后生成代码,发现不能发送,可以进接收中断,发送32次之后,就出现进不了接收中断,后来手动添加CANFD中断代码,CANFD中断接收/发送成功。(原因可能是CUBE的某些配置和我写的不一样,或者CUBE版本太低导致,具体原因后面排查)

自己添加的CANFD中断代码有

HAL_FDCAN_MspInit函数里面增加配置:中断优先级、使能FDCAN1中断代码
HAL_FDCAN_MspDeInit函数里面增加:关闭FDCAN1中断代码
增加CANFD中断调用函数
增加FIFO调用函数
void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* fdcanHandle)
{
    ……
  /* USER CODE BEGIN FDCAN1_MspInit 1 */
        HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn);
  /* USER CODE END FDCAN1_MspInit 1 */
}
void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* fdcanHandle)
{
    ……
    /* USER CODE BEGIN FDCAN1_MspDeInit 1 */
        HAL_NVIC_DisableIRQ(FDCAN1_IT0_IRQn);
    /* USER CODE END FDCAN1_MspDeInit 1 */
}  
/* USER CODE BEGIN 1 */
void FDCAN1_IT0_IRQHandler(void)
{
    HAL_FDCAN_IRQHandler(&hfdcan1);
}
/* USER CODE END 1 */


//FIFO0回调函数
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
{
  if((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE)!=RESET)   //FIFO1新数据中断
  {
    if(hfdcan == &hfdcan1)//CANFD1中断
    {                                                 
      HAL_FDCAN_GetRxMessage(&hfdcan1,FDCAN_RX_FIFO0,&FDCAN1_RxHeader,canbuf_Rec);
      CANFD1_Rce_Flag=1;
      HAL_FDCAN_ActivateNotification(&hfdcan1,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);
    }
  }
}


使用特权

评论回复
沙发
Annie556| | 2022-2-11 15:32 | 只看该作者
这个操作挺好的,值得参考,以后用到can的时候可以借鉴一下

使用特权

评论回复
板凳
呐咯密密| | 2022-2-11 15:42 | 只看该作者
感谢记录分享,希望可以帮到以后遇到这个问题的人

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

146

主题

4098

帖子

5

粉丝