当前位置: 首页 > news >正文

TI dsp FSI (快速串行接口)

简介

        快速串行接口(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 beginningFSI_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);
}

并行数据帧

相关文章:

  • WPF【11_10】WPF实战-重构与美化(配置Material UI框架)
  • Unity3D仿星露谷物语开发55之保存游戏到文件
  • 【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​
  • 深入理解C#中的LINQ:数据查询的终极利器
  • 人工智能100问☞第36问:什么是BERT?
  • 销讯通CRM——大健康行业CRM解决方案
  • Typescript学习教程,从入门到精通,TypeScript 泛型与类型操作详解(二)(17)
  • Unity开发之Webgl自动更新程序包
  • 华为OD机试真题——矩形相交的面积(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 线性代数入门:轻松理解二阶与三阶行列式的定义与理解
  • 【课堂笔记】EM算法
  • 华为OD机试真题——AI面板识别(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Windows MongoDB C++驱动安装
  • JavaScript性能优化实战技术文章大纲
  • 【计算机网络】第2章:应用层—Web and HTTP
  • MySQL、PostgreSQL、Oracle 区别详解
  • 重新测试deepseek Jakarta EE 10编程能力
  • 2025LitCTF 复现
  • Java 对接 Office 365 邮箱全攻略:OAuth2 认证 + JDK8 兼容 + Spring Boot 集成(2025 版)
  • DEEPSEEK帮写的STM32消息流函数,直接可用.已经测试
  • O2O网站制作需要多少钱/网站创建的流程是什么
  • 博客网站模板下载/个人引流推广怎么做
  • 银川做网站最好的公司有哪些/国内免费推广产品的网站
  • 海口做网站供应商/信息流优化师
  • 车公庙做网站/郑州网站建设外包
  • 微网站 留言板/廊坊网站建设优化