新闻  |   论坛  |   博客  |   在线研讨会
CAN波特率的设置(转载)
笨笨的世界 | 2013-12-24 20:16:26    阅读:4803   发布文章

CAN(Controller Area Network)总线最早由德国 BOSCH公司提出,主要用于汽车内部测量与控制中心之间的数据通信。由于其良好的性能,在世界范围内广泛应用于其他领域当中,如工业自动化、汽车电子、楼宇建筑、电梯网络、电力通讯和安防消防等诸多领域,并取逐渐成为这些行业的主要通讯手段。 Can控制器器只需要进行少量的设置就可以进行通信,其中较难设置的部分就是通信波特率的计算。CAN总线能够在一定的范围内容忍总线上CAN节点的通信波特率的偏差,这种机能使得CAN总线有很强的容错性,同时也降低了对每个节点的振荡器精度。实际上,CAN总线的波特率是一个范围。假设定义的波特率是250KB/S,但是实际上根据对寄存器的设置,实际的波特率可能为200~300KB/S(具体值取决于寄存器的设置)。
CAN波特率设置时需要计算几个参数,这些参数共同决定波特率大小,由于计算比较复杂,希望有一个简易步骤,本人经过研究,找到一个简易办法,现贴出来分享,不对的地方请留言指正。需要说明的是,本人使用的can控制器是AT89C51CC03单片机中的can

首先,确定一下各项参数的取值范围:

 

参数              范围      编程值   说明
BRP              [1..64]   0-63    定义时间量子(时间份额)的长度tq
Sync_Seg       1 tq                固定长度,总线输入与系统时钟同步
Prog_Seg      [1..8]tq   0-7     补偿物理延时时间
Phase_Seg1  [1..8]tq   0-7     可通过同步暂时延长
Phase_Seg2  [1..8]tq   0-7     可通过同步暂时缩短
TSJW           [1..4]tq   0-3     不能比任何一相位缓冲段长

 

以上是参数的取值范围,编程值是实际往寄存器里写的值,为实际取值减1。下面说一下步骤:

 

1、首先计算CAN时钟和波特率的比值;

2、根据比值确定预分频器的分频值BRP,计算时间量子的数目,这个数值范围是8-25;

3、将时间量子数减1(去掉Sync_Seg)后在Prog_Seg Phase_Seg1 Phase_Seg2三个参数中分配;

4、Prog_Seg和整个线路的时延有关,一般不太好确定,可以按下面的原则进行分配:

    Prog_Seg<=Phase_Seg1<=Phase_Seg2 ;

    Phase_Seg1=Phase_Seg2 或者 Phase_Seg1+1=Phase_Seg2; 

5、SJW取Phase_Seg1和4中小的那个。 

估计上面叙说不太好理解,下面举例说明:

 假定晶振是12M,CAN时钟为6M(不同单面机,CAN时钟和晶振的关系不一样,BRP的取值范围不同单单片机也不一定相同,参看单片机说明)

1、500K波特率

FCAN/CAN baudrate = 6 MHz/500 kHz = 12,在8-25范围,所以BRP=1,TQ数目=12/1=12

Prog_Seg Phase_Seg1 Phase_Seg2分别等于3、4、4

寄存器编程值为(上述值减1):

BRP=0,SJW=3,PRS=2,PHS1=3,PHS2=3

 

2、100K波特率

FCAN/CAN baudrate = 6 MHz/100 kHz = 60,取BRP=6,TQ数目=60/6=10

Prog_Seg Phase_Seg1 Phase_Seg2分别等于2、3、4

寄存器编程值为(上述值减1):

BRP=5,SJW=2,PRS=1,PHS1=2,PHS2=2


 

3、10K波特率

FCAN/CAN baudrate = 6 MHz/100 kHz = 600,取BRP=60,TQ数目=600/60=10

Prog_Seg Phase_Seg1 Phase_Seg2分别等于2、3、4

寄存器编程值为(上述值减1):

BRP=59,SJW=2,PRS=1,PHS1=2,PHS2=2

 

4、5K波特率


 

FCAN/CAN baudrate = 6 MHz/5 kHz = 1200,取BRP=60,TQ数目=1200/60=20

Prog_Seg Phase_Seg1 Phase_Seg2分别等于6、6、7

寄存器编程值为(上述值减1):

BRP=59,SJW=3,PRS=5,PHS1=5,PHS2=6

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
记录我的成长。。。
最近文章
芯片的信号输入管脚
2018-07-10 16:07:06
ICD3驱动更新
2018-02-23 14:30:36
串口的数据接收问题
2016-11-14 14:24:54
推荐文章
最近访客