Autosar CAN开发11-1(CAN控制器相关参数,位时间、Tq、采样点等)

        生活不易,猫咪叹气。好久没更新,距离上次更新已经是快半年前了。毕业到现在,已经在这家公司呆了快2年了。快的话一个月,慢的话两个月,马上就是提桶的日子了。

        

         


        说回我们的正题。        

        平时在工作上,对于通信工程师外的人来说,使用CAN分析仪(如CANoe、Can卡、Canpro等)采报文、分析报文是一件极其日常的事情。对于他们来说,从一块单板上电到电脑看见单板发出的报文,这中间的操作实际并不多(用Canoe举个栗子):

        步骤1、把单板的CAN线跟Canoe连接好并接上终端电阻

        步骤2、CANoe连接电脑,打开Canoe软件并配置Canoe的波特率、采样点(这个简单的步骤对于通信工程师外的人来说其实他们并不知道怎么配,他们经常是让别人配好一个工程,然后一直用一直用。。。)

       步骤3、单板上电并唤醒单板,在电脑上看Canoe接收到的报文数据

        好了,简简单单只需要两三个步骤,不管你懂CAN还是不懂CAN,它就通讯上了。但对于我们通讯工程师,我们通常需要解决的是在他们做了这些操作之后仍然无法正常通讯的问题。


        从上面的步骤1至步骤3,所涉及的内容就是CAN物理层的内容。

        我们从步骤1说起。

        CAN通讯使用的线为双绞线:

        CAN通讯所使用的CAN线都是双绞线,就是CAN高和CAN低两根线卷成麻花,类似于下面这张的图。(大晚上的,饿了,淦)

(图片来源:网络)

        使用双绞线的原因是由于CAN是差分信号:数据1和数据0是CANH和CANL的电平作差,两者电压差为2V时表示数据0,两者电压差为0V时表示数据1。所以当CANH和CANL是双绞线时,当有外界电磁干扰的时候,一干扰就同时干扰到CANH和CANL,比如原来CANH和CANL的差值为正常的2V,突然外界干扰让CANH和CANL同时都升高了0.5V,CANH和CANL作差实际还是2V,所以不影响通讯。

        CAN通讯的终端电阻的作用:

        关于终端电阻,下面这篇文章讲的很棒。

        以我菜鸟的水平就只会说:没了它是通讯不了的,报文是接收或者发不出去的。。。

