OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2952|回复: 2

STM32H743的CAN2不能进入接收中断问题

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-9-1
在线时间
2 小时
发表于 2020-9-1 09:30:43 | 显示全部楼层 |阅读模式
1金钱
请问各位大佬,有用过H743的CAN2吗?项目中需要使用两路CAN,按照原子的例程去配置,配置成中断收发的工作方式,CAN1接收发送都没问题,CAN2发送正常,接收中断进不来,请问是可能是什么问题?查资料有说同时使用两路CAN时,存在以下问题,但按照所述方法仍然不能解决。
1、调试使用芯片为Y版本,Y版本存在CPU不能同时使用两路的CAN的问题,CPU和两个CANFD同时访问MessageRAM的时候,同一时刻仅让一个CANFD访问即可解决。可单独配置使用CAN2仍然不能进入接收中断。
2、如果要配置CAN2,CAN2参数MessageRAMOffset就必须根据CAN1使用空间进行地址偏移,这样的话CAN1和CAN2才可以同时使用。CAN2配置时修改MessageRAMOffset偏移地址仍然不能进入接收中断。
板子硬件问题基本已排除,CAN芯片以及后端波形均正常。请问是否CAN2配置问题,有特别需要注意的地方?
CAN2配置代码如下:
/* FDCAN2 init function */
void MX_FDCAN2_Init(void)
{
           FDCAN_FilterTypeDef FDCAN2_RXFilter;
         
         hfdcan2.Instance =FDCAN2;
         hfdcan2.Init.FrameFormat= FDCAN_FRAME_CLASSIC;
         hfdcan2.Init.Mode =FDCAN_MODE_NORMAL;
         hfdcan2.Init.AutoRetransmission= DISABLE;
         hfdcan2.Init.TransmitPause= DISABLE;
         hfdcan2.Init.ProtocolException= DISABLE;
         hfdcan2.Init.NominalPrescaler= 1;
         hfdcan2.Init.NominalSyncJumpWidth= 8;
         hfdcan2.Init.NominalTimeSeg1= 31;
         hfdcan2.Init.NominalTimeSeg2= 8;
hfdcan2.Init.MessageRAMOffset = 0;
         hfdcan2.Init.StdFiltersNbr= 0;
         hfdcan2.Init.ExtFiltersNbr= 0;
         hfdcan2.Init.RxFifo0ElmtsNbr=1;
         hfdcan2.Init.RxFifo0ElmtSize= FDCAN_DATA_BYTES_8;
         hfdcan2.Init.RxFifo1ElmtsNbr= 0;
         hfdcan2.Init.RxFifo1ElmtSize= FDCAN_DATA_BYTES_8;
         hfdcan2.Init.RxBuffersNbr= 0;
         hfdcan2.Init.RxBufferSize= FDCAN_DATA_BYTES_8;
         hfdcan2.Init.TxEventsNbr= 0;
         hfdcan2.Init.TxBuffersNbr= 0;
         hfdcan2.Init.TxFifoQueueElmtsNbr= 1;
         hfdcan2.Init.TxFifoQueueMode= FDCAN_TX_FIFO_OPERATION;
         hfdcan2.Init.TxElmtSize =FDCAN_DATA_BYTES_8;
         if(HAL_FDCAN_Init(&hfdcan2) != HAL_OK)
         {
           Error_Handler();
         }
         //fiiter                                                     
         FDCAN2_RXFilter.IdType=FDCAN_EXTENDED_ID;
           FDCAN2_RXFilter.FilterIndex=0;                                                                                                     
           FDCAN2_RXFilter.FilterType=FDCAN_FILTER_MASK;                                      
          FDCAN2_RXFilter.FilterConfig=FDCAN_FILTER_TO_RXFIFO0;               
           FDCAN2_RXFilter.FilterID1=0x0000;                                                                  
           FDCAN2_RXFilter.FilterID2=0x0000;                                                        
         HAL_FDCAN_ConfigFilter(&hfdcan2,&FDCAN2_RXFilter);
//    HAL_FDCAN_Start(&hfdcan2);                                                                     
         HAL_FDCAN_ActivateNotification(&hfdcan2,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);
       HAL_FDCAN_ActivateNotification(&hfdcan2,FDCAN_IT_TX_FIFO_EMPTY,0);

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4477
金钱
4477
注册时间
2013-4-22
在线时间
336 小时
发表于 2020-9-1 13:11:24 | 显示全部楼层
回复

使用道具 举报

16

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-7-29
在线时间
19 小时
发表于 2020-9-1 17:00:13 | 显示全部楼层
是不是像F4 那样要同时打开CAN 1 CAN2 时钟
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 11:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表