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:能否设置此 MCU (使用 CLB 和现有外设)来处理8个增量编码器输入和4个 UVW 换向输入(4个电机)。

Guru**** 2455560 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/874101/tms320f28386d-can-this-mcu-be-setup-using-clb-and-existing-peripherals-to-handle-8-incremental-encoder-inputs-and-4-uvw-commutation-inputs-4-motors

器件型号:TMS320F28386D
主题中讨论的其他器件:C2000WARE

是否可以设置此 MCU (使用 CLB 可配置逻辑块和现有外设)来处理8个增量编码器输入和4个 UVW 换向输入(4个无刷电机)?   

如果3个信号(U 或 V 或 W)中的任何一个发生变化、每个 UVW (3信号)组都需要触发中断、以便 MCU 可以更改相应电机上的换向。   

谢谢、

Nick

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

    您好!

    [引用 USER="Nicholas Layshot4">每个 UVW (3信号)组需要在3个信号(U 或 V 或 W)中的任何一个发生变化时触发中断、以便 MCU 可以更改相应电机上的换向。   [/报价]

    如果这是您在 CLB 内部使用的唯一函数-即检测任何输入端的边沿并触发中断、那么我认为这似乎是可行的。

    您可以尝试 CLB、  
    http://www.ti.com/microcontrollers/c2000-real-time-control-mcus/overview.html#clb

    当您尝试实施时、请告知我们您是否有任何问题或具体问题。

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

    您好!  

    我实际上需要的不仅仅是 UVW。  

    我们需要连接8个增量编码器输入和4个 UVW 组。 MCU 只有3个 QEP (用于3个增量编码器或正交计数器输入)。

    1)是否有方法使用 CLB 和外设(3 QEP 或其他任何方法)来满足此输入要求?  

    2) 2)我们可以将正交计数器(例如32位)设为多大?

    例如:有8个 CLB。 那么、我们是否可以对其中的4个进行编程、以读取1个增量编码器和1个 UVW 组、并对其中4个进行编程以读取1个增量编码器(总共8个增量编码器和4个 UVW 组)? 如果 UVW 改变状态、UVW 值和编码器计数(正交计数器计数)、CLB 的4的输出将是中断。 另外4个只是增量编码器计数(正交计数器计数)。 我们可能还希望处理器能够将计数重置为0或值。

    另一个示例:如何将 CLB 与现有外设(QEP、eCAP 等)相结合、以便在8个增量编码器(8个正交计数器)和4个 UVW 输入中读取数据。

    谢谢、

    Nick

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

    您好!

    [引用用户="Nicholas Layshot4"]
    1)是否有方法使用 CLB 和外设(3 QEP 或其他任何方法)来满足此输入要求?
    [/报价]

    我不确定我是否理解您的问题。 您是指将输入路由到 CLB 还是其他外设?

    Nicholas Layshot4 说:
    2)我们可以使正交计数器(例如32位)的大小有多大?[/quot]

    如果您再次引用 CLB、则每个 CLB 中有三个32位计数器。

    但是、您在之前的电子邮件中提到、要求是"如果3个信号中的任何一个(U 或 V 或 W)发生变化、每个 UVW (3信号)组都需要触发中断、以便 MCU 可以更改相应电机上的换向。  "

    只需将信号合并并检测 UVW 上的边沿就非常简单。
    但是、如果您计划实现方向检测、正交计数等完整的 QEP 功能、这可能不可行、具体取决于您在 CLB 内部实现的功能数量。

    最好的方法是通过使用 CLB 实施来尝试您的要求、因为我很难完全了解您的实施需求。

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

    1) 1)我是说我需要在 MCU 中读取8个增量编码器和4个 UVW 组。 是否有办法以某种形式或另一种形式实现这一点?

    2) 2)是的、我们需要读取增量编码器、因此我们需要正交计数功能、即在一个方向上向上计数、在另一个方向上向下计数。  

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

    您好!

    从我看到的结果来看、似乎有很多逻辑处理8个增量编码器的所有这些函数。
    您可以对1进行快速实验、并检查逻辑是否适合 CLB 的1个逻辑块。 如果是、您可以在8个逻辑块上复制相同的内容。
    很难给出"是"还是"否"、最好尝试一下并检查可行性。

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

    感谢你的帮助。  

    以下是几个后续问题:

    1) 1)我很难找到它表示每个器件的 CLB 逻辑块数量或 CLB 数量的位置。 我可以看到 CLB1虽然在某些表中引用了 CLBX、但无法找到它显式声明的位置。 哪些器件具有8个逻辑块(或 CLB)、它在哪里声明了这一点?

    2)参考问题1。 我没有找到如何使用8个逻辑块开始设计、因为我只看到4个逻辑块出现。 我遵循《CLB 工具用户指南》(SPRUIR8)、其中规定通过从示例文件夹导入 CLB_EMPTY 项目来启动项目。 但是、我似乎找不到具有8个逻辑块的版本。

    谢谢、

    Nick

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

    您好!

    [引用 user="Nicholas Layshot4]1)我很难找到它指出每个器件有多少个 CLB 逻辑块或 CLB 的数量。 我可以看到 CLB1虽然在某些表中引用了 CLBX、但无法找到它显式声明的位置。 哪些器件具有8个逻辑块(或 CLB)、它在哪里陈述?

    在器件数据表中、您将找到下表"表3-1。 器件比较"、指出哪些器件具有 CLB 功能。
    由于您使用的是 F28386、因此它具有 CLB 和8个逻辑块(所有具有 CLB 功能的 F2838x 器件都具有8个逻辑块)

    [引用 USER="Nicholas Layshot4]2)参考问题1。 我没有找到如何使用8个逻辑块开始设计、因为我只看到4个逻辑块出现。 我遵循《CLB 工具用户指南》(SPRUIR8)、其中规定通过从示例文件夹导入 CLB_EMPTY 项目来启动项目。 但是、我似乎找不到具有8个逻辑块的版本。

    目前、该工具仅支持4个逻辑块。 计划在今年下半年发布支持8个逻辑块的工具。
    您可以对逻辑块具有不同的配置(.syscfg)、并手动将输出和配置文件重命名为逻辑块5-8。



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

    1)

    它在哪里陈述了逻辑块的数量? 我无法找到 F2838x 器件具有8个逻辑块的状态。 我已经查看了该 MCU 的网站(数据表和 TRM)?

     

    2)

    如果我需要在8个增量编码器(每个编码器2个 GPIO、8 x 2 = 16 GPIO)和4 UVW (每个编码器3个 GPIO、4 x 3 = 12 GPIO)中运行。 16 + 12 = 28 GPIO。 对于4个逻辑块、这意味着每个逻辑块的28/4 = 7个输入。 我至少需要在编码器中读取(16个输入)。 由于每个逻辑块可以有8个输入、因此这应该起作用。 但是、当我查看如何将 GPIO 输入到 CLB 中时、在2837xD TRM 图9-1或2838x 图9-4中、我需要使用输入 X-BAR。 输入 X-BAR 只有6个可进入 CLB 的输出、而输入 XBAR 只能将1个 GPIO 连接到这6个输入中的每一个? 那么、这是否意味着我总共只能将6个 GPIO 连接到整个 CLB (所有4个逻辑块为6个 GPIO)?

     

    3)

    我们如何检查 CLB 输入信号的变化并读取该值。 例如:如果我们在 CLB_INPUT_FILTER 上设置位1-0 = 11、CLB 逻辑块会为输入0看到什么? 我们如何读取信号的值?

     

    4)

    我仍在尝试了解子块在逻辑块中的工作方式和时序。 每个子块的输出是否锁存在100Mhz 时钟上? 那么、如果我以3 LUT 为例、它在100MHz 速率下需要3个时钟周期吗? 以下示例是否合理?

     

    LUT 示例(DIRECTION = A_CURRENT XOR B_Oast):

    如果我需要同时使用输入的当前值和过去值(DIRECTION = A_CURRENT XOR B_Past)、我只能通过 LUT 运行 B 以获取 B_Past。  例如、我可以在 LUT0中运行 B 并设置 Out = B (B_Oast)、即将 i0放入"eqn"字段中。 然后设置 LUT1_OUT = A (A_CURRENT) XOR LUT0_OUT (B_Oast)。   

     

    FSM 示例(DIRECTION = A_CURRENT XOR B_Past):

    E0:A

    E1:B

    S0:E0 (s0 = B_Past)

    EQN_OUT:E0 XOR s0 (方向= A_CURRENT XOR B_Oast)

    谢谢、

    Nick

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

    您好!

    1) 1) 没有具体提到逻辑块的数量、表9-13。 CLB 基地址表(C28)提供了逻辑块地址。
    我会将此反馈发送到文档、并对其进行更新。  但是、正如我之前提到的、目前工具仅支持4个逻辑块。  

    2) 2)您的理解是正确的。 您将受到应用中可连接到 CLB 的 GPIO 数量的限制。 我看不到通过 GPIO 将如此多的信号路由到 CLB 的方法。
    我相信、根据我们的电话对话和您提供的应用程序的详细信息、这将是您可以实现的编码器数量的限制因素。

    3) 3) CLB_INPUT_FILTER 的输出将是1个 CLB 时钟脉冲。 这个脉冲可被馈送到计数器来计算转换的数量。 正如我在调用中提到的、你可以将这个 CLB 输入(滤波器被启用)连接到计数器的 MODE0输入。

    4) 4)请观看3个简短视频、了解架构、子块等
    https://training.ti.com/c2000-configurable-logic-block-clb-introduction?context=1137766-1138740-1139892

    https://training.ti.com/c2000-configurable-logic-block-clb-architecture?context=1137766-1138740-1139894      

    https://training.ti.com/c2000-configurable-logic-block-clb-programming-tool?context=1137766-1138740-1139895

    此外、您不必再执行 XOR 运算、因为您在 CLB 的输入端使用边沿检测逻辑。

    如果您必须在2个信号上实施 XOR、请参阅此示例
    C:\ti\c2000Ware_2_01_00_00\driverlib\f2838x\examples\C28x\CLB\
    CLB_EX8_EXTERNAL_SIGNAL_AND_GATE

    您可以使用 XOR (^)代替和(&)。