TI dsp FSI (快速串行接口)

news2025/6/3 1:06:59

简介

        快速串行接口(FSI - Fast Serial Interface )模块是一种串行通信外设,能够在隔离设备之间实现可靠的高速通信。在两个没有共同电源和接地连接的电子电路必须交换信息的情况下,电气隔离设备被使用。

        虽然隔离设备促进了信号通信,但它们也会在信号线上引入较大的延迟,并增加信号之间的时序差异。FSI 专门设计用于确保系统在涉及隔离障碍的通信场景中进行可靠的高速通信,同时不添加额外的组件。
        FSI 包括独立的发送器(FSITX)和接收器(FSIRX)核心。FSITX 和 FSIRX 核心可以独立配置和操作。

1、内部框架图

2、应用场景

目前新一代 TI C2000:

F28004x 只提供 1 个发送端口和 1 个接收端口,只适用于菊花链拓扑
F2838x 提供 2 个发送端口和 8 个接收端口,还可以用于实现一对多的星型拓扑

FSI - 数据采样

一个时钟周期内,有2个边沿(一个上升沿和一个下降沿),与硬件电气数据线的个数无关,而是与时钟clock周期脉冲的边沿相关。

(1) SDR (Single Data Rate)

  • 采样方式:仅在单一时钟边沿(上升沿或下降沿)采样数据。

  • 数据吞吐量:每周期传输1个数据

(2) DDR (Double Data Rate)

  • 采样方式:在时钟的上升沿和下降沿均采样数据。

  • 数据吞吐量:每周期传输2个数据(速率翻倍)。

FSI - 前导码、后导码

前导码(1111)、后导码(1111)

前导码接收端如何识别帧的开始?发送固定模式的时钟边沿(如4个边沿),接收端检测到此模式即触发帧接收。
后导码如何避免帧间数据粘连或噪声误触发?发送固定结束信号,接收端在检测到后导码后停止采样并等待下一帧前导码。
双沿采样如何提高数据传输速率?在时钟的上升沿和下降沿均传输数据(DDR模式),带宽翻倍。
边沿计数同步如何确保发送端和接收端的时钟相位对齐?前导码的固定边沿数作为同步基准,接收端据此调整采样窗口。

FSI - FLUSH sequence

Flush核心:信号翻转,先数据,后时钟。

实际抓取的波形:

FSI - 线延迟

delay line control 延迟线功能:

FSI - 前、后导码和Flush区别

        FLUSH 链路同步是指通过特定的信号序列(FLUSH Pattern)强制发送端与接收端的时钟和数据状态对齐,以确保通信链路处于已知且稳定的初始状态。

区别:

对比项FLUSH Pattern前导码(Preamble)后导码(Postamble)
核心目的链路同步与状态复位帧起始同步帧结束标识
触发时机初始化、错误恢复、帧间空闲时每个数据帧传输前每个数据帧传输后
信号类型数据线 + 时钟线协同切换仅时钟边沿仅时钟边沿
时序特征数据线先切换,时钟线后切换固定时钟边沿(无数据)固定时钟边沿(无数据)
典型应用场景通信链路初始化、错误恢复、清除残留数据帧同步、时钟相位校准隔离帧间数据,防止粘连
配置参数数据线切换次数、时钟边沿数时钟边沿数时钟边沿数

FSI - 帧格式

eg:

PING帧 TAG0 


以下是帧结构的不同阶段详细描述:
Idle State
        在 Idle State 下,时钟 clk 和数据线D0、D1 默认都保持高电平,即非活动状态。
Preamble
        前导码阶段包含四个时钟边沿(或两个完整时钟脉冲),数据信号保持高电平。这些
时钟边沿用于清空接收逻辑,并准备接收新的帧
Start of Frame
        包含两个时钟脉冲(4个边沿,产生4bit的数据),数据线上传输四位数据“1001”。
Frame Type
        Frame Type 包含两个时钟脉冲,传输帧类型的 4 位编码到数据线上。在发送帧之前,发射机必须设置 TX_FRAME_CTRL.FRAME_TYPE字段。接收到的帧类型存储在RX_FRAME_INFO.FRAME_TYPE 中。
User Data
        User Data 阶段包含完全可配置的用户数据字段。对该字段的使用没有限制。此阶段仅适
用于数据帧。要发送的用户数据通过写入 TX_FRAME_TAG_UDATA.USER_DATA 设置。接
收到的用户数据存储在 RX_FRAME_TAG_UDATA.USER_DATA 中。
Data
        Data 阶段包含正在传输的数据。数据从发射机的发送缓冲区中提取,并将放置在接收机
的接收缓冲区中,第一个 word 首先传输。此阶段仅存在于数据帧中,根据发送的帧类型不同,
此阶段可以包含从 1 到 16 个 word。关于数据帧的更多信息可以在第 28.3.4.2.3 节中找到。
CRC Byte
        CRC Byte 包含传输数据的 CRC。此阶段的值可以基于硬件或软件,具体取决于
