波特率与频率的换算公式?_CAN总线波特率计算

本文介绍了如何在PCAN VIEW中自定义CAN总线波特率,包括波特率计算方法和CAN协议中位时间的定义。通过理解同步段、传播段、相位缓冲段等概念,以及BTR0和BTR1寄存器的含义,可以精确配置波特率以优化通信质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用PEAK硬件自带的PCAN VIEW连接时,一般都是使用软件自带的波特率设置。但是其实它还可以自定义波特率。之所以需要自定义波特率,是因为即使波特率的数值一样,如果决定波特率的一些其他参数不同,也会影响通信的质量。现在我们就通过PCAN VIEW的自定义波特率来简单地讲下波特率的计算方法。

PCAN VIEW自定义波特率的方法

1.在连接的界面选择向右的箭头,选择Manage Bit Rate。

8d47c7e57fb864cdac96897fa503788c.png

2.只要在这个界面点击左下角的Add就可以添加自定义的波特率了。

60d6698ddc04df914e7b1e58b7fcd275.png

CAN的波特率可以用以下四个变量可以算出:

A.最小时间段 Tscl;

B.时间段1 TSEG1;

C.时间段2 TSEG2;

D.同步跳转宽度 SJW。

其中最小时间段由CAN控制器的时钟频率以及分频决定。

PCAN VIEW提供的变量计算波特率的公式如下:

f70b7c845fd1ae0b2b5aa7e5deefba8d.png

以PCAN VIEW预定义的1MBit/s波特率为例,计算方法为24MHz÷3÷(5+2+1)=1MBit/s。

CAN协议关于位时间的定义

上个例子,如果把TSEG1和TSEG2改成4和3,波特率的数值是不变的,但是可以看出,采样点的数值变成了62.5%。所以如果想要自定义波特率,我们也需要知道这些变量的含义,在CAN协议对位时间的定义中可以找到它们。

37e595b46fc15d15bef5fd05461585fc.png

1个位时间包含4个功能段,分别是同步段,传播段,相位缓冲段1,相位缓冲段2。为了便于编程,有些时候会把传播段和相位缓冲段1合并成一个时间段。位时间的数值相当于1/波特率,就是一位在CAN总线上传递的时间。这一位的值(1或0)由采样点的电平决定。

00c7b7be5f014bad5937803a5bb672e2.png

b29e2190f9f643e01c0b0bfc5c6f6ae2.png

Prescaler:分频很容易理解,控制器的时钟频率进行分频后会得到CAN的时钟,CAN时钟的一个时间周期就是之前提到的最小时间段tscl,也称作时间份额,代表的是CAN控制器工作时的最小时间单位。

SYNC_SEG:同步段用于同步总线上各个节点,固定长度为1个tscl。其中应该有一个跳变沿。

PROP_SEG:传播段用于补偿信号通过网络和节点传播的物理延迟,长度应能保证2倍的信号在总线的延迟,长度为1到8个tscl。

PHASE_SEG:相位缓冲段用于补偿跳变沿的相位误差,相位缓冲段1的结尾是采样点位置。相位缓冲段1和2长度均为1到8个tscl。

TSEG1 = PROP_SEG + PHASE_SEG1。

TSEG2 = PHASE_SEG2。

位时间 = SYNC_SEG + TSEG1 + TSEG2,长度为8到25个tscl。

采样点 = (SYNC_SEG + TSEG1)÷位时间。

SJW:同步跳转宽度定义了在重新同步时可以缩短或延长的最大时钟周期数。因为重新同步时,相位缓冲段1会延长或是相位缓冲段2缩短。同步跳转宽度取值为1到4,同时必须不大于PHASE_SEG1的时间份额数。

BTR0和BTR1的含义

CAN控制器中的总线定时寄存器(BTR)用于储存上述数据,同时在PCAN VIEW中也可以直接输入BTR数值给出波特率。BTR0和BTR1各8位,代表含义如下。

e5cdbc9d1d3b4e81f988e790621a90e3.png

BTR0

c19419f38b67bdfcd1aba566bdbb75be.png

tscl = 2 * tCLK * (32 * BRP.5 + 16 * BRP.4 + 8 * BRP.3 + 4 * BRP.2 + 2 * BRP.1 + BRP.0 + 1)

tSJW = tscl * (2 * SJW.1 + SJW.0 + 1)

BTR1

57b33945abb88ba45f45e79eb377ebf7.png

tSYNCSEG = 1 * tscl

tTSEG1 = tscl * (8 * TSEG1.3 + 4 * TSEG1.2 + 2 * TSEG1.1 + TSEG1.0 + 1)

tTSEG2 = tscl ´ (4 * TSEG2.2 + 2 * TSEG2.1 + TSEG2.0 + 1)

SAM=1表示采样三次,SAM=0表示采样一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值