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.

TMS570LS3137 如何实现带死区的可变占空比PWM?

Other Parts Discussed in Thread: HALCOGEN

HET IDE软件生成的PWM占空比是固定,在用户程序中修改哪个值可以实时改变占空比并且带死区?

  • Hi David,

    在用户程序中,可以通过修改HET指令的数据部分,来改变比较值,从而更改占空比。

    hetRAM1->Instruction[nU].Data = 0xXXXX;

    'n'为第n条指令。

    如果要加死区也很简单,就是两个HET引脚的比较值不一样,相差死区时间对应的比较值就可以了。

    Regards,

    Jay

  • 试过,这个方法可以。但是用HET IDE生成的.h文件和.c文件,怎么使能PWM周期中断?

  • Hi David,

    HET的中断使能操作如下。

    1. 操作HET的中断使能寄存器HETINTENAS。

    例:hetREG1->INTENAS |= (1<<15);                         // 使能了第15+0,15+32,15+64...条指令的中断

    2. 操作HET指令的Control字中的中断控制位,中断控制位在TRM中指令的介绍部分可以查看到。

    例:hetRAM1->Instruction[15U].Control |= 0x01;        // 假设第15条指令是ECMP指令

    3. 使能全局中断。

    _enable_interrupts();

    Regards,

    Jay

  • TMS570LS3137 的PWM用的是哪个定时器了?有没有这个定时器的周期中断?PWM周期中断和定时器的周期中断不太一样。

  • David,

    HET与普通的定时器不一样。

    用HET产生PWM,PWM周期是通过CNT指令来控制的。

    那么,可以再加一条指令ECMP来判断CNT的计数值与设定比较值是否匹配,匹配时可以产生中断,这个中断一定是与PWM周期相同的。而且可以根据设定比较值的不同,中断时间点可以发生在PWM周期的任何时刻。

    Regards,

    Jay

  • 关于mcu的CPU自检,HALCoGen生成的自检函数stcSelfChech(),只执行到_gotoCPUIdle()_,没有判断TEST_DONE是否执行完,我在程序中加入

    while((stcREG->STCGSTAT & 0x01U) != 0x01U)

    {

    }

    程序无法继续执行,没有产生CPU复位,ERROR引脚一直拉低。

    自检程序执行是否有顺序要求,比如efu,stc,ccm,时钟监控自检等?

    ESM模块是否有各个error通道具体是什么error的说明,HALCoGen中只有group1的说明

  • Hi Messi,

       关于STC的测试例程你可以参考我们TRM上面的STC章节,里面有关于具体设置STC的一个STC configuration example的例程。通过一步步的设置,最后可以去查询CPUd的自检程序是否通过。你可以先试试看,如果有什么问题,我们再讨论。

       对于CPU自检程序是否有顺序要求,按照我们芯片内部safety island的设计理念,一般都是最核心的部分先自检,在确认自己没问题的时候,再去检测其他部分的功能。所以我们一般都会把STC的测试放在比较前面,然后其他的放后面一点。我们官网上面有一份关于系统初始化的文档,里面推荐了系统从上电到运行到main程序之间进行了哪些初始化的操作。文档的名字叫 Initialization of Hercules ARM Cortex-R4F Microcontrollers (Rev. D),你可以参考一下。

       最后对于ESM 的error通道的信息你可以在我们芯片的datasheet上面找得到,不是TRM。里面的ESM章节有详细列举了各个group1的配置。

    在HALCOGEN里面,我们目前的版本只支持对group1的操作。后续的版本应该会慢慢的完善这些功能。

    谢谢!

    Ken

  • 你好 为什么我设置后死区只有上升沿有  下降沿还是没有呢