1. 前言

元旦嗨了几天,今天回来补一下CAN的过滤器。

就使用而言,实际上CAN的过滤器非常简单,只需要几个简单的参数配置,不需要学习什么邮箱FIFO、还回什么静默什么的。

我一直认为,所有的东西想要入门最简单的是找个例子拿来用,你把这个例子讲清楚了,我会套着用了,然后再去学习基础知识就会知道自己在学什么,要不然我TMD学了两天各种乱七八糟的定义过两天又全都忘光了,实践的时候发现还入不了门,学了等于白学,又让人对这个想学的东西产生厌恶感。

可能是网上的教程可能都不太适合我,所以在使用参考资料写代码时候非常困难,在这里写下我的学习过程。

2. 怎么用

(1)在发送函数设置

设置标准标识符和扩展标识符,同时在下面一行设置使用标准帧或扩展帧

(2)在CAN初始化里面配置

这个过滤器ID并非标准帧ID,而是加了很多东西的ID,后面章节详解

这个过滤器的配置要看这里

总结之后,重要的是下面这个表

ID对应CAN_FilterIdHigh和CAN_FilterIdLow,ID高11位对应发送方设置的标准标识符(TxMessage.StdId=0x01),本次只讲标准格式的配置,一切从简,所以不讲扩展帧相关的配置,后续请各位读者自行研究或等我后期修改

屏蔽位对应CAN_FilterMaskIdHigh和CAN_FilterMaskIdLow


如果要使用掩码模式,就是CAN_FilterMode=CAN_FilterMode_IdMask,则规则为:

标识符表示想要接收的ID帧,如发送标识符为0x01,则过滤器ID前11位应为0000 0000 001。

因为本次讲解标准模式,无需配置扩展帧,全为0即可。IDE因为使用标准模式配置为0。RTR因为传输数据帧也配置为0。

综上,总的ID寄存器的值应该为:0000 0000 0010 0000 0000 0000 0000 0000

上述最终的ID值,绿色为CAN_FilterIdHigh的值0x0020,红色为CAN_FilterIdLow的值0x0000,注意这里的字符必须是4个字,不能是0x20,我试过不行,具体原因以后再看,咱们今天先入门哈哈。

如果要接收和这个一模一样的数据帧,则直接配置CAN_FilterMaskId为1111 1111 1111 1111 1111 1111 1111 1111,意思是接收所有的位都要和ID值的所有位相等

转换16进制为CAN_FilterMaskIdHigh值是FFFF,CAN_FilterMaskIdLow是FFFF


综上,我们发送方配置是

    TxMessage.StdId=0x01;           // 标准标识符 0-7ff(1111 111)TxMessage.ExtId=0x00;          // 设置扩展标示符 0-1FFFFFFFTxMessage.IDE=CAN_Id_Standard; // 标准帧TxMessage.RTR=CAN_RTR_Data;      // 数据帧

接收方的过滤器配置是

    CAN_FilterInitStructure.CAN_FilterIdHigh=0x0020;32位IDCAN_FilterInitStructure.CAN_FilterIdLow=0x0000;CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;//32位MASKCAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;

以上。

写到这里发现,入门需要使用的东西都讲完了。。

至于邮箱、挂号什么的的基本都由硬件完成,不需要什么配置了,溢出什么的后面再看看吧。

STM32F103学习笔记(7)——CAN通信(下)—— 过滤器配置相关推荐

  1. RabbitMq学习笔记001---RabbitMq在Windows下安装配置

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  2. STM32F103学习笔记(5)——数码管驱动TM1650使用

    一.简介 TM1650 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路.内部集成有 MCU 输入输出控制数字接口.数据锁存器.LED 驱动.键盘扫描.辉度调节等电路.TM1650 ...

  3. ROS学习笔记-多机器人通信(1)-实现两台机器通信

    ROS是一个分布式的计算环境.一个正在运行的ROS可以在多个机器人之间分布成几十甚至上百个节点.取决于系统的配置方式,任何节点可能需要随时与任何其他节点进行通信,为实现使用同一个master控制多台机 ...

  4. git学习笔记——Linux和Windows下git的基本操作

    git学习笔记--Linux和Windows下git的基本操作 github主页:https://github.com/Taot-chen 一.Linux环境 1.安装git sudo apt-get ...

  5. STM32F103学习笔记四 时钟系统

    STM32F103学习笔记四 时钟系统 本文简述了自己学习时钟系统的一些框架,参照风水月 1. 单片机中时钟系统的理解 1.1 概述 时钟是单片机的脉搏,是单片机的驱动源 用任何一个外设都必须打开相应 ...

  6. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  7. STM32F103学习笔记(2)——收音机模块TEA5767使用

    一.简介 TEA5767是由菲利普公司推出的一款低功耗立体声收音机接收器芯片.频率范围从76-108MHz自动数字调谐.高灵敏度,高稳定性,低噪音,收音模块.一片低功耗电调谐调频立体声收音机电路,其内 ...

  8. Android学习笔记---22_访问通信录中的联系人和添加联系人,使用事物添加联系人...

    Android学习笔记---22_访问通信录中的联系人和添加联系

  9. 传智博客学习笔记8--面向对象下

    传智博客学习笔记8--面向对象下 2009-3-12 15:41:42 继承 extends 接口 interface 如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用另外一种方式来定义,也 ...

  10. 13、《Libevent中文帮助文档》学习笔记13:Linux下集成、运行libevent

    Linux下编译libevent的指导可以参考<4.<Libevent中文帮助文档>学习笔记4:Linux下编译libevent>,完成编译.安装,生成so库后,其他程序即可依 ...

最新文章

  1. 前后端同学,必会的Linux常用基础命令
  2. IDEA Spring框架入门实例
  3. java 日志框架 详解_java日志框架系列(9):logback框架过滤器(filter)详解
  4. 中国版“Twilio”何在?
  5. ios web页面测试方法
  6. 统一操作系统 UOS 龙芯版上线
  7. 字符串匹配之PabinKarp(模式匹配)
  8. [翻译]XNA 3.0 Game Programming Recipes之forty-seven
  9. 史上最全最新C盘爆满清理整理总结
  10. C语言烟花代码,C语言实现烟花表白代码
  11. Macbook OBS 录制系统声音
  12. shell脚本的逻辑判断
  13. excel冻结窗口_excel中使用快捷方式锁定单元格,冻结某些单元格、公式或单元格...
  14. 22个免费的UI界面设计工具、资源及网站
  15. MATLAB小技巧(30)非线性拟合 lsqcurefit
  16. phalApi框架打印SQL语句
  17. 怎么查看电脑磁盘的分区是GPT还是MBR
  18. 微速(微锐) 与 打码工作
  19. 萤石开放平台二次开发——摄像头取流至抖音直播平台
  20. 碟评--梁紫丹新碟<<紫色的声音>>

热门文章

  1. pytorch .pth模型转tensorflow .pb模型
  2. 文山学院计算机协会与CSDN高校俱乐部
  3. 【洛谷】P1379 八数码难题
  4. 峡谷之巅服务器不稳定,峡谷之巅完全没有高端服务器的水准(经历过的可以进来讨论一下)...
  5. 计算机怎么配置组播地址,基于eNSP的组播配置实验.docx
  6. linux capslock重映射的正确方式
  7. Android Studio 使用intel硬件虚拟化技术,遇到HAXM 安装失败.没有找到硬件的巨坑!
  8. 2016 CFF Reverse
  9. Redis 学习报告
  10. 【Java面试】MySQL