NXP的MSCAN模块波特率设置
NXP的MSCAN模块波特率设置
NXP的MSCAN模块支持报文滤波,整个成功接收传输过程是依据message的identifier(ID),ID被设备成功匹配将会产生一个中断请求。
MSCAN节点之间传输的消息帧可以分为四种类型:数据帧,远程帧,错误帧和过载帧,这里主要讨论数据帧的收发。数据帧的传输
有两种格式,分别是仲裁场含有11位ID的标准帧和29位ID的扩展帧;数据帧传输的最大用户数据为8bytes,如下图
MSCAN位率的设置(以NXP FRDM-KE16Z为参考):
MSCAN模块可以根据MSCAN_CANCTL1寄存器的bit6来设置时钟源(f_CANCLK)是使用总线时钟还是外部晶振时钟(8M),如下图,然后配置MSCAN_CANBTR0_BRP
来选择位率预分频。时间份额(Tq)是有MSCAN控制的原子单元,其值计算根据时钟和预分频值得到,即Tq = f_CANCLK / (prescaler value).
MSCAN位时间的计算是通过配置总线定时寄存器MSCAN_CANBTR0和MSCAN_CANBTR1.根据CAN specification,MSCAN的位时间划分为三部分:
SYN_SEG(同步段),Time segment1(相位缓冲段1),Time segment2(相位缓冲段2),由下图可知这里的相位缓冲段1包含CAN SPEC.里的传播段
和相位缓冲段1,一个位时间的大小就由每一段含有Tq的数量决定,则一个位时间的计算为:bit time = (SYNC_SEG + Time Segment1 +
Time Segment2) * (prescaler value)/f_CANCLK.
其中SYNC_SEG是固定的一个时间份额,信号边沿的触发应该发生在此阶段;根据CAN标准Time segment1包含PROP_SEG(Propagation Time Segment)
和PHASE_SEG1(Phase Buffer Segment1),Time segment1(MSCAN_CANBTR1_TSEG1)设置范围的大小为4到16个时间份额(Tq);Time segment2即
相位缓冲段2 PHASE_SEG2(Phase Buffer Segment2),该段MSCAN_CANBTR1_TSEG2设置的范围为2到8个时间份额。所以位率的计算由位时间得到:
bit rate = 1/bit time = f_CANCLK/((prescaler value)*(1+Time Segment1+Time Segment2)),由此可知通过配置合适的MSCAN_CANCTL1_CLKSRC,
MSCAN_CANBTR0_BRP和MSCAN_CANBTR1_TSEG1,MSCAN_CANBTR1_TSEG2来得到期望的位率。
Synchronization Jump Width(SJW)同步跳边沿定义了一个位里时间份额变化的最大量,由于每个单元都操作着自己的时钟,微小的时钟误差是
会不断累积,所以通过增加或减小相位缓冲段的大小来重新同步CAN总线上的数据传输,来达到容错的目的,SJW设置的越大,容错能力就会增加,
但相应的传输速率会下降,根据Bosch CAN2.0A/B手册,SJW可调整的范围为1到4个时间份额。
Example:假设设置位率(波特率)Baudrate = 1Mbps, Osc = 8M, 根据计算公式有 1 = 8 / (BRP + 1)(1+MSCAN_CANBTR1_TSEG1+MSCAN_CANBTR1_TSEG2)
为了保证相位缓冲段1和相位缓冲段2的参考值为整数,这里的BRP为0,1,3,7;这里选择BRP的值为0,可以得到一个位时间里有8个最小时间份额;
参考手册相位缓冲段1,相位缓冲段2,同步跳变宽度值的分配,结合上述公式可以分别计算Baudrate = 500kbps,250kbps,125kbps的位时间参数值
如下表:
priDiv sJumpwidth timeSeg1 timeSeg2 samp
1M 0 0 3 2 0
500K 1 0 3 2 0
250K 3 0 3 2 0
3 0 4 1 0
1 0 10 3 0
1 0 9 4 0
1 0 8 5 0
1 0 7 6 0
125K 7 0 3 2 0
7 0 4 1 0
3 0 10 3 0
3 0 9 4 0
3 0 8 5 0
3 0 7 6 0
注:这里的预分频值prescaler value = BRP + 1,BRP为寄存器MSCAN_CANBTR0的bit0~bit5,Time Segment1=1+MSCAN_CANBTR1_TSEG1,
Time Segment2 = 1+MSCAN_CANBTR1_TSEG2;
Bosch CAN2.0A/B遵从的位时间段参数设置参考表:
Time segment 1 TSEG1 Time segment 2 TSEG2 Synchronization jump width SJW
5..10 4..9 2 1 1..2 0..1
4..11 3..10 3 2 1..3 0..2
5..12 4..11 4 3 1..4 0..3
6..13 5..12 5 4 1..4 0..3
7..14 6..13 6 5 1..4 0..3
8..15 7..14 7 6 1..4 0..3
9..16 8..15 8 7 1..4 0..3
NXP的MSCAN模块波特率设置相关推荐
- NXP JN5169 UART 波特率设置
NXP JN5169 UART 波特率设置 一.系统时钟介绍 1.高速(32MHz)系统时钟 1.32MHz 晶体振荡器 2.高速RC振荡器 2.低速(32kHz)系统时钟 1.32 kHz RC 振 ...
- 蓝牙HC05模块探究-设置AT指令
蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用.当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发 ...
- 如何解决 HC-06 波特率设置为1382400
本文禁止转载! 有个项目要蓝牙传输数据 看了蓝牙转串口模块,就使用了HC-06模块. 当时为了测试在不丢包的情况下最大的传输速率,设置了串口的波特率为921600 然后想继续提高传输速率,就脑残+手残 ...
- CDMA模块上网设置的过程
CDMA模块上网设置的过程 一) AT指令设置部分 (1) AT+CSQ 检查信号 若返回10-31,99之间的信号数字则继续,如果信号是99,99,则应该考虑不停的键入A/命令,不停的让模块去搜寻 ...
- 关于stm32f407wifi模块的设置_西门子S7300PLC模拟量模块使用方法及编程方法
今天给大伙分享的是关于西门子S7-300PLC模拟量方面的实例,包含了以下几个方面的要点: 1.对变送器进行取值,并进行控制 2.对模数功能块 FC105 进行调用 3.对 AI 模块进行设置 4.对 ...
- python3 selenium模块Chrome设置代理ip的实现
python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chrome ...
- ZYNQ开发系列——双串口打印以及串口波特率设置
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--双串口打印以及串口波特率设置 前言 双串口打印 串口波特率的修改 前言 上一篇,我们遗留了这两个问题: 1. 如果 ...
- Simulink模块字体设置
Simulink模块字体设置: 选择目标模块->右击->右键菜单选Format-Font Style for Selection
- c 语言 如何设置串口波特率,串口自动波特率设置程序
来源:网上转载 作者: 在另外一套程序中并没有ISP功能,要实现程序的更新功能,要了解芯片的IAP调用,这一点在芯片的资料上也有介绍,然后就是接收上位机的程序,一般是通过串口,下面介绍一下P89 ...
最新文章
- 编写线程安全的Java缓存读写机制 (原创)
- gunicorn多进程不死_WEB,gunicorn - 无论是多进程、多线程、协程模式,同一个浏览器窗口多个标签页访问同一个url,看上去不会并发的问题...
- 牛客网(剑指offer) 第十九题 顺时针打印矩阵
- Leetcode-169 Majority Element
- busybox怎么安装
- Java-ArrayList使用技巧---从第一个List中去除所有第二个List中与之重复的元素
- jsp网页上实现计算三角形面积小程序
- Mysql 存储过程、存储函数 与 递归查询
- python网页抓取与按键精灵原理一样吗_Python网络爬虫学习笔记之 三种网页抓取方法...
- Python使用Reportlab处理PDF数据 - 其他图形
- 阿里CEO张勇:打破各企业边界 联手对抗黑灰产
- springcloud入门——config分布式配置中心
- python 网络编程 day02
- 差距几何 Vista与XP系统性能对比测试(下)
- 企业实施PDM能解决这些问题
- 网易云音乐唱片机效果
- IT从业者创业公司生存指南:创业初期 ---- 指点江山,激扬文字,粪土当年万户侯
- 【Visual C 】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术 Direct3D渲染五步曲
- matlab实现5自由度雄克机器人的运动仿真
- 浙江省计算机c语言考试,浙江省计算机二级c语言上机考试真题(三)程序编写
热门文章
- NLP接下来黄金十年-----周明等谈值得关注的NLP技术
- 有哪些游戏直播录屏工具?最值得推荐的5个游戏录制软件
- Zookeeper中NullPointerException
- Python在Jupyter上使用HMM进行中文分词,将新闻文本分词后提取其中的高频词
- 行业门槛高、从业年限高、学历要求高,大健康创新企业面临“三高三低”人才困境...
- 求某一范围内的水仙花数 python
- Idea的Maven项目:子模块无法使用父模块中已导入的依赖问题
- 2020年最好用的6款内容收集整理利器,打造个人/团队知识库
- git fork代码保持与原代码同步
- datetime+dateutil_生成过去n个月的yyyymm格式列表