This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1227:TMS570LS1227 HET1针对 PWM 输出进行配置

Guru**** 2482105 points
Other Parts Discussed in Thread: HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/704736/tms570ls1227-tms570ls1227-het1-configure-for-pwm-output

器件型号:TMS570LS1227
主题中讨论的其他器件:HALCOGEN

您好!

根据我们的项目要求、我们需要20个 PWM 输出。

在 TMS570LS1227PGE 中、N2HET1外设有32个通道、每个通道都可被配置为 PWM 输出。 N2HET2外设有9个通道、其中6个通道与 N2HET1共用。 因此、总共32+9-6 = 35 PWM 输出可根据数据表进行配置。

但是 HALCoGen 软件工具(我们使用此工具来配置微控制器的 I/O)只允许在 N2HET1中有8个 PWM 输出、在 N2HET2中有8个 PWM 输出。

因此、通过 HALCoGen 软件 工具、我们只能使用 N2HET 配置16个 PWM 输出。 软件工具是否限制或微控制器本身是否限制一次只配置16 PWM?

是否有示例代码将 N2HET1的所有32个通道配置为 PWM 输出?
谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Abrar、

    HALCoGen 仅提供8 PWM、8边沿计数器和8输入捕捉的配置。 您可以为 PWM 配置所有通道(NHET1、NHET2)。

    我没有用于配置32个通道 PWM 的示例代码。 HET IDE 是生成 PWM 代码并进行仿真的好工具。
    http://www.ti.com/tool/HET_IDE
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢您的留言。
    我发现 halcogen 生成的代码与 HET IDE 生成的代码不同。HET IDE 不单独显示 HET1、HET2。
    您是否建议结合使用 Halcogen 和 HET IDE 来生成32个 N2HET1通道作为 PWM 输出?

    halcogen (V 04.06.00)为 HET1生成的代码如下:
    静态常量 hetINSTRUCTION_t het1PROGRAM[58U]=

    /* CNT:时基
    * -说明 = 0
    * -下一条指令 = 1
    * -条件下一条指令= na.
    * -中断 =不适用
    * -引脚 =不适用
    * -注册 = T
    *

    /*计划*/
    0x00002C80U、
    /*控件*/
    0x01FFFFFFU、
    /*数据*/
    0xFFFFFF80U、
    /*保留*/
    0x000000000000
    }、
    /* PWCNT:PWM 0 ->占空比
    * -说明 = 1
    * -下一条指令 = 2
    * -条件下一条指令= 2
    * -中断 = 1
    * -引脚 = 28
    *

    /*计划*/
    0x000055C0U、
    /*控件*/
    (0x00004006U |(UINT32)((UINT32) 28U << 8U)|(UINT32)((UINT32) 3U << 3U)、
    /*数据*/
    0x000000000000、
    /*保留*/
    0x000000000000
    }、



    HET IDE 生成的代码(V 03.05.01)如下:
    HET_MEMORY CONST HET_INIT0_PST[7]=


    /* L00_0 */

    0x00002C20、
    0x00000002、
    0x00000000、
    0x00000000
    }、

    /* L01_0 */

    0x00004000、
    0x00404048、
    0x000000C0、
    0x00000000
    }、



    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、通过 HALCoGen 生成的 PWM 代码与 HET IDE 中的示例代码不同、两者都起作用。

    您可以使用 PWCNT、DJZ、MOV64在 HET IDE 中生成 PWM。MOV64用于更新 PWCNT、DJZ、ECMP 等的参数
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的支持。

    但是、我不熟悉 HET IDE、发现很难按照手册同时生成20 PWM。

    是否有使用 HET IDE 的视频教程?

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Abrar、

    NHET IDE 有一个短视频:

    www.ti.com/.../foldersGallery.tsp
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    下面是我使用 HET IDE 尝试的代码。但是当我使用仿真进行观察时、它不会在8号引脚上生成 PWM。
    您是否建议对 TMS570微控制器进行编程并进行检查?
    谢谢。


    ; PWM 配置参数
    PIN_PWM0 .equ 8.
    Duty_LOAD0 .equ 353
    PERD_LOAD0 .equ 703
    ;/---------------------------------------------------------------- /
    ;/附加配置/
    ;/---------------------------------------------------------------- /
    PERD_CNT0 .equ 0
    Duty_CNT0 .equ 0
    ;/---------------------------------------------------------------- /
    ;/说明/
    ;/---------------------------------------------------------------- /
    ; N2HET 循环从 FIRST_INS 指令开始
    ;全局 CNT 指令
    FIRST_INS CNT{NEX=DPWM_0、REG=T、COMP=EQ、IRQ=OFF、max=33554431、data=33554431};
    ;DPWM_0是生成 PWM 信号的指令
    DPWM_0 PWCNT{NEXT = PPWM_0、hr_lr =低电平、COND_addr= PPWM_0、PIN_PWM0、ACTION = PULSEHI、
    REG=NONE、IRQ=OFF、DATA=Duty_CNT0、hr_data=0};
    PPWM_0 DJZ{NEX=FIRST_INS、COND_ADDR=DLOAD_0、RE=NONE、IRQ=OFF、DATA=PERD_CNT0};
    ;DLOAD_0用于在 DJZ 计数达到零(即一个时间段结束)时更新指令 DPWM_0
    DLOAD_0 MOV64{nute=LOAD_0、remote=DPWM_0、en_pin_action=off、con_addr=PPWM_0、
    PIN_PWM0、COMP_MODE=ECMP、ACTION =PULSEHI、REG=NONE、IRQ=ON、DATA=Duty_LOAD0};
    LOAD_0 MOV64{NEX=FIRST_INS、REMOV=PPWM_0、COND_addr=DLOAD_0、
    PIN_PWM0、COMP_MODE=ECMP、REG=NONE、IRQ=ON、DATA=PERD_LOAD0};
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Abrar、

    请在第一条 MOV64指令中启用引脚操作:

    ; PWM 配置参数

    PIN_PWM0 .equ 8.

    Duty_LOAD0 .equ 353

    PERD_LOAD0 .equ 703

    ;/---------------------------------------------------------------- /

    ;/附加配置/

    ;/---------------------------------------------------------------- /

    PERD_CNT0 .equ 0

    Duty_CNT0 .equ 0

    ;/---------------------------------------------------------------- /

    ;/说明/

    ;/---------------------------------------------------------------- /

    ; N2HET 循环从 FIRST_INS 指令开始

    ;全局 CNT 指令

    FIRST_INS CNT{NEX=DPWM_0、REG=T、COMP=EQ、IRQ=OFF、max=33554431、data=33554431};

    ;DPWM_0是生成 PWM 信号的指令

    DPWM_0 PWCNT{NEXT = PPWM_0、hr_lr =低电平、COND_addr= PPWM_0、PIN_PWM0、ACTION = PULSEHI、

    REG=NONE、IRQ=OFF、DATA=Duty_CNT0、hr_data=0};

    PPWM_0 DJZ{NEX=FIRST_INS、COND_ADDR=DLOAD_0、RE=NONE、IRQ=OFF、DATA=PERD_CNT0};

    ;DLOAD_0用于在 DJZ 计数达到零(即一个时间段结束)时更新指令 DPWM_0

    DLOAD_0 MOV64{nute=LOAD_0、remote=DPWM_0、en_pin_action=on、cond_addr=PPWM_0、pin=PIN_PWM0、comp_mode=ecmp、 action=PULSEHI、reg=none、IRQ=on、data=Duty_LOAD0};

    LOAD_0 MOV64{NEX=FIRST_INS、REMOV=PPWM_0、COND_addr=DLOAD_0、PIN_PWM0、COMP_MODE=ECMP、 REG=NONE、IRQ=ON、DATA=PERD_LOAD0};