0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解锁TSMaster fifo函数:报文读取的高效方法

上海同星智能科技有限公司 ? 2025-03-14 20:04 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言:

TSMaster目前有两种读取报文的模式:回调函数模式和fifo模式。fifo函数是TSMaster近期新增的函数,本文将重点介绍fifo模块。关于回调函数的使用方法可以参考帮助模块的《快速入门》手册。

1.

技术背景

TSMaster的小程序模块中提供了接收事件、发送事件以及预发送事件等回调事件,如图 1。相比于回调函数,fifo函数使用起来比较灵活方便,可以在任意一个模块使用,不再局限于接收、发送等回调事件。相关的fifo函数可以在【设计】-【C小程序】-【函数】中找到,如图2。

71df9122-00cc-11f0-9434-92fbcf53809c.png

图 1:小程序的回调模块

7208cee8-00cc-11f0-9434-92fbcf53809c.png

图 2:小程序的fifo函数模块

2.

fifo函数概述

fifo是一种数据结构或缓冲机制,它遵循先入先出的原则。在数据接收过程中,最早进入 fifo的数据会被最先处理或读取。fifo 有一个输入端口和一个输出端口。数据从输入端口依次进入 fifo缓冲区,然后按照进入的顺序在缓冲区中排队等待。当需要读取数据时,从输出端口按照先入先出的顺序将数据取出。这样可以确保数据的接收和处理顺序与它们到达的顺序一致,避免数据混乱或丢失。fifo的优点是用户可以在自己的任务或者线程中根据需要从驱动中读取数据,延时等可以自己控制。缺点是异步的方式,是在报文已经收发完成之后才会将数据取出进行处理。

典型应用:

在汽车发动机、变速器等动力总成系统中,多个传感器和执行器通过 CAN 总线进行通信。fifo用于接收来自各个传感器(如节气门位置传感器、曲轴位置传感器)的 CAN 报文。这些报文包含了发动机运行状态、转速、负荷等关键信息。fifo 按照报文到达的先后顺序存储,发动机控制单元(ECU)从 fifo 中依次读取报文,进行数据分析和处理,进而调整喷油时间、点火提前角等参数,确保发动机在不同工况下都能高效、稳定运行。

3.

fifo函数读取报文功能实现

3.1 功能实现


3.1.1 读取CAN报文

使用fifo读取缓存报文之前,需要先调用com.tsfifo_enable_receive_fifo()函数。本小节将提供一个简单示例,可参考以下步骤。

【步骤1】新建程序启动事件,将使能fifo的函数添加到该事件函数里。如图 3。

7240904e-00cc-11f0-9434-92fbcf53809c.png

图 3: 程序启动事件

【步骤2】新建按键事件,将读取fifo的函数添加到该事件函数里。如图 4。

72795ee2-00cc-11f0-9434-92fbcf53809c.png

图 4: 按键事件

【步骤3】新建程序停止事件,将取消使能fifo的函数添加到该事件函数里。如图 5。

72a80d50-00cc-11f0-9434-92fbcf53809c.png

图 5: 程序停止事件

【源码如下】

72d6c2bc-00cc-11f0-9434-92fbcf53809c.png

3.1.2 读取LIN报文

使用fifo读取缓存报文之前,需要先调用com.tsfifo_enable_receive_fifo()函数。可参考3.1.1读取CAN报文小节。

【源码如下】

72e2ab40-00cc-11f0-9434-92fbcf53809c.png

3.1.3 读取FlexRay报文

使用fifo读取缓存报文之前,需要先调用com.tsfifo_enable_receive_fifo()函数。可参考3.1.1读取CAN报文小节。

【源码如下】

73001298-00cc-11f0-9434-92fbcf53809c.png

3.2 实现效果

启动小程序,发送报文,打印的消息可在【分析】-【系统消息】处查看,如图 6。

7343a896-00cc-11f0-9434-92fbcf53809c.png

图 6: 实现效果

4.

TSMaster fifo函数说明

4.1 fifo函数说明

4.1.1 com.tsfifo_enable_receive_fifo

736ae0be-00cc-11f0-9434-92fbcf53809c.png

4.1.2 com.tsfifo_disable_receive_fifo

738a9332-00cc-11f0-9434-92fbcf53809c.png

4.1.3 com.tsfifo_enable_receive_error_frames

739f88b4-00cc-11f0-9434-92fbcf53809c.png

4.1.4 com.tsfifo_disable_receive_error_frames

73cd154a-00cc-11f0-9434-92fbcf53809c.png

4.1.5 com.tsfifo_add_can_canfd_pass_filter

73e14a10-00cc-11f0-9434-92fbcf53809c.png

4.1.6 com.tsfifo_delete_can_canfd_pass_filter

73f73e4c-00cc-11f0-9434-92fbcf53809c.png

