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.

[参考译文] TMS320F28379D:在 C2000 Launchpad XL TMS320F28379D - Ver (2.0)上在多个通道上同步采集数据

Guru**** 2561950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/750822/tms320f28379d-simultaneous-data-acquisition-on-multiple-channels-on-c2000-launchpad-xl-tms320f28379d----ver-2-0

器件型号:TMS320F28379D

大家好、

查找在 Multiple 上成功执行 ADC 和数据采集的有效示例

通道(一次2个)。 这不是我们对这个问题的第一次调查

我们已经和我们的朋友在这里聊了一下 Devin Cottier 和 Joseph Casuga。我们真的很感激

他们对此的建议和想法。 Devin 和 Joseph 都建议我们研究

两个示例:ADC_SoC_ePWM 和 ADC_SoC_Continuous、均可在上获取

/device_support/f2837xd/examples/cpU1。

要准确地引用几个月前约瑟夫发出的一个非常有用的信息:

-" 在 C2000Ware 中也有几个示例 、您可以在其中查看 ADC 转换的并发工作原理。

建议您查看一个示例、即"ADC_SoC_ePWM"。 在此示例中、它将向您展示如何配置

用于触发 ADC 转换的 ePWM。 每个 ePWM 有2个转换开始(SOC)触发器。 您可以使用这些 SOC

来自 ePWM 的信号、用于触发 来自 TMS320F28379D 不同 ADC 模块的不同通道 以确定为真

并发转换、其中2个通道同时转换。 仅在"ADC_SoC_ePWM"示例中

显示了一个 ADC 模块。 您只需复制 ADC 设置即可配置要配置的另一个 ADC 模块

用于并发转换(请注意 TMS320F28379D 具有4个 ADC 模块)。 在这种情况下、有2个 ADC 模块

必须同时运行(对于处于活动状态的 ADC、ADCCLK 速率和 ACQPS 完全相同)和

转换由同一 ePWM SOC 触发。

还有另一种模式、您可以在同一 ADC 的不同通道上进行转换、但必须进行转换

遵循 SOC 顺序(例如- SOC0首先转换,然后 SOC1和 SOC2必须转换,然后才能转换 SOC1...等等),

但这不是并发的、而是顺序的。 一个很好的例子说明了这是如何执行的

"ADC_SoC_Continuous"。 "--

Devin 也提供了很好的反馈和建议、并引用了他的其中一条消息:

--"您需要采取的下一步是彻底阅读 TRM 的 ADC 章节,然后运行

实验课程。  根据位和功能说明查看代码和引用中的每一行

直至您了解该实验的工作原理。  对 ePWM 示例重复此操作。

了解这两个示例后、使用我之前的帖子中的提示来扩展一个示例

或另一个以并行采样多个 ADC。 请注意、还有一个迷你代码片段示例

在 TRM 中有关同时采样多个通道的更多信息、您可以参阅。"

我和我的同事密切关注有关 ADC_SoC_ePWM 示例的这些建议

以及以下多日技术讲座中的一个示例(Lab2): processors.wiki.ti.com/.../C2000_Multi-Day_Workshop

LAB2:模数转换器

到目前为止、我们的尝试均未成功、仅检测并实现了数据采集

电流。 Lab2示例使用正弦数据工作正常、但仅使用正弦数据

电压范围。 为了处理多个通道、我们修改了示例的代码

但是、对于一个以上的通道、没有检测到任何内容。

**我认为我们要么完全误解硬件,要么很可能错过了硬件

在我们的代码中指定一些非常关键的组件。 如果有人有一个示例、不管怎样

它有多简单或复杂、并且愿意与我们分享、只是尝试一下、我们会很感激它。

在多个通道上进行并发数据采集的任何类型的 ADC 示例都是

好的。 这里的目标是了解如何完成此类设置。 在我们了解该框架后

在我们继续使用硬件时、我们将继续尝试了解其他示例。

这里的关键点是理解、不要复制其他人的工作。

硬件对我们所有相关人员来说都是相对较新的(大约一年左右)、并计划使用它

在未来几个月中与其他处理器广泛结合使用、共同用于多种雷达

和传感项目。 因此,我们必须彻底地这样做

通过在 CPU1和 CPU2上运行不同的示例来利用和利用所有功能来理解它

以不同的方式(顺序、并发、并行等)对通道进行分频、以利用真值

系统的功率。

非常感谢、

