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.

[参考译文] CCS/TMS320F28377D:F28377D CPU2 DMA 溢出

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587492/ccs-tms320f28377d-f28377d-cpu2-dma-overrun

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

尊敬的 TI 专家:

我使用 F28377D CPU2从 emif1向 DMA 数据创建了一个项目、并在 Code 复合软件工作室中创建了一个项目。  当 触发事件频率为667khz 或更高时、我遇到 DMA 报告溢出的问题。 当我将触发事件设置为500kHz 时、不会设置溢出标志。

如果它在 CPU1中运行相同的配置、则不会报告溢出标志。 有什么问题?

我尝试将外部 GPIO 中断和 CPU2中的 EPWM1 SOCA 作为触发源、两者均在667khz 或1M 的运行 IF 频率上。

我正在使用 DMA CH1。 即使我将 CH1设置为最高优先级、也没有任何变化。

以下是 CPU2 DMA 配置的代码。 DMA 时钟在 main 上被启用。

 //初始化 DMA
 DMAInitialize();

 EALLOW;
 DmaRegs.PRIORITYCTRL1.bit.CH1PRIORITY = 1;//配置通道1高优先级
 EDIS;

 DMACH1AddrConfig ((volatile UINT16 *)&DMADbuffer[0]、(volatile UINT16 *) external_ADC_address);
 DMACH1BurstConfig (0、0、0);//将设置为使用32位数据大小、指针基于16位字
 DMACH1TransferConfig (0、0、2);
 DMACH1WrapConfig (0xFFFF、0、0xFFFF、0);

 DMACH1ModeConfig (DMA_EPWM1A、PERINT_ENABLE、OneShot_disable、CONT_ENABLE、
   SYNC_DISABLE、SYNC_SRC、OVEFLOW_ENABLE、第三十二位、CHINT_BEGIN、
   Chint_enable);

您能帮助分析吗?

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在每个与一个器件隔离的单个器件(或)上都看到了此问题?

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

    1) 1)想知道 CPU1/CPU2之间的 EMIF 配置是否存在差异
    2) 2)在 CPU1/CPU2情况下是否使用相同的存储器(缓冲器)?
    3) 3) DMA 的配置是否相同?
    4) 4)您是否可以尝试禁用 DMA 的其他触发器、但在两个 CPU 上禁用 EMIF?
    5) 5)开发调试代码以使用 CPU 而不是 DMA 进行传输? 如果您仍然看到问题、则必须是 DMA 造成的

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

    您好、Manoj、

    检查所有配置后、根本原因是 EMIF 配置。 当我将主代码的 EMIF1抓取从 CPU1移动到 CPU2项目时。 溢出问题 已解决。  当我设置为2.5M 时、未观察到溢出。  

    我仍然很好奇 DMA 总线为什么与 EMIF 配置相关?

    谢谢。

    此致、

    Jiang Jerome   

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

    您好 Jerome、

    我不理解以下评论-

    [引用]我仍然很好奇 DMA 总线为什么与 EMIF 配置相关? [/报价]

    您能否提供有关 DMA 突发与 EMIF 配置之间的链路的更多详细信息?

    此致、

    Vivek Singh

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

    您好、Vivek、

    在我的不工作配置中、CPU1抓取了 Emif1。 根据下面的数据手册说明、并且我们 只通过 EMif1从外部 ADC 模块读取、所有的 EMif1 信号和引脚都针对 CPU2进行配置。 在此 配置中、EMIF 控制器无法处理 CPU2.DMA 请求/事件。 当我更改为 CPU2抓取主控方时、它会起作用。

    spruhm8e_page2415。 主机仲裁块始终允许来自任何主机的 RD 访问。 但对于 WR 访问(或
    执行访问)、主仲裁块只允许从 CPU 子系统访问主器件
    根据中 EMIF1MSEL 寄存器中的配置、获取 EMIF 模块的主器件所有权
    存储器控制器模块。

    我现在没有更多问题了。

    也许可以更新数据手册、以鼓励 CPU2在 EMIF 从 CPU2请求时抓取主器件。  

    再次感谢有关 我的故障排除的提示。

    此致、

    Jiang Jerome

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

    由于您只执行读取访问、除非对 EMIF 也有写入访问、否则 EMIF1MSEL 设置不应影响功能。 我知道在切换 EMIF1MSEL 后解决了该问题、但最好检查您的设置中是否存在导致此问题的写入访问。

    此致、
    Vivek Singh