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.

280049 CLA中怎么访问受EALLOW保护的寄存器

在主CPU中访问受EALLOW保护的寄存器,是通过EALLOW,EDIS指令进行的,两条指令也有具体的宏定义:

那么在CLA访问这些寄存器应该怎样操作呢?看《TMS320F28004x Piccolo Microcontrollers Technical Reference Manual_RevC》说需要使用MEALLOW
,MEDIS 指令,但是没找到这两条指令的定义。请问这两两天指令应该怎样定义呢?

  • 可以试一下:

    #define MEALLOW __asm(" MEALLOW")
    #define MEDIS __asm(" MEDIS")

  • 谢谢你的回复。

    我的测试结果:

    CAL的测试代码:

    #pragma FUNC_ALWAYS_INLINE(LLC_PUMP_PWM)

    inline void LLC_PUMP_PWM(void)

    {

    LLC_DRIVE_ENB();

    // Pri HB drive

    MEALLOW;

    EPwm4Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // Force EPWMxA to a low state

    EPwm4Regs.TZCTL.bit.TZB = TZ_NO_CHANGE; // Do nothing, no action is taken on EPWMxB

    EPwm5Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // Force EPWMxA to a low state

    EPwm5Regs.TZCTL.bit.TZB = TZ_NO_CHANGE; // Do nothing, no action is taken on EPWMxB

    MEDIS;

    }

    证明

    #define MEALLOW __asm(" MEALLOW")

    #define MEDIS __asm(" MEDIS")

    是可以的。

    另外MEALLOW定义会与“f28004x_cla.h”文件中的 结构体定义中的成员“Uint16 MEALLOW:1; // 11 MEALLOW Status”冲突,编译会报错,

    我是把结构体里的MEALLOW命名修改了后进行测试。

    不知道TI标准的做法是怎样的,没要找到在CLA操作EALLOW保护寄存器的例程。