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修订历史记录

菊花链握手机制

配置每个器件的 FSITX 和 FSIRX 模块之后,应实现握手机制以在实际数据传输之前准备链中的每个器件,因为在实际情况下器件可能按任意顺序加电。

为了简化数据流,将一个器件指定为主控器件,充当握手序列的驱动器,同时将菊花链环路中的其他 N-1 个器件指定为节点。在GUID-E2C6DDB3-72E9-48DD-9CA9-9F38166D49CF.html#ID-DF3F1BC8-F6FA-4660-F243-5F25112C9D26中的示例中,器件 1 将是主控器件。应注意,其他 N-1 个节点器件将共享相同的握手配置。

握手过程可以描述为:

  1. 对于所有器件,将 FSITX 的帧类型配置为 Ping 帧,并为 FSI INT1 向量上的“接收到 Ping 帧”事件启用接收器中断,以检测传入的信号。
  2. 开始 Ping 循环 0:
    1. 主控器件将刷新序列发送至第二个器件,后跟一个带有 Tag0 (0000) 的 Ping 帧;等待一段时间。如果主控器件接收到有效的 Ping 帧标签 Tag0,则继续执行第二个循环;否则再次迭代 Ping 循环 0。
    2. 节点器件进入等待循环以等待接收器中断。如果从前一个器件接收到有效的 Ping 帧标签 Tag0,则继续执行循环 1;否则再次迭代 Ping 循环 0。
  3. 开始 Ping 循环 1:
    1. 主控器件发送一个带有 Tag1 (0001) 的 Ping 帧;等待一段时间。如果主控器件接收到有效的 Ping 帧 Tag1,则握手序列完成,应用可以继续执行;否则再次迭代 Ping 循环 1。
    2. 节点器件发送刷新序列,后跟 Ping 帧 Tag0,然后等待接收器中断。如果接收到有效的 Ping 帧 Tag1,则发送 Ping 帧 Tag1,以表明握手序列已完成;否则再次迭代 Ping 循环 1。
  4. 握手完成。
GUID-DE275A0B-1BF0-4CAB-9829-BC5CF8749136-low.png图 3-1 菊花链握手序列

#ID-F8BD0ACB-20DB-492D-A53D-51AED0A04208中显示了简化的数据流。菊花链连接握手机制涉及两个 Ping 循环。Ping 循环 0 的作用是沿着器件链建立通信路径,而 Ping 循环 1 用于向节点确认通信路径良好。在 Ping 循环 0 中,节点器件等待从链中的前一个器件接收 Ping Tag0。成功接收 Ping Tag0 之后,会将其转发至链中的下一个器件。如果链中的器件未加电或没有为接收做好准备,则 Ping 循环 0 将失败。Ping 循环 0 成功(其中 Ping tag0 返回到主控器件中)之后,启动 Ping 循环 1 来通知节点器件握手序列已完成,并开始期待实际数据。

可以在测试的项目中找到握手函数,菊花链环路中的主控器件使用 handshake_lead(),其他 N-1 个器件使用 handshake_node()。