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 逻辑块中导出信号

要将信号从 CLB (BOUNDARY OUTx) 导出到 GPIO,对于 OUT4 和 OUT5,请使用输出 X-BAR,OUT0-3 和 OUT6-7 会在 GPIO 处拦截特定外设输出。

如果使用 OUT4 和 OUT5,请使用输出 X-BAR 并执行以下步骤:

  1. 照常配置 GPIO。
    1. 设置方向:输入/输出。
    2. 启用/禁用上拉。
    3. 设置其他 GPIO 配置。
  2. 将 PINMUX 配置为使用输出 X-BAR。

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

// // Configure GPIO31 for OUTPUTXBAR8 // GPIO_setPinConfig(GPIO_31_OUTPUTXBAR8); GPIO_setDirectionMode(31, GPIO_DIR_MODE_OUT); GPIO_setPadConfig(31, GPIO_PIN_TYPE_STD); // // Configure OUTPUT-XBAR OUTPUT8 as CLB1_OUT4 // XBAR_setOutputMuxConfig(XBAR_OUTPUT8, XBAR_OUT_MUX01_CLB1_OUT4); XBAR_enableOutputMux(XBAR_OUTPUT8, XBAR_MUX01); // // Configure GPIO34 for OUTPUTXBAR1 // GPIO_setPinConfig(GPIO_34_OUTPUTXBAR1); GPIO_setDirectionMode(34, GPIO_DIR_MODE_OUT); GPIO_setPadConfig(34, GPIO_PIN_TYPE_STD); // // Configure OUTPUT-XBAR OUTPUT1 as CLB1_OUT5 // XBAR_setOutputMuxConfig(XBAR_OUTPUT1, XBAR_OUT_MUX03_CLB1_OUT5); XBAR_enableOutputMux(XBAR_OUTPUT1, XBAR_MUX03);

如果进行外设输出拦截(逻辑块 OUT0-3 和 OUT6-7):

  1. 为此特定外设照常配置 PINMUX。
    1. 示例:为 EPWM1A 配置 GPIO0。
  2. 允许使用 OUT_EN 寄存器进行 CLB OUT0-3 和 OUT6-7 输出。

GPIO 的输出是 CLB OUT 而非外设输出。TRM 中的外设信号多路复用器表提到了哪个 CLB OUT 对应于哪个外设输出。以下代码片段展示了如何使用器件驱动程序库来完成上述步骤。

// // Configure GPIO0 for EPWM1A which will be overriden by CLB0_OUT0 // GPIO_setPinConfig(GPIO_0_EPWM1A); GPIO_setDirectionMode(0, GPIO_DIR_MODE_OUT); GPIO_setPadConfig(0, GPIO_PIN_TYPE_STD); // // Configure GPIO1 for EPWM1B which will be overriden by CLB0_OUT1 // GPIO_setPinConfig(GPIO_1_EPWM1B); GPIO_setDirectionMode(1, GPIO_DIR_MODE_OUT); GPIO_setPadConfig(1, GPIO_PIN_TYPE_STD);

最后,必须启用 CLB 逻辑块输出。如下代码片段将使用器件驱动程序库完成此任务。

CLB_setOutputEnableMask(CLB1_BASE, 1 << 0 | 1 << 2);