打印
[STM32F4]

STM32F446 nucleo板CAN1通信配置不成功

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

使用特权

评论回复
沙发
tian111| | 2021-2-9 23:13 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
liuzaiy|  楼主 | 2021-2-9 23:15 | 只看该作者

主要代码如下:
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();
  }
        
}   

使用特权

评论回复
地板
kangzj| | 2021-2-9 23:20 | 只看该作者
先测试回环,看下可以通讯不?

使用特权

评论回复
5
huanghuac| | 2021-2-9 23:23 | 只看该作者
然后再切换成正常模式,连接两个板卡的CAN口

使用特权

评论回复
6
spark周| | 2021-2-9 23:26 | 只看该作者
注意 CAN_H  -> CAN_H   CAN_L  -> CAN_L  

使用特权

评论回复
7
huanghuac| | 2021-2-9 23:28 | 只看该作者
官方有没有这个例子,直接跑例子试试。

使用特权

评论回复
8
yufe| | 2021-2-9 23:34 | 只看该作者
硬件没问题吧

使用特权

评论回复
9
zhenykun| | 2021-2-9 23:36 | 只看该作者
cube有配套的软件啊 对nucleo板子

使用特权

评论回复
10
yufe| | 2021-2-9 23:38 | 只看该作者
加匹配电阻了没有呀

使用特权

评论回复
11
jlyuan| | 2021-2-9 23:40 | 只看该作者
还需要有接收方的

使用特权

评论回复
12
songqian17| | 2021-2-9 23:45 | 只看该作者
接收方用的什么

使用特权

评论回复
13
tian111| | 2021-2-9 23:47 | 只看该作者
楼主需要两块对接吧

使用特权

评论回复
14
liuzaiy|  楼主 | 2021-2-9 23:49 | 只看该作者
用示波器卡卡看

使用特权

评论回复
15
liuzaiy|  楼主 | 2021-2-9 23:51 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
16
八层楼| | 2021-3-2 23:32 | 只看该作者
估计是can有问题

使用特权

评论回复
17
观海| | 2021-3-2 23:34 | 只看该作者
自己做的usbcan?

使用特权

评论回复
18
guanjiaer| | 2021-3-2 23:39 | 只看该作者
can非常不好调试

使用特权

评论回复
19
heimaojingzhang| | 2021-3-2 23:41 | 只看该作者
需要加终端电阻

使用特权

评论回复
20
keaibukelian| | 2021-3-2 23:43 | 只看该作者
双方都是usb can吗

使用特权

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

本版积分规则

735

主题

7546

帖子

2

粉丝