4.1.7 com.tsfifo_add_lin_pass_filter

7416c7c6-00cc-11f0-9434-92fbcf53809c.png

4.1.8 com.tsfifo_delete_lin_pass_filter

7445e38a-00cc-11f0-9434-92fbcf53809c.png

4.1.9 com.tsfifo_clear_can_receive_buffers

746a91b2-00cc-11f0-9434-92fbcf53809c.png

4.1.10 com.tsfifo_clear_canfd_receive_buffers

74889428-00cc-11f0-9434-92fbcf53809c.png

4.1.11 com.tsfifo_clear_lin_receive_buffers

74a13140-00cc-11f0-9434-92fbcf53809c.png

4.1.12 com.tsfifo_clear_flexray_receive_buffers

74b9c1b0-00cc-11f0-9434-92fbcf53809c.png

4.1.13 com.tsfifo_read_can_buffer_frame_count

74d580ee-00cc-11f0-9434-92fbcf53809c.png

4.1.14 com.tsfifo_read_can_rx_buffer_frame_count

74f92850-00cc-11f0-9434-92fbcf53809c.png

4.1.15 com.tsfifo_read_can_tx_buffer_frame_count

750e2a5c-00cc-11f0-9434-92fbcf53809c.png

4.1.16 com.tsfifo_read_canfd_buffer_frame_count

751cd52a-00cc-11f0-9434-92fbcf53809c.png

4.1.17com.tsfifo_read_canfd_rx_buffer_frame_count

7534ed9a-00cc-11f0-9434-92fbcf53809c.png

4.1.18 com.tsfifo_read_can_tx_buffer_frame_count

753d9882-00cc-11f0-9434-92fbcf53809c.png

4.1.19 com.tsfifo_read_lin_buffer_frame_count

7554a126-00cc-11f0-9434-92fbcf53809c.png

4.1.20 com.tsfifo_read_lin_rx_buffer_frame_count

75614980-00cc-11f0-9434-92fbcf53809c.png

4.1.21 com.tsfifo_read_lin_tx_buffer_frame_count

757b1856-00cc-11f0-9434-92fbcf53809c.png

4.1.22 com.tsfifo_read_flexray_buffer_frame_count

758f1f5e-00cc-11f0-9434-92fbcf53809c.png

4.1.23 com.tsfifo_read_flexray_rx_buffer_frame_count

75ac4de0-00cc-11f0-9434-92fbcf53809c.png

4.1.24 com.tsfifo_receive_can_msgs

75c2ee9c-00cc-11f0-9434-92fbcf53809c.png

4.1.25 com.tsfifo_receive_canfd_msgs

75d2b9bc-00cc-11f0-9434-92fbcf53809c.png

4.1.26 com.tsfifo_receive_lin_msgs

75ec9b48-00cc-11f0-9434-92fbcf53809c.png

4.1.27 com.tsfifo_receive_flexray_msgs

75f90540-00cc-11f0-9434-92fbcf53809c.png

5.

缩写

BLF

Binary Logging Format

CAN

Controller Area Network

CAN FD

CAN with Flexible Data-Rate

ID

Identifier

LIN

