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

这篇具有很好参考价值的文章主要介绍了Autosar CAN开发11-1(CAN控制器相关参数,位时间、Tq、采样点等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

        仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

         


        说回我们的正题。        

        平时在工作上,对于通信工程师外的人来说,使用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低两根线卷成麻花,类似于下面这张的图。(大晚上的,饿了,淦)

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

(图片来源:网络)

        使用双绞线的原因是由于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)https://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的配置地方如下图

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

        位时间参数

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

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

        如上图所示,一个位可以分为四个段:分别是:同步段、传播时间段、相位缓冲段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%:

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

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

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


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

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

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

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

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言


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

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

仲裁域波特率和数据域波特率,Autosar架构BSW层开发历程,autosar,汽车,单片机,mcu,c语言

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

        


 返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客文章来源地址https://www.toymoban.com/news/detail-769176.html

到了这里,关于Autosar CAN开发11-1(CAN控制器相关参数,位时间、Tq、采样点等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CAN总线基础详解以及stm32的CAN控制器

    目录 CAN简介 CAN总线拓扑图 CAN总线特定 CAN应用场景 CAN的物理层 CAN的协议层 CAN数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 stm32的CAN控制器 CAN控制器介绍 CAN控制器模式 CAN控制器框图 接收过滤器 CAN控制器波特率计算 CAN相关寄存器 CAN主控制寄存器(

    2024年01月25日
    浏览(45)
  • 如何使用MCP2518FD外部CAN FD控制器实现速速CAN通信

             MCP2518FD外部CAN FD控制器具有小尺寸和SPI接口,可实现轻松连接。可将CAN FD通道轻松添加到缺少CAN FD外设或没有所需CAN FD通道的微控制器上。MCP2518FD支持经典格式 (CAN 2.0B) 和CAN灵活数据速率 (CAN FD) 格式中的CAN帧格式,符合ISO11898-1:2015标准。  框图: 本文实验板

    2024年01月18日
    浏览(38)
  • 了解SPI总线CAN控制器 MCP2515配置 一文即可

    最近工作中遇到需要6路CAN通信的情况,单片机自带的4路已不满足实际需求,故采用了SPI总线的CAN控制器芯片MCP2515,通过SPI通信的CAN扩展芯片最高可实现 1Mbps 的遵循 CAN 2.0B 的协议通信,配置起来也比较繁琐,故写诞生了这篇文章。本篇中仅对基础功能进行测试,如有疑问可

    2024年02月06日
    浏览(49)
  • 控制器局域网(CAN)物理层调试的基础知识和实例分析

    控制器局域网的概念 控制器局域网是国际上应用最广泛的现场总线之一。CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。

    2024年02月07日
    浏览(50)
  • 基于STM32 ARM+ FPGA 的软体机器人的 CAN总线运动控制器的设计

    针对在软体机器人控制时 , 多电机协同控制过程中难度大 、 通用性差 、 协同性差等缺点 , 设计了基于 ARM 和 FPGA 的软体机器人的控制器局域网络 ( controller area network , CAN ) 总线运动控制器 , 采用 ARMCortex-M4 为内核的 STM32F407 开发板和 AX7102 FPGA 开发板设计一种基于 C

    2024年02月13日
    浏览(57)
  • SpringMVC 参数绑定(视图传参到控制器)

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SSM 框架从入门到精通 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:SpringMVC 参数绑定

    2024年01月19日
    浏览(42)
  • [足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-7 LQR控制器 Linear Quadratic Regulator

    本文仅供学习使用 本文参考: B站:DR_CAN 线性控制器设计- 轨迹跟踪(Fellow a Desired Path)

    2024年02月02日
    浏览(56)
  • 【探索 Kubernetes|作业管理篇 系列 11】控制器的核心功能

    大家好,我是秋意零。 上一篇结束了 Pod 对象的内容。 今天要探讨的内容是 “控制器”,它是 Kubernetes 编排最核心的功能。理解了 “控制器”,你就能理解 Deployment、StatefulSet、DaemontSet、Job、CroJob 控制器对象。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬

    2024年02月11日
    浏览(35)
  • 杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题

    控制器类 1、ControllerBase与Controller webapi的controller 继承自 ControllerBase webmvc 继承自controller controller 继承自controllerbase 2、控制器类可以不显式地继承自任何类 还是需要添加特性 运行: Action方法的异步 1、Action方法既可以同步也可以异步。 2、异步Action方法的名字一般不需要以

    2024年01月19日
    浏览(40)
  • 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam

    😀前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 在csdn获奖荣誉: 🏆csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包