STM32/STM8技术william hill官网
直播中

skyhahaha

10年用户 15经验值
擅长:MEMS/传感技术
私信 关注
[问答]

STM32F105 CAN设置

使用标准库函数。硬件为STM32F105芯片,外部晶振8M,CAN收发器为TJA1050,CAN_RX-PB8,CAN_TX-PB9。
CAN初始化失败。
贴上初始化代码:
    SystemInit();
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);

    GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);

   /* GPIOB */     
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);     

   //CAN1 TXD -> PB9
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_Init(GPIOB, &GPIO_InitStructure);   
  //CAN1 RXD -> PB8
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
   GPIO_Init(GPIOB, &GPIO_InitStructure);   
   CAN_DeInit(CAN1);
   CAN_Structinit(&CAN_InitStructure);

   CAN_InitStructure.CAN_TTCM=DISABLE;                          
   CAN_InitStructure.CAN_ABOM=DISABLE;                           
   CAN_InitStructure.CAN_AWUM=DISABLE;                          
   CAN_InitStructure.CAN_NART=DISABLE;                           
   CAN_InitStructure.CAN_RFLM=DISABLE;                          
   CAN_InitStructure.CAN_TXFP=DISABLE;                          
   CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;           
   CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;                  
   CAN_InitStructure.CAN_BS1=CAN_BS1_6tq;                  
   CAN_InitStructure.CAN_BS2=CAN_BS2_1tq;                  
   CAN_InitStructure.CAN_Prescaler=18;                           
   CAN_Init(CAN1, &CAN_InitStructure);                        
      
         /* CAN filter init */
   CAN_FilterInitStructure.CAN_FilterNumber=0;                                                   
   CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;                 
   CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;         
   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);

程序中没有定义STM32F10X_CL。自己计算得到的波特率为250K,可是以250K无法通信

求大神帮忙看看程序有啥问题


已退回10积分

更多回帖

发帖
×
20
完善资料,
赚取积分