Local Interconnect Network

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • fifo
    +关注

    关注

    3

    文章

    402

    浏览量

    44895
  • 函数
    +关注

    关注

    3

    文章

    4384

    浏览量

    65132
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TSMaster 中不同总线报文消息过滤的操作方式

    TSMaster软件平台支持对不同总线(CAN、LIN、FlexRay)报文和信号的过滤,包括全局接收过滤、数据流过滤、窗口过滤、字符串过滤、可编程过滤,针对不同的总线信号过滤器的使用方法基本相
    的头像 发表于 06-22 08:21 ?2270次阅读
    <b class='flag-5'>TSMaster</b> 中不同总线<b class='flag-5'>报文</b>消息过滤的操作方式

    MPU6050 dmp读取数据FIFO溢出

    。据说解决的方法就是,不能只用一个dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more);函数。我
    发表于 04-15 01:05

    CAN通信实验报文对象的FIFO缓冲器应用

    关键词 CAN报文对象的FIFO模式应用摘 要 CAN通信实验
    发表于 11-07 14:18 ?33次下载

    FPGA之FIFO的原理概述

    FIFO队列不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,FIFO报文到达接口的先后顺序让
    的头像 发表于 11-29 07:04 ?4944次阅读

    MPU6050不讲武德,FIFO溢出始终无法解决,提高或降低读取速度都不得行

    抄了原子哥的驱动代码,放在了c8t6最小系统板上去跑,一切正常,自检原本通过不了,一顿操作后可以通过了,加速度角速度读取也OK,唯独读取FIFO中的数据读不出来具体为mpu_dmp_get_data
    发表于 12-06 14:51 ?4次下载
    MPU6050不讲武德,<b class='flag-5'>FIFO</b>溢出始终无法解决,提高或降低<b class='flag-5'>读取</b>速度都不得行

    新功能发布 | TSMaster诊断功能的典型应用

    TSMaster典型应用前面几个章节主要介绍了关于TSMaster诊断模块的一些基础操作详解,相信大家对TSMaster诊断模块也有了一定的了解和认知。本章节主要介绍关于TSMaster
    的头像 发表于 07-04 09:27 ?1890次阅读
    新功能发布 | <b class='flag-5'>TSMaster</b>诊断功能的典型应用

    应用笔记 | TSMaster如何代码自动发送LIN报文

    前面我们出了关于TSMaster应用笔记系列的几篇文章,小伙伴反馈都非常实用,也是工程师们在使用TSMaster软件中切切实实会遇到的问题,今天继续给大家带来应用笔记系列文章——如何代码自动发送
    的头像 发表于 08-25 11:05 ?2482次阅读
    应用笔记 | <b class='flag-5'>TSMaster</b>如何代码自动发送LIN<b class='flag-5'>报文</b>

    应用笔记 | TSMaster快速入门篇(2)-报文回放

    支持格式TSMaster的数据回放默认支持blf格式(未来会增加对其他格式的支持)。如果需要分析其他数据格式的log文件,需要通过文件转换器从其他格式转成blf格式。一离线回放离线回放也就是通常所说
    的头像 发表于 11-23 09:35 ?5101次阅读
    应用笔记 | <b class='flag-5'>TSMaster</b>快速入门篇(2)-<b class='flag-5'>报文</b>回放

    干货分享 | TSMaster的记录功能需求与实践

    TSMaster记录模块怎么开始使用?1.2测试时总是忘记开始记录报文,如何实现工程启动后【自动记录】报文trace?1.3我想实现【不同通道】的【特定报文】记
    的头像 发表于 04-20 10:20 ?2538次阅读
    干货分享 | <b class='flag-5'>TSMaster</b>的记录功能需求与实践

    干货分享 | TSMaster小功能之如何在图形中监控某一条DBC报文发送周期?

    今天给大家介绍TSMaster小功能之如何在图形中监控某一条DBC报文发送周期,想要实现这个功能,需要借助TSMaster的小程序功能来实现。步骤一1.创建一个用户变量Cycle,用于在图形中显示
    的头像 发表于 05-09 15:48 ?2010次阅读
    干货分享 | <b class='flag-5'>TSMaster</b>小功能之如何在图形中监控某一条DBC<b class='flag-5'>报文</b>发送周期?

    单片机自定义协议FIFO高效发送数据方法

    单片机自定义协议FIFO高效发送数据方法
    的头像 发表于 09-28 17:32 ?1146次阅读
    单片机自定义协议<b class='flag-5'>FIFO</b><b class='flag-5'>高效</b>发送数据<b class='flag-5'>方法</b>

    TSMaster报文发送的信号生成器操作说明

    信号生成器功能是TSMaster分析中的报文发送模块。信号生成器用于发送和配置每个CAN/LIN信号的值变化行为,简而言之,这是一个可以控制和调整CAN/LIN信号值的功能。我们可选择的信号生成器
    的头像 发表于 12-23 08:21 ?1628次阅读
    <b class='flag-5'>TSMaster</b><b class='flag-5'>报文</b>发送的信号生成器操作说明

    TSMaster VLAN配置方法

    ,以太网目录Catalog1.VLAN的配置方法2.TCP/IP通讯带VLAN测试1.TSMaster配置VLANVLAN配置流程如下:1)VLAN配置窗口位于菜单
    的头像 发表于 05-18 08:21 ?845次阅读
    <b class='flag-5'>TSMaster</b> VLAN配置<b class='flag-5'>方法</b>

    详解TSMaster CAN 与 CANFD 的 CRC E2E 校验方法

    关键字:TSMaster,CAN/CANFD,CRC校验,E2E校验目录Catalog1.CRC/E2E在报文传输过程中的应用2.基于TSMaster剩余总线仿真的
    的头像 发表于 05-25 08:21 ?4531次阅读
    详解<b class='flag-5'>TSMaster</b> CAN 与 CANFD 的 CRC E2E 校验<b class='flag-5'>方法</b>

    软件更新 | TSMaster 202504 版本已上线!三大功能让车载测试更智能

    车载测试的智能化时代正在加速到来!TSMaster202504版本正式发布,本次更新聚焦以太网通信与数据高效处理,带来三大核心功能升级—以太网报文信息过滤、XCPonEthernet支持、按时间范围
    的头像 发表于 05-23 20:05 ?422次阅读
    软件更新 | <b class='flag-5'>TSMaster</b> 202504 版本已上线!三大功能让车载测试更智能