打印
[STM32F7]

STM32F7 CAN

[复制链接]
2756|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wzyan321|  楼主 | 2018-3-20 11:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教下STM32F769 CAN3的配置,能发送,接收不到,为什么?配置如下:
/* CAN3 init function */
static void MX_CAN3_Init(void)
{
    CAN_FilterTypeDef sFilterConfig;
   
    hcan3.Instance = CAN3;
    hcan3.Init.Prescaler = 54000000ul / 250000 / 18;
    hcan3.Init.Mode = CAN_MODE_NORMAL;
    hcan3.Init.SyncJumpWidth = CAN_SJW_1TQ;
    hcan3.Init.TimeSeg1 = CAN_BS1_11TQ;
    hcan3.Init.TimeSeg2 = CAN_BS2_6TQ;
    hcan3.Init.TimeTriggeredMode = DISABLE;
    hcan3.Init.AutoBusOff = DISABLE;
    hcan3.Init.AutoWakeUp = DISABLE;
    hcan3.Init.AutoRetransmission = DISABLE;
    hcan3.Init.ReceiveFifoLocked = DISABLE;
    hcan3.Init.TransmitFifoPriority = DISABLE;
    if (HAL_CAN_Init(&hcan3) != HAL_OK)
    {
        _Error_Handler(__FILE__, __LINE__);
    }
    //过滤器设置
    sFilterConfig.FilterBank  = 0;                      //过滤器组0  
    sFilterConfig.FilterMode  = CAN_FILTERMODE_IDMASK;  //工作在标识符屏蔽位模式  
    sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;  //滤波器位宽为单个32位  

    sFilterConfig.FilterIdHigh = 0;                     //(((unsigned int)0x1314<<3)&0xFFFF0000)>>16;                 //要过滤的ID高位  
    sFilterConfig.FilterIdLow  = 0;                     //(((unsigned int)0x1314<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位  
    sFilterConfig.FilterMaskIdHigh = 0; //0xffff;  
    sFilterConfig.FilterMaskIdLow  = 0; //0xffff;  
    sFilterConfig.FilterFIFOAssignment = CAN_FILTER_FIFO0;//过滤器被关联到FIFO0;  
    sFilterConfig.FilterActivation = ENABLE;              //使能过滤器  
    //sFilterConfig.BankNumber = 14;  
    if (HAL_CAN_ConfigFilter(&hcan3, &sFilterConfig) != HAL_OK)
    {
        /* Filter configuration Error */
        Error_Handler();
    }
    /*##-3- Start the CAN peripheral ###########################################*/
    if (HAL_CAN_Start(&hcan3) != HAL_OK)
    {
        /* Start Error */
        Error_Handler();
    }
    /*##-4- Activate CAN RX notification #######################################*/
    if (HAL_CAN_ActivateNotification(&hcan3, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK)
    {
        /* Notification Error */
        Error_Handler();
    }
    Can_sendData(&hcan3);
}
沙发
蝴蝶泉2018| | 2018-3-20 14:04 | 只看该作者
你配置的时钟是多少?你的Prescaler 为什么这么弄?你的GPIO是不是设定为fast mode.你怎么确定发送出去了?数据对了吗?

使用特权

评论回复
板凳
mmuuss586| | 2018-3-20 15:51 | 只看该作者
接收哪里没设置好吧;

使用特权

评论回复
地板
dongliushui| | 2018-3-20 23:25 | 只看该作者
配置问题,看看那个图形化配置工具可以用不

使用特权

评论回复
5
uubuhaowan| | 2019-1-26 16:36 | 只看该作者
楼主解决了吗,我也是这个问题

使用特权

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

本版积分规则

2

主题

3

帖子

0

粉丝