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.
您好!
实际上、我正在尝试使用您的双 CPU Delfino Launchpad 之一来控制电力驱动器。为此、我正在利用 Matlab Code Composer、因此我在 Simulink 中进行编程。
我的常规实际方法是在 CPU1上实现速度控制、并实现电流控制 CPU2。 当然、这将通过 IPC 接口进行通信。
对于速度控制、我有一个5kHz ePWM 中断、该中断生成一个 SOCA 和 SOCB、可将6个霍尔传感器的值读取到 ADC 上。
考虑到 ADC-A 模块被多次使用、SOC 序列相应地增加。 另一方面、ADC-B 和 ADC-C 仅抽头一次、因此在 SOC0上读取这两个值。
这是由 CPU1完成的、它工作正常。 如下所示。
如前所述、我打算控制 CPU2上的电流。 我使用中断 ePWM7以45kHz 的频率启动例程。 在例程内部、下面的 PWM 1-2-3模块也以45kHz 的频率进行切换、生成各自的 SOCA 和 SOCB 来读取 ADC 模块 B 和 C 上的电流
我现在尝试同时测试霍尔传感器的电流控制和采样。
第一张图片中的霍尔传感器始终可以成功读取。 测试电流控制时出现问题。
电流的 PWM 模块会生成 SOCA 和 SOCB 触发器、这些触发器应从上面控制 ADC。 如果使用与来自 CPU1的霍尔传感器相同的 SOC 对它们进行采样、我最终会读取它们的值、而不是电流的值。 我理解。 不过、如果我将它们设置为使用后续 SOC 值进行采样、它们根本不会进行采样... 因此、电流控制不起作用。
足够有趣的是、如果我对霍尔传感器(来自 CPU1)的 ADC-B 和 ADC-C 进行注释、则会在 CPU2中正确地对电流进行采样。 当我尝试在同一个 CPU 上运行两个例程时,情况是一样的:它实际上可以正常工作。
是否有人对如何正确配置 ADC 以使 CPU1和 CPU2能够正确共享这些 ADC 有任何想法?
提前感谢、
帕特里西奥
BTW、我尝试将第一个图像(霍尔传感器、CPU1)的 SOC 从0 - 5开始设置、然后将 CPU2的 SOC 设置为6和7、但仍然无法正常工作。
然而、在对来自 CPU1的 ADC B 和 C 的电流进行注释时、来自 CPU2的电流控制功能仍然非常出色。
在某种程度上,CPU1对 ADC B 和 C 的利用“阻止”了它与 CPU2的通信,我认为……
谢谢、
帕特里西奥
帕特里西奥
根据您的描述、我怀疑存在 CPU1/CPU2所有权问题。 对于您所描述的内容、我想确认您是否具有如下设置:
ADC A/B/C -全部由 CPU1拥有和配置(即使对于电流控制采样也是如此)
速度控制 PWM - CPU1
电流控制 PWM -CPU2
即使 ADC 由 CPU1 "拥有"、您仍可以配置 SOC、以便从 CPU2拥有的 PWM 触发电流控制。
ADCINT 并行连接到两个 CPU、因此您只需为速度控制信号设置一组 INTS、CPU1将启用该 INTS、而为 CPU2设置另一个 INT、它将启用该 INTS。
最后、无论 CPU 的所有权如何、两个 CPU 都可以读取 ADC 结果寄存器。 如果 ADC 结果寄存器是双端口、我不是100%、这意味着它们是否可以支持从两个 CPU 同时读取(如果转换的时序正确)、 但在最坏的情况下、读取不会丢失、只会挂起、直到另一个 CPU 读取完成。
单个 ADC 只能有一个 CPU 来控制它们、但出于系统的目的、您可以将其视为一个 CPU 来配置 ADC。 对于 ADC 设置、通常在初始化期间设置这些设置、并且在很大程度上是单独设置的。
请告诉我这是否能解决问题。
最棒的
Matthew
Matthew、您好!
感谢您的快速准确响应。
由于您的指示、代码现在可以正常工作。 了解 ADC 只能由一个 CPU 来控制、这一点很关键。
实际上、我尝试在不同的 CPU 上配置 ADC;也就是说、我在 CPU1上配置速度控制的 ADC A/B/C、在 CPU2上配置 ADC B/C 以进行电流控制。
现在、我将电流控制 ADC B/C 添加到 CPU1。 它们配置成功、我可以从 CPU2读取它们、而不会出现任何问题(尚未尝试同时读取它们、即也在 CPU1中读取它们)。
最棒的
帕特里西奥
很高兴这是个问题、并帮助您使事情正常工作。 我确实确认了 ADC 结果寄存器是双端口、这意味着您可以同时使用 CPU1和 CPU2进行访问、而不会对任一 CPU 造成任何性能影响。
最棒的
Matthew