mcp2515屏蔽寄存器和过滤寄存器的学习
mcp2515是can控制器,简单的来讲,就是只要配置好寄存器,芯片就能够自动的解析can数据帧,同时保存到接收缓存中,提醒单片机可以读取can的数据字节。
读取的方式是快速spi,可以达到10Mbits/s。当然,调试的时候,可以放低速度。前一篇文章已经分析了spi的调试步骤,这里不再分析。
can控制器有设置过滤器的功能,通俗的讲:不是can控制器想要的东西,我就过滤不接收,不放到接收缓存上,这样可以屏蔽了很多can总线上的无用的数据。
mcp251的接收缓存器控制寄存器中,有两位RXM设置,可以设置屏蔽的工作模式。
bit 6-5 RXM :接收缓冲器工作模式位
11 = 关闭屏蔽/滤波功能;接收所有报文
10 = 只接收符合滤波器条件的带有扩展标识符的有效报文
01 = 只接收符合滤波器条件的带有标准标识符的有效报文
00 = 接收符合滤波器条件的所有带扩展标识符或标准标识符的有效报文
一般易用00和11,英文文档中,10 ,01是保留的,因此中文文档也有不对的地方。
1、在调试的时候,建议不过滤,上位机发什么数据,就接收什么数据,以验证硬件和软件的基本功能是否正确。
2、如果上一步已经调试成功,说明mcp2515的驱动基本上是ok了。
3、然后可以开启“接收符合滤波器条件的所有带扩展标识符或标准标识符的有效报文”的功能,具体的方法可以参考下图:

我的屏蔽寄存器设置如下:说明是开启所有位屏蔽功能。所有id数据必须和我设置一样才能接收数据。
MCP2515_WriteByte(TXB0SIDH, 0xFF); //发送缓冲器0标准标识符高位
MCP2515_WriteByte(TXB0SIDL, 0xEB); //发送缓冲器0标准标识符低位
MCP2515_WriteByte(TXB0EID8, 0xFF); //发送缓冲器0标准标识符高位
MCP2515_WriteByte(TXB0EID0, 0xFF); //发送缓冲器0标准标识符低位
如果过滤位n如果是0,那么报文中的id的第n位也要0,
如果过滤位n如果是1,那么报文中的id的第n位也要1,
满足以上的两个条件,才是可以接受的数据id,否则将过滤掉,不接受。
如果要是屏蔽第n位设置为0,说名报文第n位数据mcp2515就不过滤,统统接收。
另外,调试过程中一定要记住电源要接好。
stm32管脚的输出电压最多是3.3V而有些芯片比如1050芯片的工作电压是大于4.75.从而导致芯片不能正常工作,外接个5Vdc解决问题。
mcp2515屏蔽寄存器和过滤寄存器的学习的更多相关文章
- stm32寄存器版学习笔记03 外部中断
stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...
- stm32寄存器版学习笔记07 ADC
STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...
- stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...
- stm32寄存器版学习笔记05 PWM
STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...
- stm32寄存器版学习笔记10 SPI
SPI(Serial Peripheral Interface),串行外围设备接口.SPI是一种高速的.全双工.同步的通信总线. SPI接口一般使用4条线通信: MISO 主设备数据输入,从设备数据输 ...
- stm32寄存器版学习笔记08 DMA
DMA(Direct Memory Access),直接存储器访问.DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高.stm32f10 ...
- stm32寄存器版学习笔记04 定时计数器中断
STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...
- stm32寄存器版学习笔记02 串口通信
stm32F103RCT6提供5路串口.串口的使用,只要开启串口时钟,设置相应的I/O口的模式,然后配置下波特率.数据位长度.奇偶校验等信息,即可使用. 1.串口的配置步骤 ①串口时钟使能 APB2外 ...
- stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)
STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CR ...
随机推荐
- Topshelf 搭建 Windows 服务
Topshelf 是一个用来部署基于.NET Framework 开发的服务的框架.简化服务创建于部署过程,并且支持控制台应用程序部署为服务.本文基于 .net core 控制台应用程序部署为服务(. ...
- Elasticsearch Transport 模块创建及启动分析
Elasticsearch 通信模块的分析从宏观上介绍了ES Transport模块总体功能,于是就很好奇ElasticSearch是怎么把服务启动起来,以接收Client发送过来的Index索引操作 ...
- 超简单的VUE在线调试网站(不需搭建环境)
jsbin.com提供简单.直观.易用的vue调试功能,最大的好处不需要自己搭建环境就可以学习VUE 1.打开http://jsbin.com/joxinumota/edit?html,js,cons ...
- 函数内this指向+排序+找出数组大小项+Math类
解决函数内this指向: 1,可以在函数外提前声明变量 _this/that = this 2,通过apply()和call()来修改函数内的this指向 二者区别: 用法是一样的,参数形式不一样 f ...
- OO_BLOG3_规格化设计(JML学习)
目录 JML语言学习笔记 理论基础 应用工具链情况 JMLUnit/JMLUnitNG UNIT3 作业分析 作业 3-1 实现两个容器类Path和PathContainer 作业 3-2 实现容器类 ...
- vue中自定义指令
//vue中自定义指令 //使用 Vue.directive(id, [definition]) 定义全局的指令 //参数1:指令的名称.注意,在定义的时候,指令的名称前面,不需要加 v-前缀; 但是 ...
- vue前端实战注意事项
1. vue前端实战注意事项 1.1. 预备 1.1.1. Eslint 这是个语法检查工具,我用webstorm作为开发的ide,这个语法检查还是太严格了,一个空格啥的都会报错,对新手来讲还是建议关 ...
- 更多企业选择MES系统?这一款功能竟如此强大
很多制造业企业采用MES系统对制造生产的所有组成部分如订单.加工.质量.物料管理等进行集成,以实现产品生产的全过程管理,满足生产控制的需求,最终实现车间制造管理的信息化. MES系统不仅可以帮助企业提 ...
- Java深入学习(1):多线程
多线程目的:在同一时刻有多条不同路径执行程序,提高程序运行效率 多线程应用:数据库连接池,多线程文件下载等 注意:在文件下载中使用多线程,无法提高速度 在一个进程中,一定会有主线程 从基础开始,多线程 ...
- SpringBoot 通过配置禁用swagger
转自:https://blog.csdn.net/weixin_37264997/article/details/82762050 一.序言 在生产环境下,我们需要关闭swagger配置,避免暴露接口 ...