在前面三篇文章:
我们已经解决了一个控制器的多个信号通过怎样的形式传递给另一个控制器,即通过CAN数据帧,包含报文ID,数据长度和数据等信息,并在物理层面以怎样的电压形式进行传递。
但关于CAN通讯的传输速率或波特率,即CAN报文数据以多快的速度在控制器间进行传递,我们还不得而知,对此本文将进行介绍。
1 时间相关量
我们知道一帧数据(即一个完整的数据帧)由很多位组成,那么所谓的通信速率是指一位数据传输所需要的时间。为了弄清楚传输一位数据需要多长时间,需要了解几个时间相关量:
1)晶振时钟周期,由单片机振荡器的晶振频率决定的,是指振荡器每振荡一次产生一个脉冲所消耗的时间长度,也是整个系统中最小的时间单位。比如某单片机的晶体振荡器频率为40MHz,那我们就说这个单片机系统的时钟周期是1/(40MHz),约为25纳秒(ns)。
2)CAN时钟周期,由系统时钟分频而来的一个时间长度值,即类似于机器周期与晶振时钟周期的关系,按照特定的公式计算:CAN时钟周期 =2 x 晶振时钟周期 x BRP,其中,BRP叫做波特率分频值。
3)时间量子Tq(Time Quantum),把一个CAN时钟周期称为一个时间份额或时间量子Tq,Tq是构成CAN报文中一位(bit)数据的最小时间单位。
4)CAN位时间,由这三个时间相关量,就知道如何根据微控制器的晶振频率分频得到Tq,而CAN报文中每一位数据都由由同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)四个段组成,每个段由若干个时间量子Tq组成,也就是说CAN报文中一位数据的传输需要耗费若干个Tq,把一位数据的传输时间称为CAN位时间,如下所示:
再了解下这四个段的作用和所需的Tq数量,如下表:
2 CAN通讯速率
CAN通讯作为异步通信方式,收发双方节点是按照约定相同的波特率(位传输速率)进行通讯。比如将高速CAN的波特率设置为500Kbps,意思就是1s时间能传输500,000位的数据,即传输1位数据需要2000ns。同理,波特率设为250Kbps,那么传输1位数据需要4000ns。
这样就将波特率和上面的时间相关量联系起来了,它们的逻辑是:一方面先定义好目标的CAN通讯速率,即传输1位数据的速率应该是多少;另一方面,根据这几个时间相关量的关系来确定BRP和Tq的数量。
3 实例
例:微控制器晶振时钟周期频率为40MHz,CAN位时间为8个Tq,采样点为75%,要设置CAN通讯的波特率为500Kbps,如何实现?
首先,获取晶振时钟周期。由微控制器的晶振时钟周期频率为40MHz可得,晶振时钟周期=1/40MHz=25ns;
然后,计算CAN时钟周期,即时间量子Tq。因为目标的波特率要设置为500Kbps,换算时间1/500 Kbps =2000ns,即CAN位时间为2000ns,等于8个Tq,那么Tq=250ns。而根据计算公式:Tq=CAN时钟周期 =2 x 晶振时钟周期 x BRP,所以BRP为5时满足。
最后,确定同步段、传播时间段、相位缓冲段1和相位缓冲段2四个段对应的Tq数。同步段的Tq数是固定的1Tq,传播时间段的Tq数设为2Tq,相位缓冲段2的Tq数是根据采样率来计算,定义采样点在相位缓冲段1和相位缓冲段2之间,采样率为前三段的Tq数与四段的总Tq数比值的百分比,如下图,第1个采样率 =(7Tq/10Tq) x 100% = 70%,第2个采样率为60%。
而本例的采样率为75%,那么相位缓冲段2有2Tq,而CAN位时间是8Tq,所以最后分配3Tq给相位缓冲段1。这样就确定了同步段(1Tq)、传播时间段(2Tq)、相位缓冲段1(3Tq)和相位缓冲段2(2Tq)的Tq数。
4 小结
到此上文就简单介绍波特率相关的内容,包括概念,原理和实现,应该建立起了一个基本的认识,但其中部分内容解释详尽程度有限,比如四个段的概念,应用与Tq数的确定,因此,下篇文章将对此进行更详细的解释,同时也会有助于理解接收方如何采集每一位数据。
-------------------------------------------------------------------------------------------------------------------------
创作不易,欢迎点赞收藏关注。
汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车行业从业人员。