野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13362|回复: 5

急急,求大神帮助

[复制链接]
发表于 2016-12-28 10:15:21 | 显示全部楼层 |阅读模式
can总线通信,在回环模式下能传输数据,也能进中断,在正常模式下不能传输数据,也不能进终端,求大神详细讲解一下。如果是波特率有错,怎样设置波特率,两个板设置一样,还是怎样?
回复

使用道具 举报

发表于 2016-12-28 10:23:03 | 显示全部楼层
波特率、报文过滤器都要配置,看视频的说明
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 10:28:37 | 显示全部楼层
本帖最后由 大炮 于 2016-12-28 10:34 编辑
flyleaf 发表于 2016-12-28 10:23
波特率、报文过滤器都要配置,看视频的说明

都配置了,因为是两个不一样的板,协议设成一致,但还是收不到数据,
u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
{

        GPIO_InitTypeDef GPIO_InitStructure;
        CAN_InitTypeDef        CAN_InitStructure;
         CAN_FilterInitTypeDef  CAN_FilterInitStructure;
#if CAN_RX0_INT_ENABLE
           NVIC_InitTypeDef  NVIC_InitStructure;
#endif

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能PORTA时钟                                                                                                                    

          RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//使能CAN1时钟        

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽
    GPIO_Init(GPIOA, &GPIO_InitStructure);                //初始化IO
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化IO
         
         //CAN单元设置
         CAN_InitStructure.CAN_TTCM=DISABLE;                                                 //非时间触发通信模式  //
         CAN_InitStructure.CAN_ABOM=DISABLE;                                                 //软件自动离线管理         //
          CAN_InitStructure.CAN_AWUM=DISABLE;                                                 //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)//
          CAN_InitStructure.CAN_NART=ENABLE;                                                         //禁止报文自动传送 //
          CAN_InitStructure.CAN_RFLM=DISABLE;                                                 //报文不锁定,新的覆盖旧的 //
          CAN_InitStructure.CAN_TXFP=DISABLE;                                                 //优先级由报文标识符决定 //
          CAN_InitStructure.CAN_Mode= mode;                 //模式设置: mode:0,普通模式;1,回环模式; //
          //设置波特率
          CAN_InitStructure.CAN_SJW=tsjw;                                //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位  CAN_SJW_1tq         CAN_SJW_2tq CAN_SJW_3tq CAN_SJW_4tq
          CAN_InitStructure.CAN_BS1=tbs1;                               //Tbs1=tbs1+1个时间单位CAN_BS1_1tq ~CAN_BS1_16tq
          CAN_InitStructure.CAN_BS2=tbs2;                                //Tbs2=tbs2+1个时间单位CAN_BS2_1tq ~        CAN_BS2_8tq
          CAN_InitStructure.CAN_Prescaler=brp;                                         //分频系数(Fdiv)为brp+1        //
          CAN_Init(CAN1, &CAN_InitStructure);                      // 初始化CAN1

         CAN_FilterInitStructure.CAN_FilterNumber=0;                   //过滤器0
         CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;    //32位
          CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;                    / ///32位ID
          CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32位MASK
          CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
         CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0

          CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化
#if CAN_RX0_INT_ENABLE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
        
        CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//FIFO0消息挂号中断允许.                    
  
          NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     // 主优先级为0
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            // 次优先级为0
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
#endif
        return 0;
}   
int main(void)
{  
u8 key;
u8 i=0,t=0;
u8 cnt=0;
u8 canbuf[8];
u8 res;
u8 len=8;
//u8 mode=CAN_Mode_Normal;//CAN工作模式;CAN_Mode_Normal(0):普通模式,CAN_Mode_LoopBack(1):环回模式
u8 mode=CAN_Mode_Normal;
delay_init();       //延时函数初始化   
NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);   //串口初始化为9600
LED_Init();      //初始化与LED连接的硬件接口
LCD_Init();       //初始化LCD
  CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_7tq,5,CAN_Mode_Normal);
....................
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 11:08:21 | 显示全部楼层
flyleaf 发表于 2016-12-28 10:23
波特率、报文过滤器都要配置,看视频的说明

基本都会配置,我想知道还有哪些地方会导致接收不到数据?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 11:09:37 | 显示全部楼层
flyleaf 发表于 2016-12-28 10:23
波特率、报文过滤器都要配置,看视频的说明

视频上能找到错误也不问了。调了两天了。
回复 支持 反对

使用道具 举报

发表于 2016-12-28 14:54:24 | 显示全部楼层
我们的程序直接下载到板子上就能跑啊,两个板子都下同一个程序就行了,为什么要把配置改成不一样
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-14 02:19 , Processed in 0.029157 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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