干货分享 | TSMaster采样点配置方法与消除错误帧流程

news2024/9/25 13:13:42

当通讯节点间采样点参数和波特率参数不匹配造成一些错误帧时,我们如何在TSMaster中设置以及调整波特率参数和采样点参数,来减少以及消除总线上出现的错误帧,进一步提高通信质量。本文着重讲解讲解如何借用TSmaster更加便捷地获取相应的采样点参数以及波特率参数并通过API设置到用户程序中。

本文关键字:采样点、波特率、错误帧、tsapp_configure_canfd_regs

目录

● 采样点定义

● 采样点导致的通信问题

● 如何在TSMaster中调整采样点参数

● tsapp_configure_canfd_regs参数配置

一 、采样点定义

采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点。在我们了解采样点之前,我们需要先了解CAN报文中位时间的概念以及位时间的组成部分,位时间指的是每传输一位数据所需要的时间,而CAN控制器的最小时间周期称作时间份额(Time Quantum,简称TQ),它是通过对芯片晶振周期进行分频而得来的。一个位时间由若干个TQ组成(通常为8到25个),同时根据功能的不同,可以分为4个阶段:同步段、传播段、相位缓冲段1和相位缓冲段2。

四个阶段的功能如下:

●  同步段:用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个TQ。

●  传播段:用于补偿网络上的物理延迟时间,这些延迟时间包含信号在总线上的传输延迟和CAN节点内部的处理延迟。

● 相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2):用于补偿跳变沿的相位误差,其长度会在重同步的实现过程中延长或缩短。

CAN通信中不同得分波特率时间对应的采样点以及位时间的份额不尽相同。常见的采样点以及相关的参数如下表所示。以波特率为500K为例,一个位时间被分配成16个时间份额,而采样点在第14个时间份额。

合适的采样点位置是CAN控制器正常通信的保证,其重要性主要有以下三点:

●  对于CAN网络这个整体而言,各个节点应该尽量使用相同的采样点位置,否则容易出现采样错误,进而使整个网络的通信出现故障;

●  对于单个节点而言,过早的采样使得节点易受位时间初期的电平波动影响,进而导致采样错误;

●  受限于重同步的要求和相位缓冲段的宽度,CAN控制器无法过晚采样。

二、采样点导致的通信问题

CAN网络采用异步通信的方式,因此需要根据波特率进行采样,采样原理如下图所示。红色箭头则表示采样点的位置,采样得到的数据为“1010 1010”。

若采样点设置提前20%,则采样后得到的数据为“0101 1010”,与图1中数据相比较,图4中采样得到的第五位数据就不相同。因此,在CAN通信网络中,如果传输节点之间的采样点差异不同,则会造成数据传输传输错误,并且随着传输的数据越多,累计的错误数据位就越多。所以在进行CAN网络通信时,需要将各个节点的波特率和采样点设置位相同的。

在CAN通信网络中,节点之间波特率和采样点设置不匹配导致的问题主要表现是出现错误帧。以波特率500k、采样点80%(相位缓冲段1为63、相位缓冲段2为16)与波特率250k、采样点50%(相位缓冲段1为3、相位缓冲段2为4)为例,使用同星硬件TC1016和TSmaster进行测试,分别将以上波特率和采样点参数部署至短接的CAN1与CAN2通道。


在此参数配置条件下,在TSMaster的报文发送窗口发送报文,然后可以在报文信息窗口下看到报文数据在总线上传输的状态。如下图所示,在通信节点之间的波特率和采样点参数配置不相同的情况下,报文信息窗口会出现错误帧。

因此,在TSMaster报文信息窗口出现错误帧的时候,检查节点之间的波特率和采样点参数配置是一个重点排查的方向。除此之外,不仅仅是上图所展示的错误帧类型,当报文信息窗口出现其他错误帧类型,诸如bit error、form error等(如图8和图9所示),都需要检查波特率和采样点采样点参数配置。


三、如何在TSMaster中调整采样点

当因为采样点设置不当,导致在TSMaster的报文信息窗口观测到错误帧时,此时需要重新调整TSMaster中的参数配置,以实现节点之间的正常通信。因此,如何在TSMaster中调整采样点和波特率参数以消除错误帧,提高通信质量尤为重要。但在此之前,需要知道如何计算采样点。

其中,TSEG1和TSEG2在TSmaster中分别表示为相位缓冲段1和相位缓冲段2。在知道采样点的计算公式后,可以根据被测件的通信参数准确计算出相应的采样点参数,然后可进一步在TSMaster的总线硬件界面中配置好相应参数,以实现节点间的正常通讯。