Saleh、Joel、Glen 和其他同事。

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

    您好 Saleh、

    从根本上说:

    • 要获得多个同步转换、您将使用多个 ADC
      • 每个 ADC 上具有相同的 SOC (例如 ADCA 上的 SOC0和 ADCB 上的 SOC0)
        • 相同的触发源(例如 ePWM1 SOCA)
        • 相同的 S+H 持续时间(例如、ACQPS = 99)
        • 通道选择的不同值相同(例如 ADCA SOC0 CHSEL = 0、它将对通道 A0进行采样;ADCB SOC0 CHSEL = 1、它将对通道 B1进行采样)、这将始终导致对不同的通道进行采样 (例如、如果两个通道的值均为"0"、则采样通道将为 A0和 B0、这两个通道的物理尺寸不同)
      • 当所选触发发生时、为该触发器配置的所有 SOC 都将设置为挂起
        • 例如、如果 ADC A 和 ADC B 上的 SOC0都设置为接受 ePWM1 SOCA、当触发发生时、SOC0将同时设置为两个 ADC 上的待处理转换
      • 每个具有最高优先级的 ADC 上的 SOC 立即开始转换
        • 例如、如果所有 ADC 都空闲且仅使用 SOC0、则 SOC0将立即在所有 ADC 上开始转换。   
        • 例如、如果所有 ADC 空闲且每个 ADC 都有 SOC0、SOC1和 SOC2待处理、则每个 ADC 上具有最高优先级的 SOC 将开始转换(可能是 SOC0、但请参阅 TRM 中的 ADC 章节以了解各种优先级方案)
      • SOC 完成转换后(对于所有 ADC、应同时进行转换)、结果将显示在相应的结果寄存器中
        • SOC0结果采用 ADCRESULT0、SOC1结果采用 ADCRESULT1等  
        • 来自 ADCA 的结果进入 AdcaResultRegs、来自 ADCB 的结果进入 AdcbResultRegs 等
        • 请注意、例如、通道3的结果不一定进入 ADCRESULT3 (除非使用 SOC3进行转换)

    请注意、A 通道(例如 A0、A1、A2等)只能在 ADCA 上采样、B 通道只能在 ADCB 上采样、等等  

    这对于您的理解和验证通道连接也很有用、以便构建一个示例、您可以按顺序对多个通道进行采样。  例如、设置 ADCA SOC0、SOC1和 SOC2使用相同的触发器、任何有效的 ACQPS 设置和不同的通道。  触发发生且结果可用后、SOC0选择的通道结果将位于 ADCA 的 ADCRESULT0中、SOC1选择的通道结果将位于 ADCA 的 ADCRESULT1中、SOC2选择的通道结果将位于 ADCA 的 ADCRESULT2中

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

    我们非常感谢您就此提出的想法。 抱歉、我没有得到机会
    解决这个问题。 我们的日程安排非常疯狂、因为我们有多个
    正在进行的项目都同时进行。
    我们将在查看代码时再次查看。 我们认为有几个方面:
    1.我们的逻辑不正确或2. 我们很可能没有必要的东西
    CODE/CONFIG/setup、因此无法激活其他通道。
    我们将密切回顾并关注您对此的最新想法。 很快就会再发电子邮件
    在我有机会进行审核之后。

    非常感谢、很快就会与您交谈。

    祝你一切顺利、
    Saleh 和同事...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Saleh、

    不用担心;您可以根据适合您的任何计划进行开发。  (如果空闲一两周、我们可以关闭该主题;如果有、我们可以随时回复该主题以重新打开该主题、或者使用"提出相关问题"按钮继续讨论)

    确定要使用的配置后、我发现一个良好的完整性检查/调试策略是运行所有初始化(甚至可能运行到代码的活动部分)、然后:

    • 停止代码(通过调试器的"暂停"操作、或通过硬件或软件断点)
    • 在"Expressions"窗口中检查 ADC (以及 ePWM 或 CPU 计时器、如果您使用其中一个作为触发源)的配置

    如果实际配置与要编写的配置相匹配、但系统仍然无法正常工作、则需要进一步完善您的理解。  这避免了一种非常令人困惑的情况、即缺少"EALLOW"或某些痕量代码可防止或覆盖您的预期配置、即使您的预期配置是正确的、也会导致运行不良。  

    如果您在活动部分停止代码、还可以使用此方法来检查 ADC 或 ePWM 模块状态(例如 ADC RR 指针或当前 ePWM 计数)、这可能是另一种有用的调试或完整性检查。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、
    非常感谢您对这个问题的想法和指导。
    这对我们来说是非常重要的。
    很抱歉、我的回答比较慢。 我们的日程安排仍然很好
    忙碌地试图在假期之前处理一些艰难的最后期限。
    工作正在进行中、很快将再次与您联系。 如果
    请勿锁定此线程... 我知道我可以启动另一个
    一个、但我想现在让我们继续保持它。

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

    当然、我们可以使该主题保持打开状态、每周进行一次活动
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、

    事情相当繁忙、但我和我的同事真的需要总结一下
    假期前的项目(如果可能)。 因此、我猜会是这样
    联系我们、很快就会有更多想法和问题。
    非常感谢您的所有宝贵建议、想法和
    注释。 我们非常感谢。

    最棒的
    Saleh、Joel 和 Glen。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢 Devin。 在接下来的时间里对此进行更多的工作
    几天左右、同事才走出城市去参加
    节假日。 我们很快就会放弃一些想法和问题。
    圣诞节快乐!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Saleh、

    我将继续并关闭该线程。 您可以通过回复重新打开它、或者、如果它锁定(我认为这将在大约10天内发生)、您可以使用"提出相关问题"按钮。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、

    请让我再呆一周左右。 请保持打开。 同事都不在
    所以我一直在尽力把事情总结出来。 需要几天的时间
    可能包括1月的整个第一周
    希望能尽快与您聊天。 我对我们的工作有一些问题和想法。

    祝您新年愉快。

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

    回顾 ADC 多通道数据采集代码...

    -Saleh