Advertisement

STM32H743芯片在CANFD中断接收调试过程中遇到的一个小问题及解决方案

阅读量:

控制器: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收发均正常工作 然而随后将系统切换至中断模式并生成相应的代码 发现无法执行发送操作 可以能够进入接收中断状态 连续发送32次后 就无法再次进入接收中断状态 后来手动增加了CANFD相关的中断处理代码 这样实现了有效的CANFD收发功能

自己添加的CANFD中断代码有

在HAL_FDCAN.NULL检查函数内

全部评论 (0)

还没有任何评论哟~