历史上的今天
返回首页

历史上的今天

今天是:2025年08月10日(星期日)

正在发生

2021年08月10日 | 飞思卡尔s12系列CAN波特率计算

2021-08-10 来源:eefocus

最近在看飞思卡尔s12系列CAN部分,发现波特率计算这块没有一个讲的详细的,在数据手册里也没有详细说明。


经过仔细研究,特将CAN部分波特率计算总结出来。


引用部分CAN波特率计算资料如下:


简单介绍一个波特率的计算,在CAN的底层协议里将CAN数据的每一位时间(TBit)分为许多的时间段(Tscl),这些时间段包括:

A. 位同步时间(Tsync)

B. 时间段1(Tseg1)

C. 时间段2(Tseg2)


其中位同步时间占用1个Tscl;时间段2占用(Tseg1+1)个Tscl;时间段2占用(Tseg2+1)个Tscl,所以CAN控制器的位时间(TBit)就是:TBit=Tseg1+Tseg2+Tsync=(TSEG1+TSEG2+3)*Tscl,那么CAN的波特率 (CANbps)就是1/TBit。


但是这样计算出的值是一个理论值。在实际的网络通信中由于存在传输的延时、不同节点的晶体的误差等因素,使得网络CAN的波特率的计算变得复杂起来。CAN在技术上便引入了重同步的概念,以更好的解决这些问题。这样重同步带来的结果就是要么时间段1(Tseg1)增加TSJW(同步跳转宽度SJW+1),要么时间段减少TSJW,因此CAN的波特率实际上有一个范围:1/(Tbit+Tsjw) ≤CANbps≤1/(Tbit-Tsjw)


CAN有波特率的值四以下几个元素决定:

A. 最小时间段Tscl;

B. 时间段1 TSEG1;

C. 时间段2 TSEG2;

D. 同步跳转宽度 SJW


那么Tscl又是怎么计算的呢?这是总总线时序寄存器中的预分频寄存器BRP派上了用场,Tscl=(BRP+1)/FVBP。FVBP为微处理器的外设时钟。


下面用一个例子来举例说明。


注:本例中时钟使用总线时钟,若选择外设时钟,则外设时钟=晶振频率/2


比如,总线时钟fbus=16M,准备设定的波特率 CANbps=250K,则


(1)位时间TBit=1/250k=4us.


同时,


(2)TBit=Tseg1+Tseg2+Tsync=(TSEG1+TSEG2+3)*Tscl,


一般 (TSEG1+TSEG2+3)的值取16(8~25之间),则


Tscl=4us/16=250ns


而同时(3)Tscl=(BRP+1)/fbus


fbus为微处理器的总线时钟。则


250ns=(BRP+1)/16M,


计算之后BRP=3;


假设我们先不考虑BTR0中的SJW位和BTR1中的SAM位。那么,BTR0和BTR1就是2个分频系数寄存器;它们的乘积是一个扩展的分频系数。即:


BTR0×BTR1=fbus/CANbps   (4)


此例中,BTR0*BTR1=16M/250K=64. 


此例中,BRP=3,其作为BTR0的组成部分,表示预分频值为4,则BTR1的预分频值为


(5)64/4=16;


(CAN规范中规定其取值在8~25之间)

 

TSEG1和TESG2的值(TSEG1+TSEG2+3)=16,而根据CIA推荐:


75%     when 波特率 > 800K

80%     when 波特率 > 500K

87.5%   when 波特率 <= 500K


CiA计算方式:


sample =(1+(TSEG1+1))/(1+(TSEG1+1)+(TSEG2+1))               (6)


sample = ( 1 +  CAN_BS1) /  (1 +  CAN_BS1 +  CAN_BS2)        (6)


在这里,CAN_BS1=TSEG1+1,CAN_BS2=TSEG2+1;


则CAN_BS1和CAN_BS2的取值要符合要求。


此处令CAN_BS1取13,CAN_BS2取2, 采样率=(1+13)/(1+13+2)=87.5%    BTR1=0001 1100B


则CANBTR1的值为0x1c;


其实,用一个公式总结则为


CANbps = fbus/( (BRP+1) * (CAN_BS1+CAN_BS2+1))


本例中 250K=16M/(3+1)*(13+2+1)=16M/64;


总之,BRP(BTR0的值)和CAN_BS1,CAN_BS2的值可以自定,但是要符合(CAN_BS1+CAN_BS2)=15,且符合CIA推荐的标准。


总体配置保持CAN_BS1>=CAN_BS2 , CAN_BS1>=1个CAN时钟周期 ,CAN_BS2>=2SJW ,


本例中,CAN_BS2=2,则SJW=1;即BRT0的bit7和bit6均为0


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


总结:


BTR0:  SJW和CAN_BS2有关,CAN_BS2>=2SJW 


BTR1:  SAM的确定:低频时,选SAM=1,即采样3次。高频100K以上时,取SAM=0,即采样1次。


CANbps = fbus/( (BRP+1) * (CAN_BS1+CAN_BS2+1))    最重要的公式


CANbps为要设定的CAN波特率;


fbus为总线时钟频率,若采用外部时钟时,则外部时钟=晶振时钟/2;


BRP为BTR0的低6位值;


CAN_BS1为BTR1的bit0~bit3的值-1;


CAN_BS2为BTR1的bit4~bit6的值-1;

推荐阅读

史海拾趣

Bipolar Integrated Technology Inc公司的发展小趣事

在20世纪初,Bipolar Integrated Technology Inc(以下简称BIT)由几位热衷于电子技术的工程师创立。他们专注于双极型集成电路的研发,这一领域在当时尚未被充分开发。经过无数次的试验和失败,BIT团队终于成功研发出了一款性能稳定、功耗较低的双极型集成电路,这一技术突破为BIT在行业内赢得了初步声誉。