四、调整采样点和波特率参数的步骤

● 步骤一:首先需要在通道需选择界面选择相应的硬件通道,并点击确认。

● 步骤二:确定通道后,在总线硬件界面配置波特率参数。

以CAN通信网络为例,波特率的选择范围由125kbps至1000kbps,波特率的选择要参考被测件的通信参数,并且在TSmaster中波特率参数设置应与之对应,若在不清楚被测件波特率参数的情况下,可以询问厂商或者换用其他波特率参数进行通信,看看在其他波特率参数下可否改善出现错误帧的情况。

● 步骤三:配置采样点参数(即仲裁段位时间)

TSMaster提供诸多采样点参数,以供配置使用。参考总线硬件界面中的仲裁段位时间选项,同一个采样点可能对应的相位缓冲段1参数和相位缓冲段2参数不尽相同,因此,在选择采样点时需要用到采样点公式进行计算,根据被测件的的通信参数,选择与之对应的相位缓冲段1参数和相位缓冲段2参数进而计算出采样点参数。

此外,当根据被测件计算出来的采样点参数或者相位缓冲段1参数和相位缓冲段2参数在仲裁段位时间参数选项列表中无法找到时,可以在选项列表中选择与之相近的参数进行配置即可。若使用者在不知道被测件的通信参数下,推荐使用TSMaster中默认采样点参数即可。

tsapp_configure_canfd_regs参数配置:

TSMaster提供众多的API函数给用户进行二次开发,通过API函数编写更加符合自己需求的用户程序实现各项功能。当使用二次开发的程序出现通信错误时,可以使用上述方法在TSMaster界面中不断调整采样点和波特率等参数的配置,以改善总线中出现错误帧的情况,进而获取更加符合与被测件之间进行通信的采样点和波特率等参数。

tsapp_configure_canfd_regs函数作用是配置 CANFD 控制器内部寄存器,让控制器的采样点,同步跳变宽度等参数更加精确。函数如图15所示:


上面这些参数看起来很繁琐,但是可以通过 TSMaster 的配置器直接查看到对应的参数值。以仲裁场 500k,仲裁采样点 80%,数据场 2000k,数据场采样点 80%为例。进入TSMaster,打开总线硬件配置,如图16所示。

展开仲裁段位时间选项,精确选择 80%的采样点,如图17所示:

因此,可以看到 AArbSEG1 = 31,AArbSEG2 = 8, AArbPrescaler = 2;AArbSJW= 6(<= AArbSEG2 即可),AArbBaudrate = 500。

同理,可以获得数据场的参数配置,如图18所示:

因此采样点和波特率等参数的获取和调整都可以在TSMaster中完成,通过这样的调试方式可以让TSMaster的功能充分发挥出来,更加便捷地帮助使用者完成开发所需。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1263242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nodejs669在线图书借阅管理系统vue前端

系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理用户模块、用户表模块、图书借阅模块、图书归还模块、图书分类模块、token表模块、收藏表模块、书籍信息模块、图书资讯模块、留言板模块、书籍信息评论表模块、注册用户模块、配置文件模块、处罚记录模块、在线客…

Linux中执行java命令报错:cannot execute binary file: Exec format error

网上很多文章 都是说操作系统和JDK&#xff0c;32位和64位不兼容问题 当你非常确定你的操作系统是64位&#xff0c;并且JDK也是64位的时候 或者非常确定你的操作系统是32位&#xff0c;并且JDK也是32位的时候 怎么办&#xff1f; 使用以下命令&#xff0c;查看你的操作系统…

浏览器兼容性问题及其解决方案

一、认识浏览器 四大内核&#xff1a; Blink、Gecko、WebKit、Trident (不再活跃) 主流浏览器&#xff1a; IE(Trident内核)、Firefox(火狐&#xff1a;Gecko内核)、Safari(苹果&#xff1a;webkit内核)、Google Chrome(谷歌&#xff1a;Blink内核)、Opera(欧朋&#xff1a;B…

2023年通过已经认证的微信公众号注册微信小程序

登录已经认证的微信公众号 注册完成后&#xff0c;打开微信公众平台的网址&#xff0c;用账号密码的方式登录

BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection 论文阅读

论文链接 BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection 0. Abstract 提出了一种新的 3D 物体检测器&#xff0c;具有值得信赖的深度估计&#xff0c;称为 BEVDepth&#xff0c;用于基于相机的鸟瞰 (BEV) 3D 物体检测BEVDepth通过利用显式深…

