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.

[参考译文] CCS/TMS570LS1224:NHET 指令含义

Guru**** 2041660 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/820063/ccs-tms570ls1224-nhet-instruction-meaning

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

工具/软件:Code Composer Studio

你(们)好

我通过 HAL 生成了 PWM 代码、但我无法理解这两行代码的含义

hetRAM->指令[(PWM << 1U)+ 41U].Control =((hetRAM->指令[(PWM << 1U)+ 41U].Control)&(~(UINT32)(0x00000018U)))|(操作<< 3U);
hetRAM->指令[(PWM << 1U)+ 41U].Data =((pwmPeriod * pwmDuty)/100U)<< 7U)+ 128U;

请说明发生了什么情况以及如何使用值班操作员。

为什么 pwmDuty 必须左移7位、然后添加128位

在控制设置中、为什么操作向左移动3位、为什么向左移动18位、或者随操作一起移动

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

    您好、Rajat、

    例如、这些是 pwmSetDuty 函数中使用的指令。 HALCoGen 使用模板高端计时器(HET)程序、然后根据 PWM 的用户配置和输入捕捉对其进行定制。

    以 PWM1的一组指令为例。 这是一组4条指令:

    CNT

    PWCNT

    DJZ

    MOV64

    (1<<1 + 41)处的指令是43号指令、这是与 PWM1相对应的 MOV64指令。 现在看看 TRM 中 MOV64指令的"控制"字段。

    首先读取控制字段、然后与~(0x18)进行 AND 运算、然后与所选的"操作"进行 OR 运算。 这基本上是一个只更新上述控制字段中"操作"的读取-修改-写入操作。

    现在考虑 MOV64指令的数据字段:

    该数据字段由7位高分辨率数据字段和25位环路分辨率数据字段组成。 此 HALCoGen 示例不使用高分辨率功能、因此不使用"HR 数据"字段。 这就是更新后的数据值被7移位、然后添加128的偏移(2^7 = 128)的原因。

    希望这对您有所帮助。

    此致、Sunil