主题中讨论的其他器件:HALCOGEN、
我想将20个 PWM 配置为 TMS570LS3137的输出、但 HALCOGEN 工具不支持它。 我使用 HET IDE 工具配置 PWM 生成、但配置结果不正确。 您是否有类似的 HET IDE 示例或告诉我如何配置以获得我想要的结果?
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.
我想将20个 PWM 配置为 TMS570LS3137的输出、但 HALCOGEN 工具不支持它。 我使用 HET IDE 工具配置 PWM 生成、但配置结果不正确。 您是否有类似的 HET IDE 示例或告诉我如何配置以获得我想要的结果?
你好,王先生
我知道您的演示内容。 实际上、HET-IDE 生成的存储器内容与 HALCOGEN 不同。 我是指 pwm0-pwm7。 因此、我尝试直接修改 het.c、以便根据 HALCOGEN 生成的现有内容获得第9个 PWM。 我只修改了 PWCNM、DJZ、MOV64 (周期更新和占空比)。 之后结果不佳、pwm0-pwm7未输出、第9个 PWM 也不输出。 我想知道如何直接修改 het.c。 我认为这是与 HET-IDE 的快速比较。 我想控制许多步进电机、因此20个 PWM 是我的项目中必须使用的。 感谢您的帮助。
您好、王先生、很抱歉在过去的一段时间里没有回复您。您告诉我、我使用 HET-IDE 工具来生成多通道 PWM。 由于使用了此工具、实际上 HAL 工具不使用 het.c 文件、而是使用 het-IDE 生成的相关文件。 这会阻止我使用 pwmSetDuty 函数来更改 PWM 占空比。 实际上、我尝试使用此函数、但没有任何效果。 初始化的占空比不变。 因此、我想知道在 HET-IDE 工具生成 PWM 波形后如何调整项目中的占空比。
谢谢
王联健
你好、Lijian、
通常、我们使用 ECMP 生成 PWM 信号、并使用 MOV32或 MOV64更新占空比。 通过直接更改 ECMP 的数据字段来更新占空比将导致丢失脉冲。
HET IDE 生成 C 文件。 您需要将 HALCOGen 生成的默认代码(het1PROGRAM[])替换为 HET IDE 生成的 c 文件(HET_INIT0_PST[])。
由 HAlCoGen 生成的代码:
静态常量 hetINSTRUCTION_t het1PROGRAM[58U]=
{
。
}
HET IDE 生成的代码:
HET_MEMORY CONST HET_INIT0_PST[4]=
{
…
}
您需要将 HET_MEMORY CONST HET_INIT0_PST[4]复制到项目中、并在 het.c 中更改 memcpy
更改:
(void) memcpy ((void *) hetRAM1、(const void *) het1PROGRAM、sizeof (het1PROGRAM));
至:
(void) memcpy ((void *) hetRAM1、(const void *) HET_INIT0_PST、sizeof (HET_INIT0_PST));
您不能直接使用 API 来更改占空比。
在 HALCoGen 生成的代码中、更改 PWM 占空比的指令为 (PWM << 1U)+ 41U、这是"此 PWM 的 MOV64指令"
对于 HET IDE 生成的代码(示例如下)、指令为 L01
;在周期结束时具有同步占空比更新的 PWM
l00 CNT{reg=a、IRQ=off、max=10}
L01 MOV32{remote=l02、z_cond = on、type=IMTOREG&REM、reg=none、data=1、 HR_DATA=20};CPU 写入此数据字段
L02 ECMP{en_pin_action=on、pin=0、action=PULSELO、reg=a、data=2、 HR_DATA=80}
L03 BR{NEXT = L00、COND_ADDR=L00、EVENT= NOCOND}