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.

[参考译文] AM2634:解码 AM2634内的 APWM 信号

Guru**** 2383140 points
Other Parts Discussed in Thread: AM2634, UCC21732
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1498954/am2634-decoding-apwm-signal-inside-am2634

器件型号:AM2634
主题中讨论的其他器件: UCC21732

工具/软件:

尊敬的 TI 专家:

我们使用 AM2634控制器以及 UCC21732进行电流反馈、以400kHz 的频率输出 APWM 信号。

1)您可以提出对 AM2634控制器内 APWM 信号进行解码的理想方法吗?  
   我已研究 ECAP 外设来解码 APWM 信号占空比。 但是、我们的控制环路以10kHz 的频率运行、我们希望电流读数以10kHz 而不是400kHz 的频率运行。  
   因此、请告诉我微控制器中是否有其他外设、我可以使用这些外设来解码 APWM 信号并对其进行滤波并将其平均值计算为10kHz。

2)请建议使用一个 IC 芯片、我们可以将 APWM 信号转换为模拟信号?

谢谢!

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

    您好 Sue

    1. 您能否提供建议、作为对 AM2634控制器内 APWM 信号进行解码的理想方法?  
      1. 您是否参考了 examples_drivers_ecap_capture_pwm -此示例读取 PWM 波形并确定其频率和占空比
      2. 您还可以参考 eCAP_SIGNAL_MONITOR 示例-  
        1. 本示例配置6个 ECAP 模块、总共具有6个信号
          *启用监控模块,每个模块都支持一个配置。
          *所有 ECAP 都启用了信号监控错误的中断
          *模块。 EPWM 配置为提供输入、通过路由至 ECAP
          * GPI 和 Inputxbar。 该输入以某种方式变化、以将最小值和最大值交叉
          * Siganl 监控模块和应用程序检查中断标志
          *以及调试范围值。
      3. 如果有任何帮助、请告诉我!
    2. 请建议使用一个 IC 芯片、我们可以使用它将 APWM 信号转换为模拟信号?
      1. 让我请一位专家对此发表评论

    此致、
    阿克什特

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

    您好、Akshit、

    感谢您的答复!
    我熟悉 ECAP 外设并使用 ECAP 来解码信号频率和占空比。
    在本例中、我们有一个400kHz 的电流传感器 APWM 信号、我们需要在 AM2634内部解码、然后对其进行滤波并求平均值、使其达到10kHz。 如果我们希望避免为了在软件中降低信号频率而对信号进行滤波和求平均值所需的计算开销、那么实现这种转换的最佳方法是什么? 我们可以在这里使用任何其他外设吗? 请告诉我们。


    我还研究了 SDFM 模块、但与 SDFM 接受的输入类型相混淆。 我们是否可以直接将 APWM 信号馈送到 SDFM 模块进行滤波?

    谢谢!

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

    嗨、Sue、

    我会让 Akshit 为你的最后一个忏悔提供额外的评论。

    关于您的第二个问题:

    [报价 userid="557205" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1498954/am2634-decoding-apwm-signal-inside-am2634

    2)请建议使用一个 IC 芯片、我们可以将 APWM 信号转换为模拟信号?

    [/报价]

    请参阅以下应用手册:

    https://www.ti.com/lit/spra490/

    另外详细介绍了如何实现可用于将分立式 PWM 信号转换为连续模拟电压的三阶低通滤波器。

    此致、

    Zackary Fleenor

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

    您好、Akshit、

    感谢您的详细答复。 它是非常有帮助的。
    我对解决方案2 (  全 MCU 解决方案:ECAP + DMA +软件均值计算 )并且已经开始工作,但是,我在配置 DMA 时遇到了一些困难。

    让您的项目正常运行后、能否分享一下?

    感谢您发送编修。  

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

    您好 Sue

    是的、我会尽快分享。 同时、您可以分享配置 DMA 时面临的困难。

    我将尽力帮助您解决这些问题。

    此致、
    阿克什特

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

    您好 Sue

    是的、我会尽快分享。 同时、您可以分享配置 DMA 时面临的困难。

    我将尽力帮助您解决这些问题。

    此致、
    阿克什特

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

    您好、Akshit、

    我已将 EDMA 配置为事件模式、以便在发生 ECAP 事件时触发 DMA 传输。 ECAP 捕获寄存器被复制到缓冲区中、 从而在对其求平均值之前捕获40个占空比样本。 我希望只要 ECAP 捕获到事件、就能持续触发 DMA 传输。
    但是、我在开始运行代码后才看到 DMA 传输发生一次。
    您能告诉我如何将 DMA 传输设置为连续传输吗?
    此外、您是否有机会在我可以访问的地方分享您的项目?

    谢谢!

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

    您好、Akshit、

    感谢您的答复。
    我的代码的设置完全如上所述。 但是、我仍然无法进行连续的 DMA 传输。

    以下是我的观察结果-
    1)当 LINK = 0x4000时、在第一次 DMA 传输发生后、执行进入 ISR。 此时、寄存器读数为 EMR=0、EER=1、IER=1、IPR=1。
       写入 ICR=1不会清除 IPR。  
       由于 IPR 保持设置为1、因此 ISR 在没有任何新的 DMA 传输(缓冲区不会使用新的占空比进行更新)的情况下持续触发。

    2)当 LINK = 0xFFFF 时、在第一次 DMA 传输发生后、执行进入 ISR。 此时、寄存器读数为 EMR=1、ER=1、EER=1、SER=1、          IER= 1、 IPR=0。 调用 EDM_ClrMissEvtRegion ()不会清除 EMR。 我重置目标地址并在 ISR 中再次重新启用 DMA 通道、但      执行会卡在 SemaphoreP_Pend()循环中、之后我看不到 ISR 触发。

    3)我的项目编译良好,但在调试时,我无法进入 EDMA SDK API。 我检查了我的工程属性、它与示例工程非常相似。 您能告诉我、 这里是否缺少任何配置?

    您能否尝试在您的身边重现此问题、并告诉我如何解决?
    我也尝试了 eCAP_EDMA 示例工程、但在尝试设置连续传输时看到了类似的结果。 请参阅与之相关的以下主题。
    e2e.ti.com/.../am2634-q1-requesting-suggestions-to-resolve-issue-related-to---dma-triggered-continuously-by-ecap

    谢谢!

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

    下面是我的 ISR 设置-  




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

    您好、Akshit、
    您是否有机会重现我最终遇到的问题? 尽快感谢您的意见。 谢谢!

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

    我解决了这个问题。 感谢您的意见!

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

    您好 Sue、

    我很抱歉不能早点把这个项目交给你! 我非常高兴听到您成功独立解决了这个问题!

    如果不是太麻烦、特别是如果我们之前的任何故障排除步骤为您指明了正确的方向、您是否愿意分享准确的解决方案或最终为您单击的内容? 我们很乐意从您的体验中学习、并将其作为实际应用示例整合到我们的 SDK 中。

    非常感谢您的更新和您令人难以置信的耐心!

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

    您好、Akshit、

    我最初使用同一参数集的地址偏移量对 edmaParam.linkAddr 进行了编程 、因为我认为它将自动更新通道的参数集以进行连续传输。 但是,这对我来说是行不通的。 它只帮助避免设置 EMR 位。

    对参数设置进行 Re 编程、重新请求通道、并在每个块传输工作后重新启用传输。  

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

    我有一个后续问题-  
    上述代码增加了一些开销、特别是在实时应用中对多个 DMA 通道进行编程时。
    我是否可以直接写入 AM2634中的寄存器(例如 C2000控制器-代码如下所示)? 我尝试了搜索、但找不到 AM2634 SDK 中可供用户使用的寄存器结构。

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

    您好 Sue、

    非常感谢您与我分享解决方案!

    以上代码增加了一些开销、特别是当您在实时应用程序中对多个 DMA 通道进行编程时。
    我是否可以直接写入 AM2634中的寄存器(例如 C2000控制器-代码如下所示)? 我已尝试搜索、但未找到 AM2634 SDK 中可供用户使用的寄存器结构。

    您也可以直接写入 AM2634中的寄存器、我建议您使用 AM263x 寄存器附录、以及对于 EDMA 寄存器和类似的其他外设、使用{MCU_PLUS_SDK_PATH}/source/drivers/edma/v0文件夹。

    该驱动程序应有助于了解如何在 AM263x 中对寄存器进行编程。

    此致、
    阿克什特