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.

[参考译文] TMS320C6746:EMIF 接口

Guru**** 2587365 points
Other Parts Discussed in Thread: TMS320C6746, CODECOMPOSER

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593150/tms320c6746-emif-interface

器件型号:TMS320C6746
主题中讨论的其他器件: CODECOMPOSER

客户询问:

我们当前使用不带 DMA 的 TMS320C6746的接口 EMIF 写入数据 、现在需要对 CE_EMIF 进行池化、以了解何时 可以发送下一个写入操作。

我们还没有找到更好的方法、并且想知道是否有一种、或者是否存在一个标志 来指示 CE_EMIF 已从 L 切换到 H、以指示当前 EMIF 写入 操作已完成。

 

请提供建议吗?

 

此致、Bernd

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

    我已通知团队。 他们的反馈将在此处发布。
    您能否分享您正在使用的 SDK?

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

    "集合 CE_EMIF"是什么意思?

    如果您不使用 DMA、则您使用的是 DSP/CPU。 如果 DSP 写入 EMIF、如果我正确调用、它将进入缓冲区。 然后、当 DSP 再次写入时、它将再次进入该缓冲区。 如果缓冲区已满、DSP 将在 EMIF 操作完成前挂起、这是您完成 EMIF 操作的唯一指示。

    使用 DMA。 这是您可以获得的最佳建议。 这就是 DMA 的作用。 DMA 在移动数据方面比 DSP 更高效。 为此使用 DMA。

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

    我已开始此主题、但让客户跟进您的问题。

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

    您好、Randy

    感谢您的反馈。

    我们使用 CodeComposer 5.5。

    在这种情况下,我们不使用 DMA,因为它是很少的单字写入。

    我们观察到、当 CE_EMIF 未 Ris1时、我们可以写入缓冲器、从而生成多个缓冲器
    在写入之间不将 CE_EMIF 设置为1的情况下写入、这对于我们接收 EMIF 字的驱动器而言是一个问题。
    这就是我们对 CE_EMIF 进行池处理的原因、即我们有一个循环定期检查引脚是否在写入前设置为1
    缓冲器中的下一个数据。

    我们还在我们的应用中使用了 C5009 DSP、并且行为是不同的、即
    在连续写入之间、CE_EMIF 被设定为1 (我们没有需要检查 CE_EMIF 来发送下一个
    要写入缓冲器的字)。

    总之、C6746与 C5009有不同的工作方式、而对于我们的特定情况、只有 C6746
    方法是在我们需要时将下一个数据放入 EMIF 缓冲器之前定期检查 CD_EMIF
    在两个连续写入之间将 CE_EMIF 设置为1。

    此致、

    特里斯坦

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

    虽然我不熟悉 C5009、但我可以肯定地理解、某些 TI 器件系列以不同的方式实现 EMIF 时序。 如果 C6746 EMIF 没有在之间插入等待状态、则它将为您的数据传输提供最大吞吐量性能。 这当然是 C674x 系列的设计目标。

    当您说"对 CE_EMIF 进行池处理"时、是否意味着您轮询 CE_EMIF? 您目前是如何做到这一点的?

    根据您的上述描述、您已经找到了一种准确执行所需操作的方法。 您现在要解决的问题是什么?

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

    您好、Randy、

    为了轮询 CE_EMIF、我们放置了一些等待时间并检查 CE_EMIF 是否已进行从低电平到高电平的转换。 不是很方便,但可以用。

    根据我们已经检查的文档、没有标志指示这个从低电平到高电平的转换(或者在 CE_EMIF 被设定为高电平的情况下写入传输结束)
    我们想与您再次确认、这实际上 不是用于此目的的标志。

    此致、

    特里斯坦

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

    我不知道一种轮询 CE_EMIF 的方法。 如何"检查 CE_EMIF 是否已实现从低电平到高电平的转换"? 如何检测 CE_EMIF 的当前状态?

    我不知道任何指示 CE_EMIF 从低电平到高电平转换或写入传输结束的标志。

    由于您显然已经制定了一种方法来准确执行您需要执行的操作、那么您现在想要解决的问题是什么? 此解决方案是否因其他原因而不能为您效劳?

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

    您好、Randy、

    为了轮询 CE_EMIF、我们考虑将引脚置于 GPIO 模式并检查其状态。

    感谢您的反馈、即不存在用于执行该检查的标志、因此总之、我们将继续使用我们当前的轮询方法。

    在我的一侧、此案例已关闭。

    再次感谢您的反馈、

    此致、

    特里斯坦

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

    如果您可以使用外部连接或导线将 CE_EMIF 信号连接到器件上的另一个 GPIO、那么您应该能够在 GPIO 状态从0更改为1时生成中断。 这样就无需轮询、但需要更换外部接线。

    或者、如果性能可以处理两次写入之间 CE_EMIF 为高电平的偶尔2个 EMIF 周期、则可以为所需的全延迟设置计时器。 如果将定时器设置为 EMIF 计时寄存器中编程的 EMIF 时钟周期数加上1个额外的 EMIF 时钟周期、则当确定 CE_EMIF=1时、定时器中断将发生。 一些额外的定时器周期会增加一些裕量、但会增加两个 CE_EMIF=1周期的运行机会。 您可以执行一些测试来确定尽可能小的延迟、从而确保 CE_EMIF 始终返回到1。 或者、您可以将计时器与轮询方法结合使用、但轮询时间要小得多。

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

    您好、Randy、

    非常感谢您为改进我们的系统而提出的建议。

    此致、

    特里斯坦

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

    你好!

    如果我正确地解决了您的问题、您需要 EMIF 在后续写入之前停用。 如果是、请考虑在写入之间进行虚拟读取。 根据 SPRU266、第1.2条:

    C6000 EMIF 具有一个周期命令到命令的转换时间。 至少1个数据死区周期
    始终包含在命令之间、这样读取数据和写入数据就不会在同一周期内被驱动。