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

开始传输数据帧

有四种触发数据传输的方法,包括软件触发、外部触发 (EPWMx-SOCA/B)、使用 DMA 和硬件直通特性。对于软件触发方法,将 1 写入到 TX_FRAME_CTRL.START 寄存器位中或使用 driverLib 函数“FSI_startTxTransmit()”将开始传输。如果使用外部触发(例如 EPWMx-SOCA),则一旦发生外部触发信号,就会发送数据。

由于可以在每次通过 FSITX 或 FSIRX 模块完成数据帧发送或接收时生成 DMA 触发,因此它提供了一种方便的方法来传输和存储数据,尤其是海量数据。此处提供了使用 DMA 进行 FSI 通信的配置示例。

必须将 TX_OPER_CTRL_LO.START_MODE 设置为 0x2,这意味着向帧标签/用户数据字段写入数据可以触发传输,然后在 FSITX 上启用 DMA 事件:

FSI_setTxStartMode(FSITXA_BASE, FSI_TX_START_FRAME_CTRL_OR_UDATA_TAG);
FSI_enableTxDMAEvent(FSITXA_BASE);

需要使用两个连续的 DMA 通道来分别填充发送缓冲区和帧标签/用户数据字段。 依次使用两个通道,可以在设置帧标记和用户数据后,立即开始按照 TX_OPER_CTRL_LO.START_MODE 寄存器位中的配置进行传输。在示例代码中,使用了 DMA CH1 和 DMA CH2。此外,还务必注意,由于 FSI 发送缓冲区是一个 16 字的循环缓冲区,因此必须对超过 16 个字的数据启用饱和控制,否则超过 16 个字的数据会出现长度溢出。

DMA_configWrap(DMA_CH1_BASE, DMA_TRANSFER_SIZE_IN_BURSTS, 0, dest_WrapSize, 0);

此处,dest_WrapSize 表示在目标地址绕回之前要传输的脉冲数,因此 dest_WrapSize 应该为 16/nWords。这可以实现为使 DMA 连续向发送缓冲区馈送数据(由 FSITX 触发,DMA 连续模式启用)。

FSIRX 的配置与 FSITX 非常相似,不同之处在于,对于 RX 缓冲区和标签以及用户数据,DMA 通道没有顺序要求。在示例项目中,使用了 DMA CH3 和 DMA CH4。

利用硬件直通特性,可以在每个节点器件接收传入数据包的同时传输该数据包。这样一来,与其他触发模式不同,每个器件不必等到接收到数据包之后,就可以将其传输到菊花链中的下一个器件。有关此特性的更多详细信息,请参阅 F280039C 器件 TRM。要启用此特性,需要设置 TX_OPER_CTRL_LO.TDM_ENABLE 和 TX_OPER_CTRL_LO.SEL_TDM_IN 寄存器字段。或者,可以使用下面的 driverLib 函数。

FSI_enableTxTDMMode(FSITXA_BASE);
FSI_enableRxTDMMode(FSITXA_BASE);