STM32F103学习笔记(7)——CAN通信(下)—— 过滤器配置
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通信(下)—— 过滤器配置相关推荐
- RabbitMq学习笔记001---RabbitMq在Windows下安装配置
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...
- STM32F103学习笔记(5)——数码管驱动TM1650使用
一.简介 TM1650 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路.内部集成有 MCU 输入输出控制数字接口.数据锁存器.LED 驱动.键盘扫描.辉度调节等电路.TM1650 ...
- ROS学习笔记-多机器人通信(1)-实现两台机器通信
ROS是一个分布式的计算环境.一个正在运行的ROS可以在多个机器人之间分布成几十甚至上百个节点.取决于系统的配置方式,任何节点可能需要随时与任何其他节点进行通信,为实现使用同一个master控制多台机 ...
- git学习笔记——Linux和Windows下git的基本操作
git学习笔记--Linux和Windows下git的基本操作 github主页:https://github.com/Taot-chen 一.Linux环境 1.安装git sudo apt-get ...
- STM32F103学习笔记四 时钟系统
STM32F103学习笔记四 时钟系统 本文简述了自己学习时钟系统的一些框架,参照风水月 1. 单片机中时钟系统的理解 1.1 概述 时钟是单片机的脉搏,是单片机的驱动源 用任何一个外设都必须打开相应 ...
- 【K210】K210学习笔记五——串口通信
[K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...
- STM32F103学习笔记(2)——收音机模块TEA5767使用
一.简介 TEA5767是由菲利普公司推出的一款低功耗立体声收音机接收器芯片.频率范围从76-108MHz自动数字调谐.高灵敏度,高稳定性,低噪音,收音模块.一片低功耗电调谐调频立体声收音机电路,其内 ...
- Android学习笔记---22_访问通信录中的联系人和添加联系人,使用事物添加联系人...
Android学习笔记---22_访问通信录中的联系人和添加联系
- 传智博客学习笔记8--面向对象下
传智博客学习笔记8--面向对象下 2009-3-12 15:41:42 继承 extends 接口 interface 如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用另外一种方式来定义,也 ...
- 13、《Libevent中文帮助文档》学习笔记13:Linux下集成、运行libevent
Linux下编译libevent的指导可以参考<4.<Libevent中文帮助文档>学习笔记4:Linux下编译libevent>,完成编译.安装,生成so库后,其他程序即可依 ...
最新文章
- 前后端同学,必会的Linux常用基础命令
- IDEA Spring框架入门实例
- java 日志框架 详解_java日志框架系列(9):logback框架过滤器(filter)详解
- 中国版“Twilio”何在?
- ios web页面测试方法
- 统一操作系统 UOS 龙芯版上线
- 字符串匹配之PabinKarp(模式匹配)
- [翻译]XNA 3.0 Game Programming Recipes之forty-seven
- 史上最全最新C盘爆满清理整理总结
- C语言烟花代码,C语言实现烟花表白代码
- Macbook OBS 录制系统声音
- shell脚本的逻辑判断
- excel冻结窗口_excel中使用快捷方式锁定单元格,冻结某些单元格、公式或单元格...
- 22个免费的UI界面设计工具、资源及网站
- MATLAB小技巧(30)非线性拟合 lsqcurefit
- phalApi框架打印SQL语句
- 怎么查看电脑磁盘的分区是GPT还是MBR
- 微速(微锐) 与 打码工作
- 萤石开放平台二次开发——摄像头取流至抖音直播平台
- 碟评--梁紫丹新碟<<紫色的声音>>
热门文章
- pytorch .pth模型转tensorflow .pb模型
- 文山学院计算机协会与CSDN高校俱乐部
- 【洛谷】P1379 八数码难题
- 峡谷之巅服务器不稳定,峡谷之巅完全没有高端服务器的水准(经历过的可以进来讨论一下)...
- 计算机怎么配置组播地址,基于eNSP的组播配置实验.docx
- linux capslock重映射的正确方式
- Android Studio 使用intel硬件虚拟化技术,遇到HAXM 安装失败.没有找到硬件的巨坑!
- 2016 CFF Reverse
- Redis 学习报告
- 【Java面试】MySQL