打印
[STM32F4]

STM32F446 nucleo板CAN1通信配置不成功

[复制链接]
1023|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lunsen|  楼主 | 2019-3-25 18:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用CUBE MX配置CAN1接口,参考官方库资料和网友分享资料,不管怎样在连接USB CAN卡的时候,CAN卡都不能识别到配置好的波特率,请教有没有人遇到此类问题,谢谢了。

主要代码如下:
static void MX_CAN1_Init(void)
{

  /* USER CODE BEGIN CAN1_Init 0 */

  /* USER CODE END CAN1_Init 0 */

  /* USER CODE BEGIN CAN1_Init 1 */

  /* USER CODE END CAN1_Init 1 */
  hcan1.Instance = CAN1;
  hcan1.Init.Prescaler = 5;
  hcan1.Init.Mode = CAN_MODE_NORMAL;
  hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ;
  hcan1.Init.TimeSeg1 = CAN_BS1_6TQ;
  hcan1.Init.TimeSeg2 = CAN_BS2_2TQ;
  hcan1.Init.TimeTriggeredMode = DISABLE;
  hcan1.Init.AutoBusOff = DISABLE;
  hcan1.Init.AutoWakeUp = DISABLE;
  hcan1.Init.AutoRetransmission = ENABLE;
  hcan1.Init.ReceiveFifoLocked = DISABLE;
  hcan1.Init.TransmitFifoPriority = DISABLE;
  if (HAL_CAN_Init(&hcan1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN CAN1_Init 2 */
       
        CAN_User_Init(&hcan1);

  /* USER CODE END CAN1_Init 2 */

}

void CAN_User_Init(CAN_HandleTypeDef *hcan)
{

        CAN_FilterTypeDef  sFilterConfig;
//        HAL_StatusTypeDef  HAL_Status;
       
        sFilterConfig.FilterBank = 0;                     
        sFilterConfig.FilterMode =  CAN_FILTERMODE_IDMASK;   
        sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;   
                       
        sFilterConfig.FilterIdHigh = CAN_CONFIG_INIT.CAN_Rece_ID<<5;  
        sFilterConfig.FilterIdLow  = 0 | CAN_ID_STD;   
       
//  sFilterConfig.FilterIdHigh = 0;  
//        sFilterConfig.FilterIdLow  = 0;  
                       
        sFilterConfig.FilterMaskIdHigh = 0;
        sFilterConfig.FilterMaskIdLow  = 0;
       
        sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;             
        sFilterConfig.FilterActivation = ENABLE;
       
        sFilterConfig.SlaveStartFilterBank  = 0;
       
  if (HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK)
        {
                Error_Handler();
        }
       
        if (HAL_CAN_Start(&hcan1) != HAL_OK )
        {
     Error_Handler();
  }       
       
//  if(HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_TX_MAILBOX_EMPTY) != HAL_OK)
        if(HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK)
        {
    Error_Handler();
  }
       
}   

使用特权

评论回复
沙发
gaoke231| | 2019-3-25 22:39 | 只看该作者
先测试回环,看下可以通讯不?

使用特权

评论回复
板凳
gaoke231| | 2019-3-25 22:39 | 只看该作者
然后再切换成正常模式,连接两个板卡的CAN口

使用特权

评论回复
地板
gaoke231| | 2019-3-25 22:40 | 只看该作者
注意 CAN_H  -> CAN_H   CAN_L  -> CAN_L  

使用特权

评论回复
5
捉虫天师| | 2019-3-25 22:48 | 只看该作者
官方有没有这个例子,直接跑例子试试。

使用特权

评论回复
6
玛尼玛尼哄| | 2019-3-25 23:39 | 只看该作者
硬件没问题吧

使用特权

评论回复
7
paotangsan| | 2019-4-10 10:32 | 只看该作者
cube有配套的软件啊 对nucleo板子

使用特权

评论回复
8
renzheshengui| | 2019-4-10 10:41 | 只看该作者
加匹配电阻了没有呀

使用特权

评论回复
9
wakayi| | 2019-4-10 10:46 | 只看该作者
还需要有接收方的

使用特权

评论回复
10
wowu| | 2019-4-10 10:51 | 只看该作者
接收方用的什么

使用特权

评论回复
11
木木guainv| | 2019-4-10 11:08 | 只看该作者
楼主需要两块对接吧

使用特权

评论回复
12
xiaoqizi| | 2019-4-10 11:10 | 只看该作者
用示波器卡卡看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

30

帖子

0

粉丝