请问各位大佬,有用过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);
}
|