TX_OPER_CTRL_LO.SW_CRC 位的设置。有关 CRC 如何在发送机和接收机模块中生成或使
用的更多信息,请参阅 CRC 子模块的模块特定部分。CRC 字节仅存在于数据帧中。
Frame Tag
        Frame Tag 包 含 4 位 用户定义的帧标签。对于数据帧,发射机将此标签提供给
TX_FRAME_TAG_UDATA.FRAME_TAG 位。Ping 帧使用 TX_PING_TAG.TAG 中定义的标签。
接收机可以在 RX_FRAME_TAG_UDATA.FRAME_TAG 中访问接收到的帧标签。
End of Frame
        包含四个时钟边沿,数据线上传输四位数据“0110”。
Postamble
        包含额外的四个时钟边沿,数据线保持高电平。在后导码后,时钟和数据线将
被驱动到它们的非活动状态,保持高电平。

FSI - 帧类型

PING帧

//
// Send the flush sequence
//
FSI_executeTxFlushSequence(FSITXA_BASE, PRESCALER_VAL);

//
// Send a ping frame with frame tag
//
void FSI_txPingFrame(FSI_FrameTag frameTag)
{
    FSI_setTxFrameTag(FSITXA_BASE, frameTag);
    FSI_setTxFrameType(FSITXA_BASE, FSI_FRAME_TYPE_PING);
    FSI_startTxTransmit(FSITXA_BASE);
}

错误帧

数据帧

// 使能DMA传输时,需要重新设置 发送触发源
FSI_setTxStartMode(FSITXA_BASE, FSI_TX_START_FRAME_CTRL_OR_UDATA_TAG);

// TX setting part
FSI_setTxFrameType(FSITXA_BASE, FSI_FRAME_TYPE_NWORD_DATA);
FSI_setTxSoftwareFrameSize(FSITXA_BASE, nWords);
FSI_setTxDataWidth(FSITXA_BASE, nLanes);

// 用户数据自定义
FSI_setTxUserDefinedData(FSITXA_BASE, txUserData);
FSI_setTxFrameTag(FSITXA_BASE, txDataFrameTag);

发送数据:
FSI_writeTxBuffer(FSITXA_BASE, txBufData, nWords, 0U);
FSI_startTxTransmit(FSITXA_BASE);

// Re-initialize flags and buffer pointer before next transmission
FSI_setTxBufferPtr(FSITXA_BASE, 0U);



void FSI_txDataFrame(uint16_t* buffer, uint16_t length, uint16_t Offset, FSI_FrameTag frameTag)
{
    FSI_setTxFrameTag(FSITXA_BASE, frameTag);

    // Set FSI TX circular buffer pointer back to beginning
    FSI_setTxBufferPtr(FSITXA_BASE, 0U);

    FSI_writeTxBuffer(FSITXA_BASE, buffer, length, Offset);
    FSI_startTxTransmit(FSITXA_BASE);
}
// RX setting part
FSI_setRxSoftwareFrameSize(FSIRXA_BASE, nWords);
FSI_setRxDataWidth(FSIRXA_BASE, nLanes);

// 数据帧读取
FSI_enableRxInterrupt(FSIRXA_BASE, FSI_INT1, FSI_RX_EVT_DATA_FRAME);

if (rxEventSts & FSI_RX_EVT_DATA_FRAME) {
    FSI_readRxBuffer(FSIRXA_BASE, rxDataArray, nWords, rxBufIndex);
}

并行数据帧

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

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

相关文章

责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)

一、责任链模式核心概念解析 (一)模式定义与本质 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其核心思想是将多个处理者对象连成一条链,并沿着这条链传递请求,直到有某…

wechat-003-学习笔记

1.路由跳转页面:携带的参数会出现在onlaod中的options中。 注意:原生小程序对路由传参的长度也有限制,过长会被截掉。 2.wx.setNavigationBarTitle(Object object) 动态设置当前页面的标题 3.在根目录中的app.json文件中配置 后台播放音乐的能…

【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知

文章概要: 本文是一篇详细的技术教程,介绍如何使用魔搭社区(ModelScope)的GPU资源来进行LLaMA-Factory的模型微调。文章分为11个主要步骤,从环境准备到最终的模型测试,系统地介绍了整个微调流程。主要内容包…

【数据结构】哈希表的实现

文章目录 1. 哈希的介绍1.1 直接定址法1.2 哈希冲突1.3 负载因子1.4 哈希函数1.4.1 除法散列法/除留余数法1.4.2 乘法散列法1.4.3 全域散列法 1.5 处理哈希冲突1.5.1 开放地址法1.5.1.1 线性探测1.5.1.2 二次探测1.5.1.3 双重探测1.5.1.4 三种探测方法对比 1.6.3 链地址法 2. 哈…

永磁同步电机控制算法--基于电磁转矩反馈补偿的新型IP调节器

