STM32F107 CAN滤波器设置解析

发布者:美梦小狮子最新更新时间:2017-01-19 来源: eefocus 关键字:STM32F107  CAN滤波器 手机看文章 扫描二维码
随时随地手机看文章

该部分程序如下:

  CAN_FilterInitStructure.CAN_FilterNumber=14;  //选择滤波器组,共14个
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; //过滤模式,选择位屏蔽模式而不是标识符列表模式
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;//1个32位寄存器
  CAN_FilterInitStructure.CAN_FilterIdHigh=(((u32)0x4321<<3)&0xFFFF0000)>>16;//要过滤的ID高位
  CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x4321<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;要过滤的ID低位
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;//0x0000;//收到的ID每一位必须与必须滤波寄存器中的每一位相等
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;//0x0000;
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
  CAN_FilterInit(&CAN_FilterInitStructure);  
   /* transmit */
  //TxMessage.StdId=0x12;
  TxMessage.ExtId=0x1234;
  //TxMessage.IDE=CAN_ID_EXT;
  TxMessage.IDE=CAN_ID_EXT;//CAN_ID_STD;
  TxMessage.RTR=CAN_RTR_DATA;
  TxMessage.DLC = 2;
  TxMessage.Data[0]='N';
  TxMessage.Data[1]='2';
  CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);
  //TxMessage.Data[0] ='h';
  CAN_Transmit(CAN2, &TxMessage);

CAN_FilterIdHigh 和CAN_FilterIdLow为什么这么设置呢,看看下图就明白了。

STM32F107 CAN滤波器设置解析 - 依雨听梦 - yiyutingmeng 的博客

以上是扩展帧,对于标准帧怎么处理呢

CAN_FilterInitStructure.CAN_FilterIdHigh   = (((u32)CAN_ID<<21)&0xFFFF0000)>>16;  
CAN_FilterInitStructure.CAN_FilterIdLow   = (((u32)CAN_ID<<21)|CAN_ID_STD|CAN_RTR_DATA)&0xFFFF;  
CAN_FilterInitStructure.CAN_FilterMaskIdHigh   = 0xFFFF;  
CAN_FilterInitStructure.CAN_FilterMaskIdLow    = 0xFFFF; 


关键字:STM32F107  CAN滤波器 引用地址:STM32F107 CAN滤波器设置解析

上一篇:STM32F107 之USB通信
下一篇:对STM32F107中断向量优先级的理解

推荐阅读最新更新时间:2024-03-16 15:31

LPC2000系列的CAN总线验收滤波器应用
CAN(Controller Area NetWork)总线,即控制器局域网总线,是由德国Bosch公司于1982年开发和推出的最早用于汽车内部测量与执行部件之间的数据通信协议。在20多年的历史中,CAN总线在许多领域得到了应用,是到目前为止唯一有国际标准的现场总线。 CAN现场总线按照国际标准化组织ISO提出的"开放系统互联(OSI)"参考模式,实现其中的物理层、数据链路层和应用层。CAN控制器用来实现CAN总线协议。CAN控制器芯片分为两类:一类是独立的控制器芯片,如SJA1000;另一类是和微控制器做在一起,如Philips公司的LPC2000系列32位ARM微控制器。两类控制器都提供了报文标识过滤的验收滤波器。但独
[应用]
STM32F107 之USB通信
开发板文档资料里提供了演示程序,当然对于PID,VID和字符串描述符不做修改也可以用于我们的程序,但是要想实现我们自己的通信协议,就必须修改报告描述符,它规定了通信数据包的含义、最大字节数等。演示程序中的报告描述符,描述了7个ID,分别是LED1-4,2个按键和1个A/D,所以描述符很长,在改程序中,我们采用了《圈圈教你玩USB》里的报告描述符,仅仅描述了一个ID-7。描述符定义如下。 const uint8_t CustomHID_ReportDescriptor = { //每行开始的第一字节为该条目的前缀,前缀的格式为: //D7~D4:bTag。D3~D2:bType;D1~D0:bSize。以下分别对每个条目注释
[单片机]
STM32F103 CAN通信的滤波器设置
刚开始接触CAN通信,测试过收发后,还需要使用标识符过滤来实现固定节点的数据收发。记录一下“屏蔽位模式”下滤波参数的设置。 发送代码如下: //can发送一组数据(固定格式:ID为0X123,标准帧,数据帧) //len:数据长度(最大为8) //msg:数据指针,最大为8个字节. //返回值:0,成功; // 其他,失败; u8 Can_Send_Msg(u8* msg,u8 len) { u8 mbox; u16 i=0; CanTxMsg TxMessage; TxMessage.StdId=0X123; // 标准标识符 TxMessage.ExtId=0x00; // 设置扩展标示符 TxMessa
[单片机]
STM32F103 <font color='red'>CAN</font>通信的<font color='red'>滤波器</font>设置
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved