Autosar CAN开发11-1(CAN控制器相关参数,位时间、Tq、采样点等)_仲裁域波特率和数据域波特率-程序员宅基地

技术标签: 汽车  c语言  Autosar架构BSW层开发历程  mcu  autosar  单片机  

        生活不易,猫咪叹气。好久没更新,距离上次更新已经是快半年前了。毕业到现在,已经在这家公司呆了快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中的报文信号对应关系)_报文和信号的关系-程序员宅基地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 开发笔记(目录)-程序员宅基地

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41848098/article/details/126881751

智能推荐

5个超厉害的资源搜索网站,每一款都可以让你的资源满满!_最全资源搜索引擎-程序员宅基地

文章浏览阅读1.6w次,点赞8次,收藏41次。生活中我们无时不刻不都要在网站搜索资源,但就是缺少一个趁手的资源搜索网站,如果有一个比较好的资源搜索网站可以帮助我们节省一大半时间!今天小编在这里为大家分享5款超厉害的资源搜索网站,每一款都可以让你的资源丰富精彩!网盘传奇一款最有效的网盘资源搜索网站你还在为找网站里面的资源而烦恼找不到什么合适的工具而烦恼吗?这款网站传奇网站汇聚了4853w个资源,并且它每一天都会持续更新资源;..._最全资源搜索引擎

Book类的设计(Java)_6-1 book类的设计java-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏18次。阅读测试程序,设计一个Book类。函数接口定义:class Book{}该类有 四个私有属性 分别是 书籍名称、 价格、 作者、 出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是 书籍名称、 价格、 作者、 出版年份 。裁判测试程序样例:import java.util.*;public class Main { public static void main(String[] args) { List <Book>_6-1 book类的设计java

基于微信小程序的校园导航小程序设计与实现_校园导航微信小程序系统的设计与实现-程序员宅基地

文章浏览阅读613次,点赞28次,收藏27次。相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低学校的运营人员成本,实现了校园导航的标准化、制度化、程序化的管理,有效地防止了校园导航的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正建筑速看等信息。课题主要采用微信小程序、SpringBoot架构技术,前端以小程序页面呈现给学生,结合后台java语言使页面更加完善,后台使用MySQL数据库进行数据存储。微信小程序主要包括学生信息、校园简介、建筑速看、系统信息等功能,从而实现智能化的管理方式,提高工作效率。

有状态和无状态登录

传统上用户登陆状态会以 Session 的形式保存在服务器上,而 Session ID 则保存在前端的 Cookie 中;而使用 JWT 以后,用户的认证信息将会以 Token 的形式保存在前端,服务器不需要保存任何的用户状态,这也就是为什么 JWT 被称为无状态登陆的原因,无状态登陆最大的优势就是完美支持分布式部署,可以使用一个 Token 发送给不同的服务器,而所有的服务器都会返回同样的结果。有状态和无状态最大的区别就是服务端会不会保存客户端的信息。

九大角度全方位对比Android、iOS开发_ios 开发角度-程序员宅基地

文章浏览阅读784次。发表于10小时前| 2674次阅读| 来源TechCrunch| 19 条评论| 作者Jon EvansiOSAndroid应用开发产品编程语言JavaObjective-C摘要:即便Android市场份额已经超过80%,对于开发者来说,使用哪一个平台做开发仍然很难选择。本文从开发环境、配置、UX设计、语言、API、网络、分享、碎片化、发布等九个方面把Android和iOS_ios 开发角度

搜索引擎的发展历史

搜索引擎的发展历史可以追溯到20世纪90年代初,随着互联网的快速发展和信息量的急剧增加,人们开始感受到了获取和管理信息的挑战。这些阶段展示了搜索引擎在技术和商业模式上的不断演进,以满足用户对信息获取的不断增长的需求。

随便推点

控制对象的特性_控制对象特性-程序员宅基地

文章浏览阅读990次。对象特性是指控制对象的输出参数和输入参数之间的相互作用规律。放大系数K描述控制对象特性的静态特性参数。它的意义是:输出量的变化量和输入量的变化量之比。时间常数T当输入量发生变化后,所引起输出量变化的快慢。(动态参数) ..._控制对象特性

FRP搭建内网穿透(亲测有效)_locyanfrp-程序员宅基地

文章浏览阅读5.7w次,点赞50次,收藏276次。FRP搭建内网穿透1.概述:frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在内网主机上。2.简单的图解:3.准备工作:1.一个域名(www.test.xyz)2.一台有公网IP的服务器(阿里云、腾讯云等都行)3.一台内网主机4.下载frp,选择适合的版本下载解压如下:我这里服务器端和客户端都放在了/usr/local/frp/目录下4.执行命令# 服务器端给执_locyanfrp

UVA 12534 - Binary Matrix 2 (网络流‘最小费用最大流’ZKW)_uva12534-程序员宅基地

文章浏览阅读687次。题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93745#problem/A题意:给出r*c的01矩阵,可以翻转格子使得0表成1,1变成0,求出最小的步数使得每一行中1的个数相等,每一列中1的个数相等。思路:网络流。容量可以保证每一行和每一列的1的个数相等,费用可以算出最小步数。行向列建边,如果该格子是_uva12534

免费SSL证书_csdn alphassl免费申请-程序员宅基地

文章浏览阅读504次。1、Let's Encrypt 90天,支持泛域名2、Buypass:https://www.buypass.com/ssl/resources/go-ssl-technical-specification6个月,单域名3、AlwaysOnSLL:https://alwaysonssl.com/ 1年,单域名 可参考蜗牛(wn789)4、TrustAsia5、Alpha..._csdn alphassl免费申请

测试算法的性能(以选择排序为例)_算法性能测试-程序员宅基地

文章浏览阅读1.6k次。测试算法的性能 很多时候我们需要对算法的性能进行测试,最简单的方式是看算法在特定的数据集上的执行时间,简单的测试算法性能的函数实现见testSort()。【思想】:用clock_t计算某排序算法所需的时间,(endTime - startTime)/ CLOCKS_PER_SEC来表示执行了多少秒。【关于宏CLOCKS_PER_SEC】:以下摘自百度百科,“CLOCKS_PE_算法性能测试

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

推荐文章

热门文章

相关标签