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. VC控件 TreeCtrl 与 ListCtrl 演示(zz)
  2. MassTransit_契约的创建
  3. 【Java中级】(三)IO
  4. Qt工作笔记-QMap查找时要注意的问题(使用contains)
  5. CSS3 3D位移和旋转
  6. ansible 第三次作业
  7. js+html空间数据编码问题--以姓名为例(代码设涉及文件读取,文本数字提取,特别是文本x,y坐标的提取)
  8. ReportMachine通过嵌套表达式计算某个值。
  9. 证券市场的法律法规体系
  10. 判断分数是否为无限循环小数
  11. vue项目屏幕自适应_vue项目自适应屏幕和浏览器
  12. 系统架构师(十)设计模式
  13. 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
  14. vim ctrl + s 终端假死?
  15. ctf从零到入门0x04:(转载)ctf中最全的(脑洞大开的加密方法)
  16. 机器学习:朴素贝叶斯模型算法原理(含实战案例)
  17. 解决win10环境下安装ArcGIS提示需要Microsoft.NET Framework 3.5sp1或等效环境问题
  18. java安装出现向导中断,在Macromedia Dreamweaver 8 完整安装之前向导已中断的解决办法...
  19. C++ signed 与 unsigned
  20. TKO 6-1 DP入门之1058(寻找第n个因数只有2、3、5、7的数字)

热门文章

  1. Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
  2. TMS320c6713的Flash引导装载系统设计
  3. python输入年月日输出_python下输出指定年月日的方法之一
  4. mingw c语言编译器集合,MinGW-GNU工具集合-MinGW下载 v5.1.6官方版-完美下载
  5. 计算机网络体系结构与数据通信(补充):ip地址、域名和url
  6. 分布式和集中式版本控制的区别
  7. c语言如何判断最小公倍数,c语言如何求最大公约数和最小公倍数?
  8. Python+Selenium 自动化测试 2. Webdriver API介绍
  9. MATLAB绘图_1绘制衰减震荡曲线
  10. mysql学生成绩视图_MySql学习12---视图