Python之基础语法和六大数据类型

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

VMware虚机重启后静态IP不生效

配置好一套虚机之后&#xff0c;因为重启电脑&#xff0c;导致虚机的静态ip配置不生效&#xff0c;xshell连接不上虚机。以下是自查和解决方案&#xff1a; 1.使用su -进入root用户 2.查看打开虚机的teminal窗口查看配置的ip文件&#xff1a;vim /etc/sysconfig/network-script…

初始化的内容写到析构函数中。。。。。。。

大概是&#xff0c;把应该在构造函数中初始化的堆栈窗体代码写到了析构函数中。。。。 不是因为没掌握构造/析构&#xff0c;而是。。。。 检查了四十多分钟没检查出来。。 被自己蠢哭。 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) { }…

初探HarmonyOS路由跳转

最近的鸿蒙新闻也是很大声势&#xff0c;鸿蒙的纯血版一出&#xff0c;各大互联网大厂都坐不住了&#xff0c;纷纷加入其中。这意味鸿蒙将来会取代大部分Android用户&#xff0c;这也是程序员的一篇大好前程。如今的Android开发行业已经夕阳西下了。 网上有关HarmonyOS的资料几…

0基础学java-day9

一、房屋出租系统-需求&&界面 1项目需求说明 实现基于文本界面的《房屋出租软件》。 能够实现对房屋信息的添加、修改和删除&#xff08;用数组实现&#xff09;&#xff0c;并能够打印房屋明细表 2 房屋出租系统-界面 2.1 项目界面 - 主菜单 2.2项目界面- 新增房…

你真的懂人工智能吗?AI真的只是能陪你聊天而已吗?

提到AI这个词语&#xff0c;相信大家并不陌生&#xff0c;尤其是前段时间爆火的chatgpt&#xff0c;让我们发现似乎AI已经渗透到我们生活的方方面面了&#xff0c;但是你确定你真的了解AI这个事物吗&#xff1f;它真的只是一个简简单单的人工智能吗&#xff1f;恐怕不止如此。那…

Vue中的过滤器了解吗?过滤器的应用场景有哪些?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-filter过滤器 目录 一、是什么 二、如何用 定义filter 小结&#xff1a; 三、应用场景 四…

【黑马程序员】——微服务全套——Nacos安装指南

1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, c…

递归实现全排列

思路: 对于给定的集合&#xff0c;选择一个元素作为当前位置的元素。将当前位置的元素与集合中其他位置的元素交换&#xff0c;依次产生新的排列。通过递归调用&#xff0c;将当前位置向后移动&#xff0c;继续生成新的排列。当当前位置达到集合的末尾时&#xff0c;表示生成了…

sqli-labs靶场详解(less29-less31)

less-29 提示有最好的防火墙 小白原因 这种题型没见过 先自己测试一下 ?id1 to use near 1 预计可以使用报错注入 和单引号有关的注入点 ?id1 and 11 成功 ?id1 and 12 失败 确实是单引号字符型注入点 ?id1;%00 id1%27;%00 获取到了%00空字符&#xff08;原因就是服务器获取…

【攻防世界-misc】Encode

1.下载解压文件&#xff0c;打开这个内容有些疑似ROT13加密&#xff0c;利用在线工具解密&#xff1a;ROT13解码计算器 - 计算专家 得到了解密后的值 得到解码结果后&#xff0c;看到是由数字和字母组成&#xff0c;再根据题目描述为套娃&#xff0c;猜测为base编码&#xff08…

WEB渗透—反序列化(八)

Web渗透—反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩哔_…

C语言错误处理之 “信号处理方式<signal.h>及signal函数等内置函数”

目录 前言 signal.h头文件 信号宏 signal函数 实例&#xff1a;在Linux环境下验证signal函数 实例&#xff1a;在Linux中演示保存signal函数的返回值 预定义的信号处理函数&#xff08;简单了解&#xff09; SIG_DFL函数 SIG_IGN函数 raise函数 实例&#xff1a;测试…

初识Java 18-4 泛型

目录 泛型存在的问题 在泛型中使用基本类型 实现参数化接口 类型转换和警告 无法实现的重载 基类会劫持接口 自限定类型 奇异递归类型 自限定 自限定提供的参数协变性 本笔记参考自&#xff1a; 《On Java 中文版》 泛型存在的问题 接下来讨论的&#xff0c;是在泛型…

函数式编程:简洁与效率的完美结合

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…