CAN接口芯片MCP2515的波特率和滤波器设置问题

2023-10-31

配置波特率代码:
    MCP2515ByteWrite(CNF1, 3);
    MCP2515ByteWrite(CNF2, 0x80|PHSEG1_3TQ|PRSEG_1TQ);
    MCP2515ByteWrite(CNF3, PHSEG2_3TQ);
功能:波特率的设置非常灵活,通过设置CNF1、CNF2、CNF3寄存器实现。
其中:
a)CNF1中的bit5~0为分频数BRP,其对晶振频率FOSC进行分配得到TQ(时间份额)。
TQ=2*(BRP+1)/FOSC
当BRP=3,FOSC=8M,则TQ=2*(3+1)/8M=1us
b)CNF2的bit7取1,bit5~3(PHSEG1)+1为相位缓冲段PS1的TQ数,bit2~0(PRSEG)+1为传播段PRSEG的TQ数。
c)CNF3的bit2~0(PHSEG2)+1位相位缓冲段PS2的TQ数。

如为达到BRT=125kbps,位时间Tbit为波特率的倒数,Tbit=1/BRT=8us,上图4段加起来总数应等于8(当TQ=1us时)。

同步段固定为1;若PPRSEG取1;S1和PS2占大多数,分别为3。则采样点位置为(1+1+3)/8=62.5%,采样点位置应确保在60%~90%。

设置接收滤波器
a)滤波过程说明
接收到的帧数据先与RXB0的滤波器进行匹配,如果成功数据进行如RXB0,产生中断INT(L);如果匹配不成功再与RXB1的滤波器进行匹配,如果成功数据进行如RXB1,产生中断INT(L)。可查询CANSTAT或CANINTF判断数据来自于RXB0还是RXB1。
CANSTAT的bit3~1:110为RXB0;111位RXB1。
CANINTF:bit0为RXB0;bit1位RXB1。为了能产生中断,需使能设置CANINTE的bit1和bit0。
b)标准帧结构分析
设置滤波器首先要了解CAN数据帧(标准帧和扩展帧)的结构。下面只分析标准帧。
标准帧包含11位标识符,位于标准帧数据的第一个字节8bit和第二个字节高3位,对应芯片的TX寄存器为:TXB0SIDH(8位)+TXB0SIDL(高3位);对应RX寄存器为:RXB0SIDH(8位)+RXB0SIDL(3位)。(假设使用TXB0和RXB0)
c)滤波器设置
如果要对这11位都进行滤波器,步骤为:
aa、设置RXM0SIDH(8位)+RXM0SIDL(3位),分别为0xFF和0xE0。
bb、设置RXF0SIDH(8位)+RXF0SIDL(3位),分别为想要接收的标准帧标识符。
cc、设置RXF1SIDH(8位)+RXF1SIDL(3位),分别为想要接收的标准帧标识符。如果只接收一个标识符,RXF1和RXF0设置为一样的。
dd、写RXB0CTRL的bit6~5:11为接收所有帧(不滤波);01为只接收标准帧;10为直接收扩展帧;00为接收标准帧和扩展帧。
如果不需要对11位都进行滤波,将RXM0的相应位置写0,如0x00为对所有位都不滤波。
RXB0和RXB1分开设置:RXB0可设置RXF0和RXF1;RXB1可设置RXF2~5。
设置滤波器的代码参考:
MCP2515ByteWrite( RXM0SIDH, 0xFF );    // 1111 1111 滤波器0对11位都进行滤波
MCP2515ByteWrite( RXM0SIDL, 0xE0 );        // 111X XXXX
MCP2515ByteWrite( RXF0SIDH, 0xAA );// 1010 1010 标识符应为10101010101的标准帧
MCP2515ByteWrite( RXF0SIDL, 0xA0 );    // 101X XXXX
MCP2515ByteWrite( RXF1SIDH, 0xAA );     // 1010 1010 RXF1和RXF0相同
MCP2515ByteWrite( RXF1SIDL, 0xA0 );    // 101X XXXX
MCP2515ByteWrite( RXM1SIDH, 0xFF );    // 1111 1111 滤波器1对11位都进行滤波
MCP2515ByteWrite( RXM1SIDL, 0xE0 );         // 111X XXXX
    MCP2515ByteWrite( RXF2SIDH, 0xAB );    // 1010 1011 标识符应为10101011101的标准帧
    MCP2515ByteWrite( RXF2SIDL, 0xA0 );    // 101X XXXX 
MCP2515ByteWrite( RXB0CTRL, 0x20 );        // RXB0只接收标准帧
MCP2515ByteWrite( RXB1CTRL, 0x20 );        // RXB1只接收标准帧


转载自http://bbs.mydigit.cn/read.php?tid=1994140

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN接口芯片MCP2515的波特率和滤波器设置问题 的相关文章

