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.

[参考译文] 使用多个 IO 引脚的 N2HET 示例

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/574785/n2het-example-using-multiple-io-pins

我使用的是 TMS520LS3137 Hercules 器件(请注意、器件型号在上面的器件型号字段中不起作用);我有一个单 IO 引脚 N2HET 应用在某种程度上基于正弦波演示运行、但我不知道如何将这个简单的控制环路扩展到多个 IO 引脚(例如3个电机相位)。  

您是否有可处理多个 IO 引脚的示例应用? 我认为 CNT/ECMP 对可能会扩展到每个 IO 引脚、但 CNT 会在每次执行时递增计数器值(因此第二条 ECMP 指令不能有第二条 CNT 指令)。 然后、我想只需要第二条 ECMP 指令来操作第二个 IO 引脚、但 Z 标志只在1个周期内保持有效、因此第二个 ECMP 将无法对 CNT (Z=1)操作执行操作。 那么、需要将3个不同引脚设置为3个不同值的应用是什么样的?

谢谢、

Jim

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

    您好、Jim、

    这是一个使用 MCMP 生成3个具有不同 PWM 频率的通道的示例。

    l00 CNT   { reg=a、IRQ=off、max=2}
    L01 MCMP{en_pin_action=on、order=REG_GE_data、pin=0、action=PULSELO、reg=A、 data=1、hr_data=64};
    L02 CNT   { reg=A、IRQ=OFF、max=3}
    L03 MCMP{en_pin_action=on、order=REG_GE_data、pin=1、action=PULSELO、reg=A、 data=2、hr_data=4};  
    L04 CNT   { REG=A、IRQ=OFF、max=4}
    L05 MCMP{en_pin_action=on、order=REG_GE_data、pin=2、action=PULSELO、reg=A、 data=1、hr_data=0};
    L06 BR     {NEXT = L00、COND_ADDR=L00、EVENT= NOCOND}

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ、
    感谢您的快速回复。 我有一个应用我认为是电机控制的常见应用--我需要3个 IO 引脚(3相),它们运行相同的计数周期(CNT 最大值)并同步。 3个 IO 引脚中的每个引脚都有一个独立的比较值(可能相同、可能不同)。

    因此、上面的循环只能在每个循环中递增计数器值一次、因为每个 CMP 需要查看每个可能的计数器值。 但手册中规定"在时间模式下、存储在数据字段[D31:7]中的计数器值在每个分辨率上无条件递增"、因此每个 CNT 都会递增计数器值。

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

    我想我了解示例程序的工作原理、但现在3个 MCMP 值需要在每个周期通过主 CPU 动态更新。 我有一个单 IO 引脚版本(如下所示):

    l00 CNT{reqnum=0、request=GENREQ、reg=A、IRQ=ON、max=PWM_PERIOD};

    L01 ECMP{NEXT = L03、hr_lr = HIGH、en_PIN_ACTION = ON、COND_addr=L02、PIN=PWM_PIN_NUM、
    action=PULSELO、reg=a、IRQ=off、data=init_compare、hr_data=init_HR_delay};

    L02 MOV32{remote=l01、type=IMTOREG&REM、reg=none、data=init_compare、hr_data=init_HR_delay};

    L03 BR{NEXT = L00、COND_ADDR=L00、EVENT= NOCOND}

    并且 ECMP-COMPARE-VALUE 通过 MOV32命令和 HTU 在中进行"DMA"操作。

    有没有一个示例说明 HTU 如何将3个不同的 UINT16值(3个不同的相电压)传输到3个不同的 MOV32数据位置? 或者、您能否建议另一种方法将3个不同的值传输到3个 ECMP/MCMP 命令?

    谢谢、

    Jim