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.

[参考译文] TMS320C6747:为2个端口 McASP 输入和输出分配多个 DMA 通道

Guru**** 2553450 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/605282/tms320c6747-multiple-dma-channels-allocation-for-2-ports-mcasp-input-and-output

器件型号:TMS320C6747

尊敬的香榭丽舍

我的客户要求了解当他们将使用额外的 McASP 端口进行其他音频 I/O 时如何分配更多的 DMA 通道

例如、他们希望通过 McASP1和 McASP0 (AXR0[9])实现接收音频通道、并通过 McASP1和 McASP2 (DIT)传输音频通道。

 您能否告诉我他们如何添加 DMA 通道以进行额外的 McASP0 和 McASP2处理?

谢谢、此致、

SI

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

    Sung-IL、

    他们使用什么示例代码将 DMA 通道与 McASP1配合使用? 这将是最好的起点。 或 EDMA 代码进行编程。

    您的客户还应查看 C6000嵌入式设计技术讲座在线技术讲座材料中的材料。 本节课包含有关使用 C674x 器件的详细信息、即使它直接讨论了 C6748、但与 C6747的相似性也很强。 有一节介绍如何使用 EDMA3。

    此致、
    RandyP

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用高级 EDMA3 LLD 驱动器、则应能够在 EDMA_DRV_Open 之后使用"EDMA3_DRV_requestChannel" API 来请求额外的通道资源。 分配通道后、您可以在启动手动或基于事件的传输之前设置参数集。

    如果您不使用 EDMA 驱动程序、但使用功能 CSL、则可以在调用 EDMA3以请求任何通道后使用 CSL API "EDMA3RequestChannel"来完成相同操作。 在此器件上、分配给外设的 EDMA 通道不是固定的、因此您可以请求任何通道。

    有一个 MCASP 示例在 SDK 中使用了 LLD (pdk_omapl_x_X_X_X/packages/ti/drv/McASP/example)以及 CSL (pdk_omapl_x_X_X/packages/ti/board/diag/McASP)、可用于参考。

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

    我的客户尝试按照您在 McASP_audiodc_test.c (\\pdk_omapl13x_1_0_1\packages/ti\board\diag\McASP_audiodc\src\McASP_audiodc_test.c)上的建议实施它、但他们发现 DMA 的音频声音不连续。
    当他们尝试在没有 DMA 的情况下测试它时、音频质量没有问题。
    您能否告诉我应该在 DMA 中检查哪些参数以消除音频声音中的这种不连续性?


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

    Si、

    您提供的信息不足以供我们评论。 请提供修改后的代码源文件以及时钟和串行器的方框图、以便我们能够评论该主题。 如果不了解配置,我们就很难就此问题发表意见。

    只需确认一下、使用音频子卡的原始8通道音频回送正常工作、但仅当您使用 DMA 添加更新的 McASP0代码时、才会在音频输出中观察到不连续性。

    此致、
    Rahul

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

    您好、Rahul、

    遗憾的是、即使源代码是简单的示例代码、他们也很难向公司外部提供源代码、所有电子邮件都应与其安全性进行检查。
    这就是他们等待我们的示例的原因、他们将根据我们的示例代码自行修改。
    在音频子卡上使用 McASP1和 McASP0是否有其他情形?

    您能想象一下 DMA 控制应该检查什么吗?
    您能否想象没有 DMA 时音频质量没有问题的原因?

    谢谢、此致、
    SI

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

    1.请确认、使用音频子卡的原始8通道音频回送正常工作、但仅当您使用 DMA 添加更新的 McASP0代码时、才会在音频输出中观察到不连续性。

    2.当它们不使用 DMA 时、是仅用于 McASP0、还是用于原始 McASP1和新的 McASP0的 CPU (无 DMA)?

    3.请说明不连续性。 是针对每个被填充的缓冲器、缓冲器的 N 个计数、还是随机发生?

    DMA 是在 McASP 和内部存储器还是外部存储器之间传输? 如果所有 DMA 通道都尝试同时访问外部存储器、则可能存在资源冲突。 在这种情况下、我们成功地直接传输到/从 L2或 SharedRAM 等内部存储器、然后从该中间缓冲器传输到分离的最终位置; 这可以使 McASP0/1的访问速度尽可能快、然后在不会发生冲突的不同时间进行缓冲区传输。

    5.所有 McASP 是否都以相同的时钟速率运行? 帧同步速率的情况下?

    6. McASP 是否彼此同步,意味着它们都将同时满/空?

    McASP 的运行速度有多快、它们的位时钟和帧速率是多少? DSP 的运行速度有多快? SDRAM 的运行速度有多快?

    正在使用哪些 DMA 通道?
    为每个通道选择了哪些传输控制器?
    使用了什么 Acnt、Bcnt 和 Ccnt 值?
    OPT 寄存器的值是多少?
    是否有任何通道从一个通道连接到另一个通道?

    音频不连续性当然是由一个或多个 McASP 服务太晚导致的、这会导致传入样本丢失和/或传出样本重复。 通常情况下、DMA 为外设提供服务比 CPU 提供服务要容易得多。 但是、如果它们对 DMA 进行了编程、以至于必须在很短的时间内使用过多的资源、则可能会发生这样的问题。

    解决办法是弄清冲突是什么,然后找出能够消除或尽量减少这些冲突的变化。

    无法推测他们可能在代码中引入的所有可能问题。 如果他们能够回答上述问题、就会为我们提供一些要考虑的线索。

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

    我查看了更多详细信息、回答如下。
    正如我说过的、他们在'mcasp_audiodc_test.c'主函数中为 McASP0启用了 McASP0和 DMA、并通过 McASP1 TX 将其添加并输出、将其与 McASP1输入(8ch)混合。
    例如、McASP0 RX (2ch)+ McASP1 RX (8ch)-> McASP1 TX (8ch)

    此外、让我纠正这种噪声。 它不是不连续的、而是由溢出引起的失真噪声。 抱歉我犯了这个错误。

    对于您的问题、
    1.是的。 原始的8通道音频仍然有效。

    2.我发现他们使用了不同的示例、并在下面用于测试不带 DMA 的 McASP0。
    support.spectrumdigital.com/.../DSKDA830_BSL_revf.zip

    在 DSKDA830_BSL_revf\dskda830_v1\DSP\tests\audioboard\dc_audio 中

    DC_AUDIO_TEST.c


    3.再次抱歉。 这不是不连续的。 它是失真噪声。 当没有音频输入源(例如、拔下的音频输入)时、没有听到噪音。

    4、仅限内部存储器。 它们现在不使用外部存储器。

    它们对 McASP0和 McASP1 Rx 输入使用相同的48kHz 频率。

    不是的,他们在音频 DC 上测试它( www.spectrumdigital.com/.../ ),我认为它在音频 DC 中不是相互同步的。

    McASP 使用了7.48kHz I2S 输入和300MHz CPU 时钟。
    它们为 McASP0 RX 分配了 DMA0、并且除缓冲器地址外、所有其他 DMA 设置都从 McASP1复制。 未使用通道链。



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

    如果所有数据样本都在正确的时间(无不连续)发生、但某些数据值不正确(失真)、那么我不能理解 DMA 访问和 CPU 访问之间存在差异的原因。 在这种情况下、我不会有太大帮助。

    作为实验、让 McASP0和 McASP1的所有 DMA 通道保持运行、但不要将 McASP0添加到 McASP1。 请使用完整代码确认这种失真是否在这种情况下发生、但仅使用数据 McASP1 RX (8ch)-> McASP1 TX (8ch)。

    作为第二个实验、请勿使用 McASP1 RX (8ch)、而是将 McASP0 RX (2ch)的副本发送到所有 McASP1 TX (8ch)。 请使用完整代码确认这种失真是否在这种情况下发生、但数据仅为 McASP0 RX (2ch)-> McASP1 TX (8ch)。

    这些是我唯一的想法。

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

    McASP0 RX 和 McASP1 TX/RX 之间如何不同步?
    当我检查 AudioDC 原理图时、McASP0 RX 和 McASP1 TX/RX 之间似乎无法同步。 我想知道是否可以添加 McASP0和 McASP1的音频输入、尽管它们之间不同步。

    即使 McASP0 RX (2ch)+ McASP1 RX (8ch)-> McASP1 TX (8ch)之间存在不匹配的 SyncE、您是否认为这种情况是正常的?


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

    您提到8通道 McASP1模拟代码独立工作。 您能否在集成到完全实现之前、确认具有 DMA 的数字回送代码(McASP0 RX 至 McASP1 TX)是否独立工作。 这将有助于我们了解数字回路和模拟回路之间没有影响此实现的时钟同步问题。 这将通过 Randy 在上一个帖子中请求的实验加以澄清。

    在离线讨论中、我们已经讨论了 McASP0和 McASP1同时运行此用例的时钟问题。 他们是如何处理这个问题的?

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

    我将检查您的疑问、但我担心他现在将这个问题搁置并参与其他工作需要时间。

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

    您好、Rahul 和 RandyP、

    为了测试多个 McASP 的工作、我修改 了'upport.spectrumdigital.com/.../DSKDA830_BSL_revf.zip'的 dc_audio_spdif_tone.c 文件示例、并发现结果与 'mcASP1'配置设置的位置不同、如 attached.e2e.ti.com/.../dc_5F00_audio.zip

    'c_audio_SPDIF_THOLE_FAIL.c'文件和'c_audio_SPDIF_ok.c'之间的唯一区别是'MCASP'设置的位置、我认为应该错过一些东西。 请检查一下、告诉我这种情况下的问题是什么?

    谢谢、此致、

    SI

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

    您是否说 dc_audio_spdif_ok.c 工作正常、所以您的客户现在有工作代码?

    此致、
    RandyP
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不需要。dc_sio_SPDIF_ok.c 仅用于测试不带 DMA 的 McASP 端口。 没有 DMA 代码。 另外、通过 McASP2生成"音调"的代码也是这样、我修改了它以通过 McASP1生成"音调"、但发现了一些与 McASP1设置的代码位置相关的奇怪东西。 因此、我要问这个问题、以检查它是否有助于解决客户的问题。

    很抱歉让你感到困惑。


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

    您好!

    我在 PSDK 电路板诊断示例(pdk_omapl137_1_0_1/packages/ti/board/diag/McASP_audiodc)上实现了额外的'McASP0 RX'、并连接了源 files.e2e.ti.com/.../mcasp_5F00_audiodc_5F00_test.zip

    此外、我还附上了'.out' file.e2e.ti.com/.../c674x.zip

    您能否检查此文件并告诉我是否有遗漏的内容? 您可以通过选中"Add_McASP0_RX"定义来找到我的实现方案。

    谢谢、此致、

    SI

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

    您好!

    我成功调试了 McASP0、现在可以听到 McASP0和 McASP1的音频声音。 但是、我发现了稳定性问题、在所有音频通道中播放3~5分钟后音频声音将会中断、看起来 DMA 中断已中断、不再发生中断。

    当我对 McASP1 Rx 进行更多测试并禁用 DMA 通道时、我发现稳定性没有问题。 因此、我担心这个稳定性问题是由中断编号引起的、并且 DSP 无法处理这么多的中断:4通道 Rx (McASP1)+ 2通道 Rx (McASP0)+ 4通道 Tx (McASP1)。

    请检查一下吗? 我附上了我的来源、请查看。

    此源代码来自'\\pdk_omapl137_1_0_1\packages/ti\board\diag\McASP_audiodc\src'、您可以通过跟踪'MCASP0_enabled'来检查我的实现。

    e2e.ti.com/.../8030.mcasp_5F00_audiodc_5F00_test.zip

    谢谢、此致、

    SI

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

    您能否告诉我、下面定义的'mcasp_audiodc_test.c'中的'mcASP0_MUTE'的用途是什么?

    McASPPinDirOutputSet (SOC_McASP0_CFG_BASE、MCASP_PIN_AMUTE);
    McASPPinMcASPSet (SOC_McASP0_CFG_BASE、~MCBSP_PIN_AMUTE);
    McASPPinGPIOSet (SOC_McASP0_CFG_BASE、MCASP_PIN_AMUTE);

    删除这些代码(注释)后、似乎出现了音频质量问题和稳定性问题。 我想知道该 McASP0 AMUTE 引脚在此测试应用中的用途是什么。


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

    Si、

    您的客户设计是否遵循与音频子卡相同的设计?  AMUTE 引脚通常用于向 ADC 发送静音信号。 但在音频 DC 上、我们注意到音频子卡上的 AMUTE 引脚连接到时钟多路复用器、如下所示、这可能是导致问题的原因。

    此致、