硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6194|回复: 3
收起左侧

[有问必答] can通讯问题

[复制链接]

32

主题

97

回帖

193

积分

初级会员

积分
193
发表于 2015-10-30 13:41:23 | 显示全部楼层 |阅读模式
今天调试程序时,CAN在传送数据时,当接两台can从设备和主机通讯时,从设备数据在传送数据时,有被卡住的时候,产生can发
送状态一直处于发送状态,等不到发送完成状态。 这是怎么回事?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2015-10-30 16:35:04 | 显示全部楼层
曾经用3个V5板子测试CAN例子,不存在这个问题,用我们开发板配套的例子试试。
回复

使用道具 举报

32

主题

97

回帖

193

积分

初级会员

积分
193
 楼主| 发表于 2015-10-31 18:48:53 | 显示全部楼层
void CAN_Configuration(void)
{
       CAN_InitTypeDef CAN_InitStructure;
       CAN_FilterInitTypeDef CAN_FilterInitStructure;

       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;                         //FIFO 溢出时报文覆盖源文件
       CAN_InitStructure.CAN_TXFP = DISABLE;                          //报文发送优先级取决于ID号  
       CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;                //正常的工作模式

       // 设置CAN 波特率  10 KBPS
       CAN_InitStructure.CAN_SJW       = CAN_SJW_1tq;
       CAN_InitStructure.CAN_BS1       = CAN_BS1_3tq;
       CAN_InitStructure.CAN_BS2       = CAN_BS2_2tq;
       CAN_InitStructure.CAN_Prescaler = 600;
                                                  
       CAN_Init(CAN1,&CAN_InitStructure);                                                    //初始化CAN   
       CAN_FilterInitStructure.CAN_FilterNumber         = 0;                                 //屏蔽滤波  
       CAN_FilterInitStructure.CAN_FilterMode           = CAN_FilterMode_IdMask;            //标识符屏蔽晃模式
       CAN_FilterInitStructure.CAN_FilterScale          = CAN_FilterScale_32bit;             //32位寄存器
     
      CAN_FilterInitStructure.CAN_FilterIdHigh         = 0;                                 //过滤器标识符 高16位   读取拨码开关状态    本机地址
       CAN_FilterInitStructure.CAN_FilterIdLow          = 0;                                //过滤器标识符 低16位   广播地址
     
       CAN_FilterInitStructure.CAN_FilterMaskIdHigh     = 0;                               //过滤器屏蔽标识符 高16位  
       CAN_FilterInitStructure.CAN_FilterMaskIdLow      = 0;                                  //过滤器屏蔽标识符 低16位  
     
       CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_Filter_FIFO0;                    //过滤器 0 关联到 FIFO0   
       CAN_FilterInitStructure.CAN_FilterActivation     = ENABLE;//                        //开启过滤器  
       CAN_FilterInit(&CAN_FilterInitStructure);                                              //初始化过滤器  
  
    CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);                                                 //开启接收中断使能位                        
}
回复

使用道具 举报

32

主题

97

回帖

193

积分

初级会员

积分
193
 楼主| 发表于 2015-10-31 18:54:53 | 显示全部楼层
我是这么配置的,是不是,大家配置的都差不多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-20 00:39 , Processed in 0.164463 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表