ZHCA963 August   2019 TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1

 

  1.   使用 C2000可配置逻辑块 (CLB) 进行设计
    1.     商标
    2. 简介
    3. 补充在线信息
    4. 设计概述
    5. 对输入采样
    6. 在 FSM 子模块中部署状态机
    7. 生成 PWM 信号
    8. 修改 PWM 周期和占空比
    9. 已完成的设计
    10. 输入 X-BAR、输出 X-BAR 和 CLB X-BAR
      1. 9.1 使用 X-BAR 将信号导入到 CLB 逻辑块中
      2. 9.2 使用 X-BAR 从 CLB 逻辑块中导出信号
    11. 10 运行示例项目
      1. 10.1 设置和连接
      2. 10.2 测试状态和转换
        1. 10.2.1 步骤 1
        2. 10.2.2 步骤 2
        3. 10.2.3 步骤 3
        4. 10.2.4 步骤 4
        5. 10.2.5 步骤 5
      3. 10.3 测试 PWM 周期和占空比
    12. 11 总结
    13. 12 参考文献

使用 X-BAR 将信号导入到 CLB 逻辑块中

要将信号从 GPIO 导入到 CLB(BOUNDARY INz,其中的 z 是 0 到 7 的任意数字),必须配置输入 X-BAR 和 CLB X-BAR。将信号从 GPIO 导入到 CLB 时,需要执行的步骤包括:

  1. 照常配置 GPIO:
    1. 设置方向:输入/输出。
    2. 启用/禁用上拉。
    3. 设置其他 GPIO 配置。
  2. 使用输入 X-BAR(例如 INPUTx,其中的 x 是 1 到输入最大数量之间的任意数字),并选择所需的 GPIO。
  3. 在 CLB 模块内,为 BOUNDARY INz 选择全局输入而不是局部输入。
  4. 使用 CLB X-BAR 选择输入 X-BAR 的 INPUTx 作为 AUXSIGy(其中的 y 是 0 到 7 的任意数字)。
  5. 选择 AUXSIGy 作为 BOUNDARY INz 的全局输入。
  6. 禁用 GPREG 输入,启用外部输入(全局输入 = AUXSIGy 输入 = INPUTx 输入 = GPIO 输入)。

Figure 16 显示了如何从全局输入、局部输入或 GPREG 位中选择 CLB BOUNDARY 输入。

spruii0-input-filter.gifFigure 16. CLB BOUNDARY 输入多路复用

以下代码片段展示了如何使用器件驱动程序库来完成上述步骤。

// // Configure GPIO4 for Button // GPIO_setPinConfig(GPIO_4_GPIO4); GPIO_setDirectionMode(4, GPIO_DIR_MODE_IN); GPIO_setPadConfig(4, GPIO_PIN_TYPE_PULLUP); // // Configure Input-XBAR INPUT1 to GPIO4 // XBAR_setInputPin(XBAR_INPUT1, 4); // // Configure CLB-XBAR AUXSIG0 as INPUT1 // XBAR_setCLBMuxConfig(XBAR_AUXSIG0, XBAR_CLB_MUX01_INPUTXBAR1); XBAR_enableCLBMux(XBAR_AUXSIG0, XBAR_MUX01); CLB_configLocalInputMux(CLB1_BASE, CLB_IN0, CLB_LOCAL_IN_MUX_GLOBAL_IN); CLB_configGlobalInputMux(CLB1_BASE, CLB_IN0, CLB_GLOBAL_IN_MUX_CLB_AUXSIG0); CLB_configGPInputMux(CLB1_BASE, CLB_IN0, CLB_GP_IN_MUX_EXTERNAL);