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模块波特率设置相关推荐

  1. NXP JN5169 UART 波特率设置

    NXP JN5169 UART 波特率设置 一.系统时钟介绍 1.高速(32MHz)系统时钟 1.32MHz 晶体振荡器 2.高速RC振荡器 2.低速(32kHz)系统时钟 1.32 kHz RC 振 ...

  2. 蓝牙HC05模块探究-设置AT指令

    蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用.当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发 ...

  3. 如何解决 HC-06 波特率设置为1382400

    本文禁止转载! 有个项目要蓝牙传输数据 看了蓝牙转串口模块,就使用了HC-06模块. 当时为了测试在不丢包的情况下最大的传输速率,设置了串口的波特率为921600 然后想继续提高传输速率,就脑残+手残 ...

  4. CDMA模块上网设置的过程

    CDMA模块上网设置的过程 一) AT指令设置部分 (1) AT+CSQ  检查信号 若返回10-31,99之间的信号数字则继续,如果信号是99,99,则应该考虑不停的键入A/命令,不停的让模块去搜寻 ...

  5. 关于stm32f407wifi模块的设置_西门子S7300PLC模拟量模块使用方法及编程方法

    今天给大伙分享的是关于西门子S7-300PLC模拟量方面的实例,包含了以下几个方面的要点: 1.对变送器进行取值,并进行控制 2.对模数功能块 FC105 进行调用 3.对 AI 模块进行设置 4.对 ...

  6. python3 selenium模块Chrome设置代理ip的实现

    python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chrome ...

  7. ZYNQ开发系列——双串口打印以及串口波特率设置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--双串口打印以及串口波特率设置 前言 双串口打印 串口波特率的修改 前言 上一篇,我们遗留了这两个问题: 1. 如果 ...

  8. Simulink模块字体设置

    Simulink模块字体设置: 选择目标模块->右击->右键菜单选Format-Font Style for Selection

  9. c 语言 如何设置串口波特率,串口自动波特率设置程序

    来源:网上转载    作者: 在另外一套程序中并没有ISP功能,要实现程序的更新功能,要了解芯片的IAP调用,这一点在芯片的资料上也有介绍,然后就是接收上位机的程序,一般是通过串口,下面介绍一下P89 ...

最新文章

  1. 编写线程安全的Java缓存读写机制 (原创)
  2. gunicorn多进程不死_WEB,gunicorn - 无论是多进程、多线程、协程模式,同一个浏览器窗口多个标签页访问同一个url,看上去不会并发的问题...
  3. 牛客网(剑指offer) 第十九题 顺时针打印矩阵
  4. Leetcode-169 Majority Element
  5. busybox怎么安装
  6. Java-ArrayList使用技巧---从第一个List中去除所有第二个List中与之重复的元素
  7. jsp网页上实现计算三角形面积小程序
  8. Mysql 存储过程、存储函数 与 递归查询
  9. python网页抓取与按键精灵原理一样吗_Python网络爬虫学习笔记之 三种网页抓取方法...
  10. Python使用Reportlab处理PDF数据 - 其他图形
  11. 阿里CEO张勇:打破各企业边界 联手对抗黑灰产
  12. springcloud入门——config分布式配置中心
  13. python 网络编程 day02
  14. 差距几何 Vista与XP系统性能对比测试(下)
  15. 企业实施PDM能解决这些问题
  16. 网易云音乐唱片机效果
  17. IT从业者创业公司生存指南:创业初期 ---- 指点江山,激扬文字,粪土当年万户侯
  18. 【Visual C 】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术 Direct3D渲染五步曲
  19. matlab实现5自由度雄克机器人的运动仿真
  20. 浙江省计算机c语言考试,浙江省计算机二级c语言上机考试真题(三)程序编写

热门文章

  1. NLP接下来黄金十年-----周明等谈值得关注的NLP技术
  2. 有哪些游戏直播录屏工具?最值得推荐的5个游戏录制软件
  3. Zookeeper中NullPointerException
  4. Python在Jupyter上使用HMM进行中文分词,将新闻文本分词后提取其中的高频词
  5. 行业门槛高、从业年限高、学历要求高,大健康创新企业面临“三高三低”人才困境...
  6. 求某一范围内的水仙花数 python
  7. Idea的Maven项目:子模块无法使用父模块中已导入的依赖问题
  8. 2020年最好用的6款内容收集整理利器,打造个人/团队知识库
  9. git fork代码保持与原代码同步
  10. datetime+dateutil_生成过去n个月的yyyymm格式列表