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.

[参考译文] RTOS/AM4377:eQEP 寄存器的数据中止异常

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604370/rtos-am4377-data-abort-exception-at-eqep-register

器件型号:AM4377

工具/软件:TI-RTOS

大家好、

我尝试在我的定制板上使用 eQEP0 (原理图与 TMSIDKAM437X 相同)。

因此、我在 SYS/BIOS 6.42.2.29中的任务(Out of while (1))中执行了以下代码、当我访问 QEP0_QEPCTL 寄存器时、会发生数据中止异常。

HWREG (SOC_CONTRAL_MODULE_REG + CTRL_PWMSS)&&=~PWMSS0_TBCLKEN_ENABLE_BIT;
   //启用时钟模块
   HWREG (EQEP0_CLKCTRL_REG)|= 0x02;

   while (PRCM_MODULE_IDLEST_FUNC!= HW_RD_FIELD32 (EQEP0_CLKCTRL_REG、PRCM_CLKCTRL_IDLEST));

   HWREG (PWMSS0_REG + PWM_CLKCONFIG)=((1<<ePWMCLKSTOP_REQ) | (1<<eCAPCLKSTOP_REQ) | (1<<eQEPCLKSTOP_REQ));
   while ((<eQEPCLK_EN) != ((0<<eQEPCLK_EN) & HWREG(PWMSS0_REG + PWM_CLKSTATUS)));

   HWREG (eQEP0_REG + eQEP_QEPCTL)=(1<<eQEP_QEPCTL_PHEN);

在设置 QEPCTL 之前、我应该做什么吗?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否详细说明您用于上述代码的软件包? 是处理器 SDK 吗? 您提到的代码示例是什么? 谢谢!

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

    它是采用 SYS/BIOS 6.42.2.29的 EtherCATfull 功能应用+电机控制。

    我在 ICSS_ADC_endat_app_init ()之后导出了该代码。


    HWREG (EQEP0_CLKCTRL_REG)&= 0xFFFFFF0000;

    while (PRCM_MODULE_IDLEST_DISABLE!= HW_RD_FIELD32 (EQEP0_CLKCTRL_REG、PRCM_CLKCTRL_IDLEST));

    HWREG (SOC_CONTRAL_MODULE_REG + CTRL_PWMSS)&&=~PWMSS0_TBCLKEN_ENABLE_BIT;

    HWREG (PWMSS0_REG + PWM_CLKCONFIG)=((1<<ePWMCLKSTOP_REQ) | (1<<eCAPCLKSTOP_REQ) | (1<<eQEPCLKSTOP_REQ));
    while ((<eQEPCLK_EN) != ((0<<eQEPCLK_EN) & HWREG(PWMSS0_REG + PWM_CLKSTATUS)));

    HWREG (eQEP0_REG + eQEP_QEPCTL)=(1<<eQEP_QEPCTL_PHEN);

    当代码进入最后一行时、会发生数据中止异常。

    我想我错过了一些东西 但我找不到任何东西。

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

    大家好、我发现了我的错误。

    函数"HWREG"用于32位寄存器。

    但我尝试的寄存器(QEPCTL)是16位寄存器。

    我将 HWREG 更改为 HWREGH、然后解决了问题。

    感谢您的关注。