随机推荐

  • TimeGAN学习记录

    一 学习TimeGAN主要参考的链接如下 1 知乎上的TimeGAN论文研读 2 csdn上的一篇博客 论文阅读 Time Series Generative Adversrial Networks TimeGAN 时间序列GAN 3 时间
  • 使用神经网络对黄金期货交割价格进行预测-4 MATLAB

    上一篇文章讲述了如何对预测的结果进行合理化修正 本文主要讲述的是对神经网络本身的学习算法进行优化 一般优化神经网络有三种模式 一种为优化神经网络的连接结构 一种为优化神经网络的学习算法 一种为既优化连接结构 又优化学习算法 由于笔者的知识水
  • JetBrains下载历史版本

    https www jetbrains com clion download other html 在上方的链接中将clion改为idea phpstrom webstrom等等 转载于 https www cnblogs com yang
  • WuThreat身份安全云-TVD每日漏洞情报-2023-10-08

    漏洞名称 Glibc ld so本地权限提升漏洞 漏洞级别 高危 漏洞编号 CVE 2023 4911 相关涉及 系统 ubuntu 22 04 glibc Up to excluding 2 35 0ubuntu3 4 漏洞状态 POC
  • java调用.so文件

    第一步 public class JavaToCTest private native void sayHello 声明本地方法 static System loadLibrary JavaToCTest 需要加载的so库文件的名称 在li
  • iptables的CONNMARK与MARK

    iptables的CONNMARK与MARK Posted on January 24 2012 iptables的CONNMARK与MARK是用于给数据连接和数据包打标记的两个target 一直没搞明白二者的区别 直到昨天花了不少时间解决
  • 【zookeeper】fsync-ing the write ahead log in took which will adversely effect operation latency

    1 概述 原文 zookeeper fsync ing the write ahead log in took which will adversely effect operation latency 在解决上一个问题的时候遇到这个问题的
  • windows应用商店或者其他微软应用打不开的修复办法

    最近突然发现微软自带的那个便笺打不开了 想在应用商店里面重装一下 又发现windows store也变成灰色的 并且有个小叹号 打不开了 右键这个store 设置里面重置也没用 最后在某乎上面看了个回答 照着试了试 发现可以了 这里把步骤记
  • Vue3 如何实现一个全局搜索框

    效果 点击搜索或者按下ctrl k键 页面就会出现搜索框 搜索框页面 SearchBar vue 搜索框的ts SearchBar ts 封装的搜索框hook useSearch ts 在app vue中出现搜索框 App vue 1 搜索
  • 使用 Go API 快速下载 excel 文件

    我们有几个 Golang API 可以为 csvfiles 提供服务 但在提供以编程方式生成的 excel 文件方面没有任何帮助 为了避免重新编写 我们可以借助此服务器开始 main go 这使我们能够服务于路由 和 excel downl
  • Linux Kafka 3.5 KRaft模式集群部署

    这里是weihubeats 觉得文章不错可以关注公众号小奏技术 文章首发 拒绝营销号 拒绝标题党 背景 kafka在KIP 500引入了KRaft替代Zookeeper来实现自我管理元数据 详细信息可以看原文链接 KIP 500 KRaft
  • 前端实习总结

    菜鸟自述 还是感叹一下时间的飞逝 大学一直在寻找 自己将来到底要干嘛 好在虽然学校老师教得不多 安排的项目到是挺多 做过不同类型的项目 做过pc端网站 pe端网站 其实也是 我只是普通人 无法在一开始就明确自己要做什么 还不是在一个个项目里
  • 人生就是不断地战斗。 --王者荣耀之宫本武藏

    阿里巴巴Dubbo Zookeeper注册中心 阿里巴巴MyCat分库分表 JVM调优 垃圾收集器与内存分配策略 串行 并行收集器带来的作用 Redis缓存技术 session统一管理案例实现 引入接口联调过程 Tomcat运行机制及框架
  • 端口转发及穿透内网

    文章目录 portmap nc 正向连接 内网主机出网 反向连接 内网主机不出网 netsh端口转发 端口转发 netsh端口转发监听meterpreter frp 例子 参考 portmap https github com Brucet
  • Linux中日志管理和常见故障

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 目录 一 关于日志及管理 1 日志的功能
  • OD华为机试 25

    按索引范围翻转文章片段 描述 输入一个英文文章片段 翻转指定区域的单词顺序 标点符号和普通字母一样处理 例如输入字符串 I am a developer 0 3 则输出 developer a am I 输入描述 使用换行隔开3个参数 第一
  • @Cacheable使用详解

    1 功能说明 Cacheable 注解在方法上 表示该方法的返回结果是可以缓存的 也就是说 该方法的返回结果会放在缓存中 以便于以后使用相同的参数调用该方法时 会返回缓存中的值 而不会实际执行该方法 注意 这里强调了一点 参数相同 这一点应
  • QT开发之QLineEdit

    1 设置输入限制 QLineEdit lineedit new QLineEdit this QRegExp rx a zA Z0 9 0 设置为只能输入数字和英文 QRegExpValidator pRevalidotor new QRe
  • vue使用echarts中tooltip自定义显示——使用值params参数详解

    tooltip trigger item formatter a br b c d formatter function params 在此处直接用 formatter 属性 console log params 打印数据 debugger
  • CAN接口芯片MCP2515的波特率和滤波器设置问题

    配置波特率代码 MCP2515ByteWrite CNF1 3 MCP2515ByteWrite CNF2 0x80 PHSEG1 3TQ PRSEG 1TQ MCP2515ByteWrite CNF3 PHSEG2 3TQ 功能 波特率的