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.

[参考译文] AM2431:EPWM2同步 EPWM3

Guru**** 2513185 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1368983/am2431-epwm2-sync-epwm3

器件型号:AM2431

工具与软件:

您好!所有 TI 专家!

我想使 EPWM2与 EPWM3同步。 下面是我的代码:

uint32_t addr = CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_PROXY;
uint32_t value = 1;
uint32_t registerValue = 0;
SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, 4);
registerValue = *(volatile uint32_t *) ((uintptr_t) addr);
registerValue &= ~CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_MASK; // 先將要修改的位域清零
registerValue |= ((value << CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_SHIFT) & CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_MASK);
*(volatile uint32_t *) ((uintptr_t) addr) = registerValue;
SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, 4);

我知道SOC_controlModuleUnlockMMR()在进行任何设置之前需要使用来解锁 CTRL_MMR、但我不确定要解锁的区域。 您能帮助澄清一下吗? 谢谢!

此致!

拉里

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

    我发现了问题、  

    uint32_t addr = CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_PROXY;
    uint32_t baseAddr;
    uint32_t value = 1;
    uint32_t registerValue = 0;
    SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, 1);
    baseAddr = (uint32_t) AddrTranslateP_getLocalAddr(CSL_CTRL_MMR0_CFG0_BASE);
    registerValue = *(volatile uint32_t *) ((uintptr_t) baseAddr + addr);
    registerValue &= ~CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_MASK; // 先將要修改的位域清零
    registerValue |= ((value << CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_SHIFT) & CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_MASK);
    *(volatile uint32_t *) ((uintptr_t) baseAddr + addr) = registerValue;
    
    registerValue = *(volatile uint32_t *) ((uintptr_t) addr);
    SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, 1);

    由于 CTRLMMR_EPWM3_CTRL 寄存器的实际地址为0x4300 614c、我向错误地址写入了值、且解锁分区为1、正确后、EPWM2与 EPWM3完全同步。

    此致!

    拉里