首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

stm32 f4 关于can总线的学习心得(2)

stm32 f4 关于can总线的学习心得(2)

/* CAN cell init */
  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;                //失能fifo优先级
  CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;  //?????¤×÷????
  CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;                         //设定同步时间段
   
  /* CAN Baudrate = 1MBps (CAN clocked at 30 MHz) */
  CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;                //?è?¨?±????1??6???±??????????
  CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq;                //?è?¨?±????2??8???±??????????
  CAN_InitStructure.CAN_Prescaler = 2;                                //?è?¨???±?????????¤????2
  CAN_Init(CAN2, &CAN_InitStructure);


  CAN_FilterInitStructure.CAN_FilterNumber = 14;                                //???¨?????÷14  ?¨????????????±?????stm32????14???????¨????
  CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;                //?????÷???????? ±ê??·???±???????
  CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;        //1??32???????÷
  CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;                        //?è?¨?????÷±ê??·?  ???ù?è???????÷???°????×?????????????????????
//???????è?????¨????±ê×???
  //CAN_FilterInitStructure.CAN_FilterIdHigh = x06DB<<5;//?ò??????×???11????±ê×???11????

CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;                                //?è?¨?????÷±ê??·?
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;                        //?è?¨?????÷??±?±ê??·?
  CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;                          //?è?¨?????÷??±?±ê??·?
//?????è??????±???????????high??low???è????0xffff???°?????????????????¨?????·;
//CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xffff;                        //?è?¨?????÷??±?±ê??·?
  //CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0xffff;                          //?è?¨?????÷??±?±ê??·?
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;                        //CAN_FilterFIFO0???ò?????÷14
  CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;                        //?????????÷
  CAN_FilterInit(&CAN_FilterInitStructure);
  
  /* Transmit Structure preparation */
  TxMessage.StdId = 0x321;                //?è?¨±ê??·?0x321//???????????á?©??????  ±¨??±ê?????????????à??????????????
  TxMessage.ExtId = 0x01;                        //?è?¨?©??±ê??·?0x01
  TxMessage.RTR = CAN_RTR_DATA;                //??????
  TxMessage.IDE = CAN_ID_STD;                        //????±ê×?±ê??·?
  TxMessage.DLC = 1;                                                        //???????????¤????1



// CAN_Transmit(&TxMessage);  //yj?í??
  /* Enable FIFO 0 message pending Interrupt */
  CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);


}

这里黄色部分是对发送的地方的标准进行配置,发送采用标准帧模式,标志符那个需要0x321的,这里的扩展符可有可无;因为后面有一个模式选择;
红色部分是对接收进行配置这里主要是对过滤器和过滤器屏蔽标志进行配置,他们两个是配合使用的
继承事业,薪火相传
返回列表