欢迎光临散文网 会员登陆 & 注册

can部分 6 stm32的can波特率配置

2023-02-14 07:38 作者:GXTon_阿通  | 我要投稿

 

can的波特率计算:

stm32的配置参数

其中

CAN_SJW_1tq是同步段,习惯上默认配置成1.  可以调节的节拍数. (范围1-4)

CAN_BS2_6tq是相位缓冲段2. (范围1-8)

CAN_BS1_7tq是传播段+相位缓冲段1. (范围1-16)

3,这里是预分频值. (范围1-1024)

函数原型:




先按照波特率定义中的各个参数,进行计算:

计算出各个变量.

然后再选出最优的变量组合.

然后再用选好的变量,推算出stm32的寄存器赋值.

第一个参数:

Q,一个位切分成的份数.(范围 3-25 越大越好)

BRP是用于将APB的时钟分频到CAN时钟.

BRP=APB/(Q*Baudrate) ,

根据上面公式

APB,已知=42M

Baudrate,已知=1000000Kbps=1M

那么,Q和BRP就可以计算出来.

(这里会有很多组满足条件的,然后Q范围限制在3-25,且越大越好,所以选出最优的一组)

(最终定下 Q=14 )

(最终定下 BRP=3)

举例: 42M/(14*3)=1000Kbps=1M的波特率


Q的参数就是越大越好.

Q就是一个bit,一个位所被分成的节拍数.

Q是总的节拍数,要分给各个段.

Q=Tss+Tps+Tpbs1+Tpbs2=14

那么1M波特率就是1us传输1位数据.

Q等于14,就是把1us分成了14份,每份约0.07142us  (次值就是时间节拍Tq).

然后,下面计算Tss,Tps,Tpbs1,Tpbs2各占多少份


第二个参数:

Tss

按照习惯,通常占一拍.

即Tss=1


第三个参数:

Tps

其物理意义是传播段时间长度.

信号在总线上来回传输所消耗的时间.

设一次单向传输的延时为包括:

1.发送节点从生产信号到把信号发送到总线上,T1.

2.信号在总线上传输的时间T2.

3.接收节点从总线获取信号的时间T3.

因为是来回传输,所以要乘以2.

Tps>=2*(T1+T2+T3)


举例:

Tps是由设备性能和总线长度决定的.通常总线延时可按5.5ns/米计.单个节点收

发延迟可按75ns计.假如有线长12m,则Tps=2*(12*5.5+75)=141ns.根据上一步的Q值

(想要的波特率和时钟分频得到),计算出节拍时间Tq 这个已知约0.07142us=71.42ns 在上面计算过.

Tps=141/71.42=1.974约为2

即Tps=2


第四个参数,第五个参数

Tpbs1,Tpbs2

根据Q值-1-Tps(Tss一般默认为1),就得到Tpbs1和Tpbs2两数之和,

Q-Tss-Tps=Tpbs1+Tpbs2

由于上面计算

Q已知=14

Tss已知=1

Tps已知=2

那么Tpbs1和Tpbs2就能计算出来.

Tpbs1+Tpbs2=11

然后除以2,就得到了分别的值.如果是奇数则Tpbs2比Tpbs1多1个.

Tpbs2=6

Tpbs1=5


至此,上面的所有参数都得到了.

然后,开始根据上面的参数,计算stm32的参数.

根据表格:


1,stm32单片机中的第一个参数:即:CAN_SJW_1tq

CAN_SJW_1tq 就是1


2,stm32单片机中的第二个参数:即:CAN_BS2_6tq=6

Tpbs2是stm32单片机中的Ts2;

stm32_Ts2=Tpbs2=6


3,stm32单片机中的第三个参数:即:CAN_BS1_7tq=7

Tps和Tpbs1相加构成stm32单片机中的Ts1;

stm32_Ts1=Tps+Tpbs1=2+5=7


4,stm32单片机中的第四个参数:3

BRP=3


总结:

其实,CAN的波特率实际是多个参数决定的.

这样更加确定了采样点的位置.

还可以通过一些软件进行配置波特率


can部分 6 stm32的can波特率配置的评论 (共 条)

分享到微博请遵守国家法律