Greenwich Instruments Ltd公司的发展小趣事

随着全球对环境保护和可持续发展的重视,Greenconn Corp积极响应号召,将绿色理念融入产品设计和生产全过程。公司致力于开发环保型连接器产品,采用可回收材料、减少能源消耗和废弃物排放等措施,努力实现生产过程的绿色化。同时,Greenconn Corp还积极参与行业内的绿色标准制定和认证工作,为推动整个电子行业的绿色发展贡献了自己的力量。

DUCATI公司的发展小趣事

Greenconn Corp自创立之初便致力于连接器技术的研发与创新。在20世纪末,随着电子产品的普及和通讯技术的飞速发展,连接器作为电子设备间的桥梁,其重要性日益凸显。Greenconn Corp凭借其敏锐的市场洞察力和强大的研发实力,成功研发出了一系列高性能、高可靠性的连接器产品,迅速在汽车电子、通信设备等领域占据了一席之地。这些创新产品不仅满足了市场对连接器高质量、高效率的需求,还推动了整个电子行业的发展。

DURATOOL公司的发展小趣事

随着环保意识的不断提高,绿色、环保、低碳已成为全球经济发展的重要趋势。DURATOOL公司积极响应这一趋势,致力于研发和生产绿色环保的电子工具产品。公司采用环保材料和工艺生产产品,减少了对环境的污染和破坏。同时,公司还积极开展环保宣传和公益活动,引导消费者树立绿色消费观念。这些举措不仅提升了DURATOOL公司的社会形象,也为其在未来的市场竞争中赢得了先机。

Display Elektronik GmbH公司的发展小趣事

Display Elektronik GmbH始终将产品质量放在首位。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到成品检测,每一个环节都严格把关。这种对品质的坚持让Display Elektronik GmbH的产品在市场上赢得了良好的口碑,也为其赢得了众多知名客户的信赖。

富之光(Fujicon)公司的发展小趣事

富致科技的研发团队最早可以追溯到1997年,当时一群在电子、材料、化工领域拥有深厚背景的专家聚集在一起,共同探索高分子正温度系数PPTC技术的可能性。随着技术的不断成熟,他们于1999年12月正式成立了富致科技股份有限公司,将研发成果转化为实际产品,并迅速在台湾新北市五股工业园区建立了生产基地。这一初期的技术积累和团队组建,为富致科技后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

汽车伴我行——京郊另类玩家经典路线、汽车新科技、经典车型大罗列

汽车伴我行 1. 京郊另类玩家经典路线推荐 https://bbs.eeworld.com.cn/thread-2611-1-40.html 2. 智能车赛道记忆算法的研究 https://bbs.eeworld.com.cn/thread-9739-1-18.html 3. 汽车新科技 https://bbs.eeworld.com.cn/thread-7089-1-17.html ...…

查看全部问答>

推荐FPGA+单片机开发板。。。

联华众科FPGA开发板 FA130 北京联华众科科技有限公司 http://www.lianhua-zhongke.com.cn Abstract  摘 要:联华众科FPGA开发板FA130核心器件为 Altera Cyclone系列的EP1C3,配置芯片为EPCS1,FA130上可以运行SOPC Bui ...…

查看全部问答>

STC单片机实现阀值的设置和显示功能, 不知道怎么做.请教大家给个方法!

STC单片机实现阀值的设置和显示功能, 不知道怎么做.请教大家给个方法! 描述:有两个按钮,分别设置阀值的+和-,一个LED用来显示当前设置值.…

查看全部问答>

关于wince5.0 的IE支持flash的问题。

如何让wince5.0的IE支持flash呢?在adobe的网站上找到了用于ppc的flash插件,但不能用于wince, 听说,有人把ppc相应的dll考到了wince里,wince就可以用ppc的软件了,真的可能吗? 还有我的硬件是x86的,能否找到用于x86的ppc系统文件呢(dll), ...…

查看全部问答>

各位高手大虾帮帮忙!关于串口

各位高手大虾,我的开发板上有3个串口,串口1用来调试,串口2没有用,串口3接红外,由于我要加接GPS,又不想占用调试串口,就想把串口2打通, 在BSP中添加了相关代码后,在CE注册表下可以看到串口2,可是接上GPS线却什么反应的都没有,而串口1就可 ...…

查看全部问答>

CE下怎么得到当前进程所占内存呢?

如题,好像CE下不支持GetProcessMemoryInfo()API 还有别的方法可以吗? 我想把当前应用所占内在实时的显示在界面上…

查看全部问答>

同步电路,post_sta和post_sim不同结果,谁碰到过?

post_sta全通过,analysis_coverage分析基本都覆盖了,post_sim报setup违反,谁碰到过类似问题?用的是smic sc-m库   请各位高手支招!…

查看全部问答>

疑问中?有这样的一个版块吗,找了好久没有找见?

一直想寻一个这样的版块,也许有这样的版块,只是我没有找到而已。 在这个版块中,大家可以对一个共同的问题的完美解决齐心尽力。而现在太多的兄弟姐妹们都往上传很多的东西,也有很多的人下载了想去看,可是真正的去钻研这些资料的真的很少,还不 ...…

查看全部问答>

DIY建议+多参量调试信号源

我们在工作或学习中,调试电路的时候,经常需要用到些信号源和测量仪器 我们有时需要跟调试目标板提供交流信号多少赫兹,多少mV、或高精度直流基准源,怎么办,如果自己条件不允许,没有需要的设备怎么办!! 我们可以参考下ADI公司里的实验室电 ...…

查看全部问答>