[STM32F1] CAN如何设置标准帧

[复制链接]
1081|13
 楼主| juventus9554 发表于 2021-11-21 15:10 | 显示全部楼层 |阅读模式
CAN如何设置标准帧
heweibig 发表于 2021-11-21 15:15 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| juventus9554 发表于 2021-11-21 15:15 | 显示全部楼层
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;
          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);//滤波器初始化

求教:假如我想设置标准帧的ID为0x56C,应该怎么设置CAN_FilterInitStructure.CAN_FilterIdHigh和dCAN_FilterInitStructure.CAN_FilterIdLow 的值 ?
zhenykun 发表于 2021-11-21 15:17 | 显示全部楼层
这个得要自己配,对着手册来。
zwll 发表于 2021-11-21 15:20 | 显示全部楼层
https://mp.weixin.qq.com/s?__biz=MzA3OTIxMjQyNQ==&mid=2650948053&idx=1&sn=df92efcd987372bf480708074aed6d17&chksm=84401b33b3379225ecfb9c17e7c1f2051f5c09a78dc93ca2b959ab8e09eac423ed3bf8ad1f82&token=318093403&lang=zh_CN#rd
dingy 发表于 2021-11-21 15:23 | 显示全部楼层
手册上写的挺清楚的
lizye 发表于 2021-11-21 15:31 | 显示全部楼层

或者用代码生成工具
spark周 发表于 2021-11-21 15:34 | 显示全部楼层
对着寄存器说明自己设置是一样的
wangzsa 发表于 2021-11-21 15:36 | 显示全部楼层
默认的就是标准帧吧
zhenykun 发表于 2021-11-21 15:38 | 显示全部楼层
是的  无需设置 默认的就是
yszong 发表于 2021-11-21 15:42 | 显示全部楼层
这里的CAN_FilterId和CAN_FilterMaskId是配合使用的,意思是CAN_FilterId指出需要屏蔽ID的什么内容,什么格式;CAN_FilterMaskId是指CAN_FilterId的每一位是否需要过滤,若CAN_FilterMaskId在某位上是1的话,ID对应位上的数值就必须和CAN_FilterId该位上的一样,保持一致,反之则是“不关心”。
 楼主| juventus9554 发表于 2021-11-21 15:44 | 显示全部楼层

嗯,那我按大家的说法挨个排查一下,谢谢哈
_L_D_H_ 发表于 2021-11-22 14:30 | 显示全部楼层
  1. /********************************************************************************************************************************************************************************************
  2. **函数名称:                CanSetRxFilter       
  3. **函数功能:       
  4. **入口参数:
  5. **返回参数:
  6. *********************************************************************************************************************************************************************************************/
  7. void CanSetRxFilter(BYTE num,UINT32 FilterID1,UINT32 FilterID2)
  8. {
  9.         CAN_FilterInitTypeDef  CAN_FilterInitStructure;
  10.         CAN_FilterInitStructure.CAN_FilterNumber = num;
  11.         CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdList;
  12.         CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
  13.         printf("\r\n num: %d FilterID1: %08x FilterID2: %08x",num,FilterID1,FilterID2);
  14.         if(FilterID1 > 0x800)
  15.         {
  16.                
  17.                 CAN_FilterInitStructure.CAN_FilterIdHigh=((FilterID1 << 3 )>> 16) & 0xffff;
  18.                 CAN_FilterInitStructure.CAN_FilterIdLow=((FilterID1 << 3)& 0xffff) | CAN_ID_EXT;
  19.         }
  20.         else
  21.         {
  22.                 CAN_FilterInitStructure.CAN_FilterIdHigh = FilterID1 << 5;
  23.                 CAN_FilterInitStructure.CAN_FilterIdLow = 0|CAN_ID_STD;
  24.         }


  25.         if(FilterID2 > 0x800)
  26.         {
  27.                
  28.                 CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((FilterID2 << 3 )>> 16) & 0xffff;
  29.                 CAN_FilterInitStructure.CAN_FilterMaskIdLow=((FilterID2 << 3)& 0xffff) | CAN_ID_EXT;
  30.         }
  31.         else
  32.         {
  33.                 CAN_FilterInitStructure.CAN_FilterMaskIdHigh = FilterID2 << 5;
  34.                 CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0|CAN_ID_STD;
  35.         }

  36.        
  37.         CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0;
  38.         CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
  39.        
  40.         CAN_FilterInit(&CAN_FilterInitStructure);
  41. }       
_L_D_H_ 发表于 2021-11-22 14:32 | 显示全部楼层
兼容过滤标准帧和扩展帧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

900

主题

12190

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部