【技术课堂】CAN总线缺少终端电阻现象解析 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MjM5NzkxNDgxMw==&mid=2654934289&idx=2&sn=139e07718c9741d2774467e0f0ccdd1f&chksm=bd1904c38a6e8dd527fa42f47e2be18386b8893e2f894a99d90468d25ff70d1459bc862b35b6&scene=27       步骤1完成后就是步骤2:

        波特率

        仲裁域和数据域的波特率配置是不一样的。(如果不知道啥是仲裁域和数据域的可以看下我之前的这篇文章)Autosar CAN开发03(CAN分析仪观测到的报文与DBC中的报文信号对应关系)_报文和信号的关系-CSDN博客CAN分析仪观测到的报文与DBC中的报文信号对应关系_报文和信号的关系https://blog.csdn.net/qq_41848098/article/details/125014128        我目前接触到的项目。对于CAN格式。仲裁域和数据域是500K(也见过有250K的)。对于CANFD格式,仲裁域是500K,数据域是2M(也有5M的)

        波特率500K是啥意思呢?1秒除以500 000 = 2微秒,也就是说波特率500k的意思就是一个位时间是2us,波特率2M的意思就是1秒除以2000 000 = 0.5微秒,也就是说波特率2M的意思就是一个位时间是0.5us

        关于波特率的配置,Vector工具链的Configurator的配置地方如下图

        位时间参数

        至于位时间是什么:从本质上,CAN线上传输的是电平信号,即高电平和低电平,而位时间,就是CAN通讯在传输报文过程中,一个最小单位的高电平或低电平的时间,如上面所说,如波特率是500K,那么一个位时间是2微秒。(按照我个人理解,波特率和位时间其实可以这样理解:波特率500k,即1秒/500k=2微秒,也就是说,最小2微秒可以进行一次电平变化,1秒最多可以电平变化500k次,位时间,就是一次电平变化的时间

        如上图所示,一个位可以分为四个段:分别是:同步段、传播时间段、相位缓冲段1、相位缓冲段2。另外,一个位的最小单位叫做Tq(Time Quantum),也就是一个位可分为n个Tq,比如:同步段+传播时间段+相位缓冲段1+相位缓冲段2 = 80个Tq关于这四个段分别有什么意义,大家可以看下面的解释(下面的几个解释我是直接Copy网上的,说的非常Very good):

  • 同步段(SS:Synchronization Segment):CAN网络中的所有节点,在接收一位数据时,以此段作为位起始的参考点,进行下降沿的检测,统计下降沿基于SS段的偏移,然后进行位时序的调整,使接收趋于同步(下降沿在理想情况下应出现在SS段)。需注意,进行位时序调整的条件是检测到下降沿,若无下降沿则不进行调整,因此为了避免多个相同连续位出现导致位时序得不到调整,产生不同步的情况,CAN控制器增加了填充位的概念,当出现连续5个相同位后,添加一位相反电平的填充位。SS段长度固定为1个Tq。
  • 传播时间段(PTS:Propagation Time Segment):CAN总线上数据的传输会受到物理延迟,比如发送单元的发送延迟、总线上信号的传播延迟、接收单元的输入延迟等,PTS段就是用来补偿这些因素产生的时间延迟。而PTS段长度至少应为这些因素产生的时间延时的2倍,PTS段长度至少为1个Tq。
  • 相位缓冲段1(PBS1:Phase Buffer Segment 1):若下降沿延后N个Tq,且延迟不大于同步跳转宽度,使得原本位时序中采样点位置提前N个Tq,则需要对PBS1段增加N个Tq数(使采样点位置延后N个Tq),吸收这段误差。PBS1段长度至少为1个Tq。
  • 相位缓冲段2(PBS2:Phase Buffer Segment 2):若跳变边沿提前N个Tq, 且不大于同步跳转宽度,使得原本位时序中采样点位置延后N个Tq,则需要对上一个位时序的PBS2段减少N个Tq数(使采样点位置提前N个Tq),吸收这段误差。PBS2段长度至少为2个Tq。
  • 重同步补偿宽度(SJW: reSynchronization Jump Width):SJW为PBS1增加或PBS2减少的最大Tq数。

        而我们常说的采样点,就位于相位缓冲段2开始的地方。采样点,我们平时的计算方法就是:单来说就是前面3个段的和占总百分比多少,即(同步段+传播时间段+相位缓冲段1 /(同步段+传播时间段+相位缓冲段1+相位缓冲段2)。举个栗子:如果一个位是80个Tq,相位缓冲段2是20个Tq,那么Sample Point就是60/80=75%。

        记得。同步段固定是1个Tq。其它3个段工程师是能根据需求修改的。比如Vector配置如下(下面图片配置的采样点为百分之80。即(1+24+39)/(1+24+39+16)=80%:

        其实一开始是接触的时候,配置这几个参数总是一脸懵逼。含义我知道了,但我怎么知道这些要配置为多少啊???,后面慢慢接触才知道,首先,我们是汽车零部件供应商,因此,我们提供的部件是要跟汽车上的其它部件通讯的,每个部件的采样点必须配置保持一致才能正常通讯,因此采样点配置为多少必须由我们的客户,即车企提供。因此这些参数都是车企提供。

        知道了这些。在使用CAN盒、CANoe配置工程进行通讯的时候就知道波特率要配成多少,采样点要配成多少了。有些CAN分析工具较为简单,只需配采样点波特率。有些就比较复杂,比如CANoe,配置的时候还需要配置各个段的Tq个数。


        在知道上面的波特率和位时间后,我们补充一些有意思的扩展知识。

        在CAN通讯正常的情况下,我们使用示波器去看收发器的Tx或者Rx引脚。我们就能观测到一帧一帧报文。如下图所示,一帧普通CAN格式的CAN报文的位长为(51-117位)。

        现假设通讯波特率为500K,有8个Byte数据的普通CAN格式报文发出(即这帧报文共117位)。根据我们上面说的,500k波特率的一个位时间为2微秒,因此 117 * 2us = 234us。因此,从示波器上观测,可以看到如下图所示波形(画图画的,丑是丑了点)


        前几天有个项目我之前开发的时候需求看漏了,还好问题不大不是量产,虽然没找我麻烦,但难顶。gg。但是,项目需求解读的时候,不能只一个人解读呀,这样难免会漏的,这已经是我第二波漏了,主要是有些东西我不知道这种东西存在,然后就按照惯性思维,以为所有的都是跟我以前碰到的是一样的。总之,草率了。但又学到东西,被人塞钱进口袋了。呜呜

        最近弄新项目,各种Bug,时间又紧,还好有难题的时候能找大佬顶着,不然像我这种垃圾,顶不住了。

        下篇文章我会写一下Busoff、收发器相关的东西。

        


 返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客

  • 21
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Autosar-CAN NM是一种用于网络管理的通信协议,旨在实现CAN总线系统的高效管理和控制。Autosar-CAN NM支持多个节共享相同的CAN总线,通过提供网络管理功能来确保节之间的通信可靠性和稳定性。 Autosar-CAN NM的主要功能包括节的电源管理、通信总线状态的监控和管理、节之间的网络通信和报文的传输。首先,节的电源管理功能包括监测节的供电状态和能力,并根据需要进行电源管理,以确保节之间的正常通信。其次,通过监控和管理CAN总线的状态,Autosar-CAN NM可以检测并处理潜在的通信故障,如总线冲突和错误帧。此外,还可以对总线负载进行监控和管理,以避免总线过载和通信延迟。 在节之间的网络通信方面,Autosar-CAN NM通过提供网络管理帧(用于节之间的通信)和网络管理报文(用于各个节之间传输数据)来实现。网络管理帧用于在节之间传递通信状态和配置信息,并支持节之间的网络拓扑管理。网络管理报文是主要用于节之间的数据传输和通信,通过CAN总线进行传输。这样可以确保节之间的数据通信具有高可靠性和实时性。 总的来说,Autosar-CAN NM提供了一种有效的方法来管理和控制CAN总线系统中节之间的通信。它通过电源管理、总线监控和状态管理、网络通信和报文传输等功能,实现了节之间的可靠通信。这不仅提高了CAN总线系统的性能和稳定性,还为制造商和开发人员提供了一种有效的方法来设计和管理CAN网络。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值