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.

[参考译文] TMS320F28386D:CAN#39;t 使 CLB 正交编码器正常工作

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1137484/tms320f28386d-can-t-get-clb-quadrature-encoder-working

器件型号:TMS320F28386D

大家好、我有一个项目需要8个正交编码器。 我已经使用 CLB 创建了5个(加上3个内置编码器)。 我在379 launchpad 上使用了2个瓷砖、使其工作正常。 现在、我已经获得了生产386板、无法使其正常工作。 位置寄存器只是以非常高的速度进行计数。

我按如下方式进行配置:

SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_CLB1);

initTILE1 (CLB1_base);

Xbar_setInputPin (CLBINPUTXBAR_BASE、XBAR_Input1、30);
CLB_CONFIGLocalInputMux (CLB1_base、CLB_IN0、CLB_LOCAL_IN_MUX_Input1);
CLB_CONFIGGPInputMux (CLB1_base、CLB_IN0、CLB_GP_IN_MUX_EXTERNAL);

Xbar_setInputPin (CLBINPUTXBAR_BASE、XBAR_INPUT2、31);
CLB_CONFIGLocalInputMux (CLB1_base、CLB_IN1、CLB_LOCAL_IN_MUX_INPUT2);
CLB_CONFIGGPInputMux (CLB1_base、CLB_IN1、CLB_GP_IN_MUX_EXTERNAL);

clb_enableCLB (CLB1_base);

然后使用以下命令读取计数器:

 POS =(Int32_t) CLB_getRegister (CLB1_base、CLB_REG_CTR_C0);

这一切都是以前的工作方式、因此我很确定 syscfg 中的逻辑块配置是可以的。 使用 launchpad 时、我使用了 AUGSIG 输入。 但需要使用这里的 CLB_INPUT_XBAR、以便我可以有10个输入。 379和386项目之间必须有其他不同的内容、但我找不到它。 我还尝试使用 AuxSig 输入、它也执行同样的操作。

我的新板具有20MHz 时钟、因此我认为 CLB 时钟可能太快、并尝试过、也没有帮助

SYSCTL_setCLBClk (SYSCTL_CLBCLKOUT_DIV_1、SYSCTL_CLBTCLKOUT_DIV_2、
         SYSCTL_CLB1、SYSCTL_CLBCLK_异 步);

有什么想法、我会错过什么?

谢谢

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

    您好 Ken、

    您的 XBAR 和 CLB 配置 DriverLib 代码与我看到的代码看起来是正确的。 您提到过它只是递增计数、这是否没有连接到输入引脚的编码器? 您是否也使用索引输入? 我假设没有、因为您提到了仅使用10个输入用于5个 QEP。  您将哪些内容配置为这些 CLB-QEP 的最大值?

    此致、

    Peter

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

    感谢您的回复。

    有一个连接了编码器的电机。 有8个连接器、它在3个 eQEP 上工作正常。 因此接线必须良好。 不使用索引。

    这话什么意思? CLB 配置非常简单;只有2FSM、2 LUT 和一个计数器。

    我不确定如何配置到 CLB 的时钟。 我假设 deviceInit/sysctrl_setclock 中的默认值对于 use_20MHz_XTAL 来说是可以的。 还有其他要设置的内容吗?

    谢谢

    Ken

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

    啊、我明白了。

    它应该是    initTILE0 (CLB1_base);

    不是 initTile1

    DOH。

    谢谢。