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

当通讯节点间采样点参数和波特率参数不匹配造成一些错误帧时,我们如何在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.mzph.cn/news/177873.shtml

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

相关文章

SpringBoot 入门学习

开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2 框架介绍 Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置…

QT QComBox实现模糊查询

一、概述 在Qt中&#xff0c;可以通过QComboBox和QLineEdit实现模糊查询的功能。模糊查询是指根据用户输入的文本&#xff0c;在下拉框的选项中进行模糊匹配&#xff0c;并动态地显示匹配的选项。 二、基础知识 1、QCompleter (1)QCompleter 是 Qt 框架中提供的一个用于自动…

JOSEF 漏电继电器JHOK-ZBL1 DH-50L 系统1140V 电源AC220V

系列型号&#xff1a; JHOK-ZBL多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBL1多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBL2多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBM多档切换式漏电&#xff08;剩余&#xff09;继电器 …

【Java Spring】SpringBoot 五大类注解

文章目录 Spring Boot 注解简介1、五大类注解的作用2、五大类注解的关系3、通过注解获取对象4、获取Bean对象名规则解析 Spring Boot 注解简介 Spring Boot的核心就是注解。Spring Boot通过各种组合注解&#xff0c;极大地简化了Spring项目的搭建和开发。五大类注解是Spring B…

老师怎样处理校园欺凌

校园欺凌是一个让人痛心又不可忽视的问题。作为老师&#xff0c;该如何处理这种问题&#xff0c;既能够保护受欺凌的学生&#xff0c;又能够让施暴者得到应有的教训呢&#xff1f; 及时发现并介入 经常关注学生的动态&#xff0c;一旦发现有校园欺凌的苗头&#xff0c;就要及时…

pytorch读取tiny-imagenet-200的验证集(val)

ori_train torchvision.datasets.ImageFolder(root args.datadir /tiny-imagenet-200/train/, transformtransform)#可以获取class_idx的映射class_idx ori_train.class_to_idx val_annotations.txt中存储着每个图片对应的类别 获取验证集的标签 test_target []#读取val_…

python项目报错

解决办法&#xff1a;不要用配置的镜像脚本&#xff0c;直接用此命令 pip install pandas -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

Java第二十章多线程

线程简介 在 Java 中&#xff0c;并发机制非常重要。在以往的程序设计中&#xff0c;我们都是一个任务完成后再进行下一个任务&#xff0c;这样下一个任务的开始必须等待前一个任务的结束。Java 语言提供了并发机制&#xff0c;程序员可以在程序中执行多个线程&#xff0c;每一…

SimpleDateFormat在多线程下的安全问题

目录 情景重现 SimpleDateFormat解析 解决方案 局部变量 加锁 使用线程变量 使用DateTimeFormatter 情景重现 SimpleDateFormat类是Java开发中的一个日期时间的转化类。它可以满足绝大多数的开发场景&#xff0c;但是在高并发下会出现并发问题。接下来查看下文中的案例。…

Python中的datetime库

1. datetime datetime是Python中用于处理日期和时间的类&#xff0c;它包含在datetime模块中。使用datetime类&#xff0c;我们可以创建表示特定日期和时间的对象&#xff0c;以及进行日期和时间的计算和操作。 from datetime import datetime, timedelta# 获取当前日期和时间…

爬虫如何确定HTTP代理IP是否符合自己业务需求?

HTTP代理在许多业务场景中发挥着关键作用&#xff0c;但要确保其能够满足业务需求&#xff0c;需要考虑多个方面的因素。今天我们一起看看&#xff0c;要如何判断HTTP代理是否适合自己的业务&#xff0c;以及在选择HTTP代理时需要考虑的综合因素。 1. 稳定性 稳定性是HTTP代理…

使用Moment.js中获取上周的开始日期和结束日期(可自定义)

前言 有时候需求是这样的&#xff0c;想要获取上周的开始日期和结束日期&#xff0c;或者前几周的时间范围 比如今天是2023.11.28号&#xff0c;我想获取上周的周一到周日&#xff0c;也就是&#xff0c;上周的开始日期: 2023-11-20&#xff0c;上周的结束日期: 2023-11-26 1.…

爬虫系统Docker和Kubernetes部署运维最佳实践

在构建和管理爬虫系统时&#xff0c;使用Docker和Kubernetes可以带来诸多好处&#xff0c;如方便的部署、弹性伸缩和高可靠性。然而&#xff0c;正确的部署和运维实践对于确保系统稳定运行至关重要。在本文中&#xff0c;我将分享爬虫系统在Docker和Kubernetes上的最佳部署和运…

SSM卫生信息管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 卫生信息管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

java设计模式学习之【单例模式】

文章目录 引言单例模式简介定义与用途实现方式&#xff1a;饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式&#xff0c;用于确保在一个程序中一个类只有一个实例&#xff0c;并且…

centos7搭建 PXE 服务安装 window10/11 系统

最近想搭建之前基于 window server 的 window 批量安装&#xff0c;但想想装 window server 真的太麻烦了&#xff0c;我只是为了 PXE 安装系统而已&#xff0c;这些装一个极度消耗资源的系统真是相当麻烦呀&#xff0c;之前装的 server 不维护的话&#xff0c;不是被挖矿盯上就…

The module to import is incompatible with the current project【鸿蒙开发-BUG已解决】

文章目录 项目场景:问题描述原因分析:解决方案:心得体会:知识点OpenHarmony:HarmonyOS:项目场景: 报错: The module to import is incompatible with the current project 问题描述 希望通过 import module 将该模块引入到我的项目。 导入后出现错误,因为项目和模块…

基于51单片机冰箱温度控制器设计

**单片机设计介绍&#xff0c; 基于51单片机冰箱温度控制器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机冰箱温度控制器设计是一个非常实用的项目。以下是一个基本的介绍&#xff1a; 系统概述&#xff1a; …

Ubuntu20.04用D435i运行VINS-Fusion时出现“追踪与中断点陷阱”的问题该怎么解决

在使用D435i运行VINS-Fusion时出现了以下画面: 该错误显示&#xff1a;追踪与中断点陷阱。在网上查了一堆&#xff0c;说是core file的错误&#xff0c;但修改后也没有解决。实际上&#xff0c;真正的原因是&#xff1a;文件的路径错了。 打开VINS-Fusion的文件所在的空间&…

phpstorm使用教程

1.界面优化 ctrlalts --->Plugins--->搜素Material Theme UI--->安装--->重启phpstorm--->tool--->Material Theme--->Material Theme Chooser--->选择自己喜欢的风格就行 2.安装界面插件之后&#xff0c;修改字体颜色有讲究&#xff1a;需要点击图片…