ZHCAA38E August   2021  – January 2023 TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   将快速串行接口 (FSI) 应用于应用中的多个器件
  2.   商标
  3. 1FSI 模块简介
  4. 2FSI 应用
  5. 3握手机制
    1. 3.1 菊花链握手机制
    2. 3.2 星型握手机制
  6. 4发送和接收 FSI 数据帧
    1. 4.1 FSI 数据帧配置 API
    2. 4.2 开始传输数据帧
  7. 5菊花链拓扑测试
    1. 5.1 两器件 FSI 通信
      1. 5.1.1 CPU 控制
      2. 5.1.2 DMA 控件
      3. 5.1.3 硬件控制
    2. 5.2 三器件 FSI 通信
      1. 5.2.1 CPU/DMA 控制
      2. 5.2.2 硬件控制
        1. 5.2.2.1 三器件菊花链系统的偏斜补偿
          1. 5.2.2.1.1 CPU/DMA 控制
          2. 5.2.2.1.2 硬件控制
  8. 6星型拓扑测试
  9. 7通过 FSI 进行事件同步
    1. 7.1 引言
      1. 7.1.1 分布式系统的事件同步需求
      2. 7.1.2 采用 FSI 事件同步机制的解决方案
      3. 7.1.3 FSI 事件同步机制功能概述
    2. 7.2 C2000Ware FSI EPWM 同步示例
      1. 7.2.1 C2000Ware 示例工程的位置
      2. 7.2.2 软件配置综述
        1. 7.2.2.1 主控器件配置
        2. 7.2.2.2 节点器件配置
      3. 7.2.3 1 主控和 2 节点 F28002x 器件菊花链测试
        1. 7.2.3.1 硬件设置和配置
        2. 7.2.3.2 试验结果
      4. 7.2.4 1 主控和 8 节点 F28002x 器件菊花链测试
        1. 7.2.4.1 硬件设置和配置
        2. 7.2.4.2 试验结果
      5. 7.2.5 C2000 理论上的不确定性
    3. 7.3 FSI 事件同步的其他提示和用法
      1. 7.3.1 运行示例
      2. 7.3.2 目标配置文件
      3. 7.3.3 星型配置事件同步的用法
  10. 8参考文献
  11. 9修订历史记录

CPU 控制

  • 测试条件

    器件 1 发送数据 -> 器件 2 接收数据 -> 器件 2 CPU 将 RX 数据移至 TX 缓冲区和寄存器 -> 器件 2 通过将接收到的数据转发回至器件 1 的软件触发 FSI TX -> 器件 1 接收返回的数据,CPU 验证这些数据是否与最初发送的 TX 数据相匹配。

  • 测试案例

    8 个字的数据长度,2 条数据线,TXCLK = 50MHz,启用设置 ①(表 5-1)。

在测试中,当通信期间发生特定事件时,会在软件内翻转通用输入/输出 (GPIO),并使用示波器对其进行测量以获取相应的时序数据。在#ID-7CD0D2B9-E0CF-4048-E67C-7DA3F4712D86中,绿色信号表示器件 1(主控器件)的 GPIO 翻转,品红色信号表示器件 2(节点器件)的 GPIO 翻转。

GUID-FAD8B751-A7D2-4C3C-A33B-908B2D0F973E-low.png图 5-3 采用 CPU 控件的数据传输测试

根据#ID-7CD0D2B9-E0CF-4048-E67C-7DA3F4712D86中所示的结果,获取的数据传输时间大约为 1.4µs。为了计算传输速度,应考虑总数据长度。表 5-2 显示了数据帧的通用结构,该结构可以分为两部分:有效数据位和开销位。

  • 有效数据位:包括 8 位用户数据、16 位数据字和 8 位 CRC 字段
  • 开销位:包括前同步码、SOF、帧类型、EOF 和后同步码字段

因此,理论上可以得出 8 个字的理想传输时间,如表 5-3中所示。

应该注意的是,两条数据线仅适用于有效数据位,因此一个 FSITXCLK 周期提供 4 个有效数据位,而一个 FSITXCLK 周期仅提供 2 个开销位。因此,8 个数据字需要 48 个 FSITXCLK 周期,从而可以计算出传输时间,如#EQUATION-BLOCK_LRC_5FS_SQB中所示。

Equation1. (FSITXCLK 周期数)/(FSITXCLK 频率) = 48/50MHz = 0.96μs

因此,理论传输速度为 175Mbps(168/0.96µs),而测试速度为 120Mbps,传输时间为 1.4µs,这是由于测试的传输时间包括进入 ISR(用于翻转 IO 引脚)以及隔离器、收发器、电缆等引入的延迟。如果改为一条数据线,则理论传输速度为 100Mbps,而测试速度为 80Mbps,传输时间为 2.1µs。

#ID-7CD0D2B9-E0CF-4048-E67C-7DA3F4712D86的另一个发现是,使用 FSI driverLib 函数在节点器件中将数据从 FSIRX 缓冲区移至 FSITX 缓冲区需要一些时间,该时间大约为 4.9µs。这将是区分后续部分所示 DMA 控制和硬件控制的关键因素。

注: 可以通过直接对 FSI 寄存器进行读写(而不是使用提供的 driverLib 函数)来优化在 FSI 缓冲区和寄存器之间移动数据的时间。
表 5-2 数据帧结构
IDLE 前导码 SOF 帧类型 用户数据 数据字 CRC 帧标签 EOF 后同步码 IDLE
1111 1001 0011 8 位 N 个字 8 位 4 位 0110 1111
表 5-3 针对 8 个字计算的传输时间
有效数据位(位) 开销位(位) 总长度(位) 有效数据位的 FSITXCLK 周期(周期) 开销位的 FSITXCLK 周期(周期) 总数据传输时间 (us)
144 24 168 36 12 0.96