首页 > 编程知识 正文

汽车can总线波特率是多少(can 自动波特率 linux,CAN波特率的简单计算)

时间:2023-05-06 09:28:06 阅读:121805 作者:4100

其实CAN的波特率计算很简单,但我们无意中把简单的问题复杂化了。

假设不首先考虑BTR0的SJW位和BTR1的SAM位。 BTR0和BTR1是两个分频系数寄存器; 它们的乘积是扩展的分频系数。 也就是说:

(BtR0BtR1=f_base/Fbps(1) () ) ) ) ) ) ) 652

其中:

内部频率基准源F_BASE=Fclk/2,即外部晶体振动频率Fclk的2分频。 在所有应用中,使用外部晶体振动作为基准源时,请注意经过2分频整形。

)式中,普通机翼为16M时,F_BASE=K

正常机翼为12M时,F_BASE=6000K

Fbps是我们想要的CAN总线频率。 单位是k。

式中,设BTR0=m、BTR1=n、外部石英振动频率16M,则如下.

mn=/Fbps(2) )。

这样,当Fbps取期望的值时,得到m * n的组合值。 如果选择了n,则m的值也是唯一的。

n值CAN标准规定为8~25。 (即BTR1的值)基本原则是,Fbps的值越高,n (通过设定BTR1 )的值越大。 其理由不难理解。

在典型的APP应用中,n=10,即

同步段相位缓冲器段1相位缓冲器段2=1 5 4

公式(2)表示

m=800/Fbps

的最大设定值为64,最大分周系数m*n=64x25=。 因此,标准算法通常以16M石英晶体振动为例。 其实,有了公式(1),任何石英振动值(6M~24M )都很容易计算出来。

确定SAM :低频时,SAM=1,即采样3次。 高频为100K以上时,SAM=0,即采样一次。

SJA再同步跳宽选择:与数字锁相环技术有关。 如果选择较大的n值,则可以选择较大的SJA。 也就是说,可以一次修改多个脉冲共享Tscl。 如果n的值较小或频率较低,请选择SJA=1。 也就是说,BTR0.7和BTR0.6都设为0。

问题: 1、中、BTR1中的相位缓冲级1为什么设计了比相位缓冲级2大8个的Tscl? 怪不得应该是一样的。

2、下面例子的BTR0和BTR1的设置有什么问题吗?

BTR0=0x40,BTR1=0x1C。

参数说明:CAN_ByteRate波特率(Kbit/s ) BTR0BTR1*

:*050XBFH0XFFH*

; *1100X67H0X2FH*

; *2200X53H0X2FH*

; *3400X87H0XFFH*

; *4500X47H0X2FH*

; *5800X83H0XFFH*

; *61000X43H0X2FH*

; *71250X03H0X1CH*

; *82000X81H0XFAH*

; *92500X01H0X1CH*

; *104000X80H0XFAH*

; *115000X00H0X1CH*

; *126660X80H0XB6H*

; *138000X00H0X16H*

; *1410000X00H0X14H*

用晶体算出的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。