SMT32 CAN2配置中遇到無法接收的問題

STM32 CAN2 配置中遇到無法接收的問題

STM32系列中帶有兩個CAN控制器,但是按照CAN1配置CAN2,非常容易導致無法接收和發送問題,主要是因爲下面兩個問題導致的。:
①STM32系列單片機中CAN1和CAN2共用濾波器,需在CAN 篩選器主寄存器 (CAN_FMR)中配置CAN2 起始存儲區後CAN2才能使用篩選器。

CAN_SlaveStartBank(15); // can2篩選器組從15開始
CAN_FilterInitStructure.CAN_FilterNumber=15;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32λ
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
②CAN2作爲從設備無法直接訪問SRAM,因此在使能CAN2時鐘時,首先要使能CAN1時鐘纔可以。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章