主题中讨论的其他器件:C2000WARE
是否可以设置此 MCU (使用 CLB 可配置逻辑块和现有外设)来处理8个增量编码器输入和4个 UVW 换向输入(4个无刷电机)?
如果3个信号(U 或 V 或 W)中的任何一个发生变化、每个 UVW (3信号)组都需要触发中断、以便 MCU 可以更改相应电机上的换向。
谢谢、
Nick
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.
是否可以设置此 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)我很难找到它表示每个器件的 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
此外、您不必再执行 XOR 运算、因为您在 CLB 的输入端使用边沿检测逻辑。
如果您必须在2个信号上实施 XOR、请参阅此示例
C:\ti\c2000Ware_2_01_00_00\driverlib\f2838x\examples\C28x\CLB\
CLB_EX8_EXTERNAL_SIGNAL_AND_GATE
您可以使用 XOR (^)代替和(&)。