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.

[参考译文] TMDS243EVM:PWM 跳闸区域启用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1306321/tmds243evm-pwm-trip-zone-enable

器件型号:TMDS243EVM
主题中讨论的其他器件:SysConfig

您好!  

我已经尝试启用 PWM 的跳闸区域、但没有成功。

在配置部分中、I config this function:

ePWM_tzTriggerTripAction (epwmBaseAddr、
EPWM_TZ_TRIP_ACTION_TRI_STATE、
ePWM_OUTPUT_CH_A);
ePWM_tzTriggerTripAction (epwmBaseAddr、
EPWM_TZ_TRIP_ACTION_TRI_STATE、
EPWM_OUTPUT_CH_B);

对于激活部分、此功能为:

ePWM_tzTripEventEnable (epwmBaseAddr、EPWM_TZ_EVENT_CYCLE_BY_CYCLE、CONFIG_GPIO0_PIN);

并切换 IO

或者、此文章:

ePWM_tzTriggerSwEvent (epwmBaseAddr、ePWM_TZ_EVENT_CYCLE_BY_CYCLE);

在 SysConfig 上、我有一些问题、如果我按如下方式配置 PWM:

它不链接 TZ 功能、如果我使用此配置:

PWM 完全不运行。

我从 TI 得到了有关此函数问题的回复:  

void SOC_allowEpwmTzReg (uint32_t epwmInstance、uint32_t enable)
{
/*时基时钟使能寄存器属于 CTRL MMR 的分区1 */
uint32_t epwmPartition = 1;
/*解锁 CTLR_MMR0寄存器*/
SoC_controlModuleUnlockMMR (SOC_DOMAIN_ID_MAIN、epwmPartition);

uint32_t regOffest = CSL_CTRL_MMR0_CFG0_BASE + CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROXY +(4 * epwmInstance);
if (true == enable)
{
CSL_REG32_WR (regOffest、
((CSL_REG32_RD (regOffest)和0x710U)|(0x1U << CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROVISION_EPWM0_CTRL_EALLOW_PROVISION_SHIFT)));

否则
{
CSL_REG32_WR (regOffest、
((CSL_REG32_RD (regOffest)和0x710U)和~(0x1U << CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROVISION_EPWM0_CTRL_EALLOW_PROVISION_SHIFT)));

/*锁定 CTRL_MMR0寄存器*/
SoC_controlModuleLockMMR (SOC_DOMAIN_ID_MAIN、epwmPartition);

 

需要如下所示绕过我的触发器:

SoC_allowEpwmTzReg (epwmId、true);

ePWM_tzTriggerSwEvent (epwmBaseAddr、ePWM_TZ_EVENT_CYCLE_BY_CYCLE);

SoC_allowEpwmTzReg (epwmId、false);

但它没有帮助。

您能请求为我提供解决此问题的一些指导吗?

谢谢

欧弗里

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

    嗨、Ofri、

      

    如果要从下拉菜单中选择 ePWM 实例,  软件 选项卡中、则 Pinmux 配置自动完成。 但是、如果您要从  保留外设 选项卡上、则 Pinmux 配置不会自动完成。  

    如果 Pinmux 未正确配置、则  PWM 输出、GPIO 输入/输出、  将无法按预期工作。 在使用 ePWM 输出/跳闸输入之前、请配置 Pinmux。

    谢谢。此致、

    马德哈瓦

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

    尊敬的  Madhava:

    经过更多测试后、我已成功 启用跳闸区域!

    使用 epwm_tzTripEventEnable (epwmBaseAddr、epwm_tz_event_cycle_by_cycle、config_gpio0_PIN)时出现问题;

    新设置后我会尝试重新启用 PWM、 似乎无法设置 TZCLR 寄存器。 (我使用了 SOC_allowEpwmTzReg)。

    您能想到 我无法写入该 寄存器的任何原因吗?

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

    嗨、Ofri、

    跳闸区域寄存器受 AM243x 上的 EALLOW 保护。 请使用  SoC_allowEpwmTzReg (epwmInstanceNumber、True); 以启用对包含 TZCLR 寄存器的跳闸区域空间的写入。 完成所需的写入后、使用  SoC_allowEpwmTzReg (epwmInstanceNumber、Flase);   锁定寄存器写入。  

    SoC_allowEpwmTzReg (epwmId、true);

    ePWM_tzTriggerSwEvent (epwmBaseAddr、ePWM_TZ_EVENT_CYCLE_BY_CYCLE);

    SoC_allowEpwmTzReg (epwmId、false);

    [/报价]

    以上包装是正确的、但请确保 epwmId 是正确的 ePWM 实例编号

    谢谢。此致、

    马德哈瓦

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

    嗨,米希拉,我与 Ofri 的厨房现在:

    以上包装是正确的、但请确保 epwmId 是正确的 ePWM 实例编号

    [/报价]

    他确认 epwmid 是正确的 ePWM 实例编号。

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

    尊敬的 Eyal:

    我担心为什么它们即使在允许访问后也无法访问跳闸区寄存器。 您能帮助我了解一下他们 用来设置 TZCLR 寄存器的 API 和参数吗?  

    谢谢。此致、

    马德哈瓦

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

    尊敬的 Eyal:

    抱歉上面的 func, SOC_allowEpwmTzReg ()中有错误;请使用下面的一个。

     

    void SOC_allowEpwmTzReg(uint32_t epwmInstance, uint32_t enable)
    {
        /* Time base clock enable register belongs to partition 1 of the CTRL MMR */
        uint32_t epwmPartition = 1;
        /* Unlock CTLR_MMR0 registers */
        SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, epwmPartition);
    
        uint32_t regOffest = CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROXY + (CSL_MAIN_CTRL_MMR_CFG0_EPWM1_CTRL_PROXY - CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROXY)*epwmInstance;
        if(TRUE == enable)
        {
            CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + regOffest,
                    ((CSL_REG32_RD(CSL_CTRL_MMR0_CFG0_BASE + regOffest) & 0x710U) | (0x1U << CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROXY_EPWM0_CTRL_EALLOW_PROXY_SHIFT)));
        }
        else
        {
            CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + regOffest,
                    ((CSL_REG32_RD(CSL_CTRL_MMR0_CFG0_BASE + regOffest) & 0x710U) & ~(0x1U << CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_PROXY_EPWM0_CTRL_EALLOW_PROXY_SHIFT)));
        }
        /* Lock CTRL_MMR0 registers */
        SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, epwmPartition);
    }
    

    很抱歉回复再次延迟。

    马德哈瓦