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.

[参考译文] CCS/TM4C123GH6PM:使用 TivaWare/Driverlib 而不是 DRM 来设置 QEI 数字滤波

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/586970/ccs-tm4c123gh6pm-set-qei-digital-filtering-using-tivaware-driverlib-instead-of-drm

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

我一直在浏览 Driverlib 用户指南、找不到打开和设置 QEI 数字滤波计数的方法。 为此、我要使用 DRM。 是否有方法使用 driverlib 调用来实现此目的?

我现在要做的是:

//从[TIvAware 安装目录]\inc\tm4c123gh6pm.h
#define QEI0_CTL_R 复制 (*((volatile uint32_t *) 0x4002C000)
#define QEI_CTL_FILTCNT_M 0x000F0000 //输入滤波器预分频计数
#define QEI_CTL_FILTEN 0x00002000 //启用输入滤波


器//将 QEI 外设配置为在输入 A 上计数,正交模式,无 AB 交换(用于修复接线错误,并将最大计数设置为14
QEIConfigure (QEI0_BASE,(QEI_CONFIG_CAPTURE_A | QEI_CONFIG_SWa| QEI_CONFIG_SWAP),40);

//启用数字滤波器,并设置为最大
QEI0_CTL_R |= QEI_CTL_FILTEN | QEI_CTL_FILTCNT_M; 

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

    您"首先寻找"使用 Driverlib 是"很棒的"。  不幸的是、Driverlib 无法提供"每个/每个外设"所要求的"每个函数"。  

    在这些情况下-使用(可怕的) DRM 是可以接受的...

    我在我公司的"StellarisWare 9453"(最后一个已知、稳定/项目符号验证) API 版本中找不到这些函数、该 API 版本已获得客户批准。  查看您的(修订版)用户指南的最新版本、以查看是否添加了这些"额外功能"(可能)。

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

    尊敬的 Dennis:

     您是否尝试过 QEIFilterConfigure()?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这不是我在平台的 driverlib API 中找到的 API 函数。 这是针对 TM4C123GH6PM 吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Charles -该函数"QEIFilterConfigure"不会出现在我们以前的 StellarisWare 9453副本中。 (客户要求我们"坚持"。)
    因为它的名称如此描述-也许是因为它(新)被添加了-从而逃避了海报的通知?

    [编辑]现在、由于海报报告函数不存在(假设)更新的 Driverlib -该函数是否可能仅存在于"4C129x"器件中?

    ***“真正的问题”可能这些 MCU 寄存器的存在以及实现 QEI 滤波所需的机制-采用“4C123”类器件吗?  即使如此-尤其是如此-因为没有在海报的 Driverlib 指南中提到该函数!

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

    您好、CB1、Dennis、

     我在 TivaWareC_Series-2.1.4.178中找到该 API。  我需要检查这是否是最近添加的。  

    void
    QEIFilterConfigure (uint32_t ui32Base、uint32_t ui32FiltCnt)
    {
    //
    //检查参数。
    //
    assert (((ui32Base == QEI0_BASE)||(ui32Base == QEI1_base));
    assert (!(ui32FiltCnt &~(QEI_CTL_FILTCNT_M)));
    
    //
    //设置输入滤波器预分频计数。
    //
    HWREG (ui32Base + QEI_O_CTL)=((HWREG (ui32Base + QEI_O_CTL)和
    ~(QEI_CTL_FILTCNT_M))| ui32FiltCnt);
    }
    

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

    它必须自2.1.71起添加。 我刚刚升级到2.1.4.178、现在我已经有了。 感谢 Charles 和 CB1!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dennis、
    我刚刚检查了。 它是在2.1.2之后添加的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    作为(过去、仅限于使用 StellarisWare_9453)用户、请允许我评论-"Ratz!"

    如果4C123 (和过去的 LX4F)具有支持此类功能的寄存器(和机制)、我们可以(移植)将其应用到(过去的"S_9453")中、这似乎是合理的。 (屈服于 S9453Q -或 S9453C (为查尔斯的荣誉)。

    这里的侦探工作做得很好。  非常感谢 Charles 的(持续)努力和"内部专业知识"。  (并为 Dennis 的坚持和确认招贴画)