一、基本原理 先给出IP速度控制器还是PI速度控制器的传递函数: PI调节器 IP调节器 从IP速度控制器还是PI速度控制器的传递函数可以看出,系统的抗负载转矩扰动能力相同,因此虽然采用IP速度控制器改善了转速环的超调问题,但仍然需要通过其他途…

RabbitMQ 应用 - SpringBoot

以下介绍的是基于 SpringBoot 的 RabbitMQ 开发介绍 Spring Spring AMQP RabbitMQ RabbitMQ tutorial - "Hello World!" | RabbitMQ 工程搭建步骤: 1.引入依赖 2.编写 yml 配置,配置基本信息 3.编写生产者代码 4.编写消费者代码 定义监听类,使用 RabbitListener…

基于递归思想的系统架构图自动化生成实践

文章目录 一、核心思想解析二、关键技术实现1. 动态布局算法2. 样式规范集成3. MCP服务封装三、典型应用场景四、最佳实践建议五、扩展方向一、核心思想解析 本系统通过递归算法实现了Markdown层级结构到PPTX架构图的自动转换,其核心设计思想包含两个维度: 数据结构递归:将…

OpenGL Chan视频学习-9 Index Buffers inOpenGL

bilibili视频链接: 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 函数网站: docs.gl 说明: 1.之后就不再单独整理网站具体函数了,网站直接翻译会…

Nginx安全防护与HTTPS部署实战

目录 前言一. 核心安全配置1. 隐藏版本号2. 限制危险请求方法3. 请求限制(CC攻击防御)(1)使用nginx的limit_req模块限制请求速率(2)压力测试验证 4. 防盗链 二. 高级防护1. 动态黑名单(1&#x…

JAVA重症监护系统源码 ICU重症监护系统源码 智慧医院重症监护系统源码

智慧医院重症监护系统源码 ICU重症监护系统源码 开发语言:JavaVUE ICU护理记录:实现病人数据的自动采集,实时记录监护过程数据。支持主流厂家的监护仪、呼吸机等床旁数字化设备的数据采集。对接检验检查系统,实现自动化录入。喜…

python:机器学习(KNN算法)

本文目录: 一、K-近邻算法思想二、KNN的应用方式( 一)分类流程(二)回归流程 三、API介绍(一)分类预测操作(二)回归预测操作 四、距离度量方法(一)…

【笔记】2025 年 Windows 系统下 abu 量化交易库部署与适配指南

#工作记录 前言 在量化交易的学习探索中,偶然接触到 2017 年开源的 abu 量化交易库,其代码结构和思路对新手理解量化回测、指标分析等基础逻辑有一定参考价值。然而,当尝试在 2025 年的开发环境中部署这个久未更新的项目时,遇到…

小程序 - 视图与逻辑

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言: “心有多大,舞台就有多大。” 📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒T…

ChatGPT Plus/Pro 订阅教程(支持支付宝)

订阅 ChatGPT Plus GPT-4 最简单,成功率最高的方案 1. 登录 chat.openai.com 依次点击 Login ,输入邮箱和密码 2. 点击升级 Upgrade 登录自己的 OpenAI 帐户后,点击左下角的 Upgrade to Plus,在弹窗中选择 Upgrade plan。 如果…

[蓝帽杯 2022 初赛]网站取证_2

一、找到与数据库有关系的PHP文件 打开内容如下,发现数据库密码是函数my_encrypt()返回的结果。 二、在文件夹encrypt中找到encrypt.php,内容如下,其中mcrypt已不再使用,所以使用php>7版本可能没有执行结果,需要换成较低版本…

安装 Node.js 和配置 cnpm 镜像源

一、安装 Node.js 方式一:官网下载(适合所有系统) 访问 Node.js 官网 推荐选择 LTS(长期支持)版本,点击下载安装包。 根据系统提示一步步完成安装。 方式二:通过包管理器安装(建…

MacOS内存管理-删除冗余系统数据System Data

文章目录 一、问题复现二、解决思路三、解决流程四、附录 一、问题复现 以题主的的 Mac 为例,我们可以看到System Data所占数据高达77.08GB,远远超出系统所占内存 二、解决思路 占据大量空间的是分散在系统中各个位置Cache数据; 其中容量最…

行为型:中介者模式

目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 5、注意事项 1、核心思想 目的:通过引入一个中介对象来封装一组对象之间的交互,解决对象间过度耦合、频繁交互的问题。不管是对象引用维护还是消息的转发&am…

光谱相机在生态修复监测中的应用

光谱相机通过多维光谱数据采集与智能分析技术,在生态修复监测中构建起‌“感知-评估-验证”‌的全周期管理体系,其核心应用方向如下: 一、土壤修复效能量化评估 ‌重金属污染动态监测‌ 通过短波红外(1000-2500nm)波…

吉林大学操作系统上机实验五(磁盘引臂调度算法(scan算法)实现)

本次实验无参考,从头开始实现。 一.实验内容 模拟实现任意一个磁盘引臂调度算法,对磁盘进行移臂操作列出基于该种算法的磁道访问序列,计算平均寻道长度。 二.实验设计 假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。磁盘是可…