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

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值