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.

[参考译文] DMA 交替缓冲器

Guru**** 2553260 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/608132/dma-ping-pong-buffer

大家好、我有一个问题:

我正在使用 C5515 eZdsp、我将使用乒乓缓冲器从编解码器获取信号、如音频滤波器演示中所示。

我在单声道模式下配置了编解码器、因此信号仅来自左声道。

我修改了音频滤波器演示代码(以下是我使用 DSPLib fir 函数的代码片段:

while (1)
{
IF (CurrentRxL_DMAChannel ==2)
{
buff 复制(&RcvL1[0]、&Buffer[0]、Xmit_buff 大小);
FIR ((data*)&Buffer[0]、&filter_coeffs[0]、(data*)&Buffer[0]、&dbuffer[0]、Xmit_buff_size、67);
buff 复制(&Buffer[0]、&FilterOutL1[0]、Xmit_buff 大小);
}
其他
{
buff 复制(&RcvL2[0]、&Buffer[0]、Xmit_buff 大小);
FIR ((data*)&Buffer[0]、&filter_coeffs[0]、(data*)&Buffer[0]、&dbuffer[0]、Xmit_buff_size、67);
buff 复制(&Buffer[0]、&FilterOutL2[0]、Xmit_buff 大小);
}
}

问题是什么:每次我切换 DMA 通道时、示波器中的信号都会出现干扰。

那么、我该怎么做呢?  

我还从 DMA 中断使能中禁用了正确的通道:

void enable_dma_int (void)
{
//中断顺序:TXL -> TxR -> RxL -> RXR
//仅启用 TxR (通道1)和 RXR (通道3)。
//DMA_MSK = 0x00F0; //启用 DMA1、通道3和通道1中断
DMA_MSK = 0x0005; //启用 DMA 中断
DMA_IFR = 0xFFFF; //清除中断标志
}

有什么想法吗?  

提前非常感谢、我们非常感谢您的每一项建议

此致、

Paolo

 

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

    我已通知软件团队。 反馈将发布在此处。

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

    我有一些理想、但我想知道一个专家意见:

    问题是否可能是由于 DMA 延迟造成的? 编解码器以192kHz 的频率对输入进行采样。 我一直在使用96 kHz 的频率来解决问题。

    -我是否应该连接两个连续的输入缓冲器并应用一个移动平均值滤波器来减少不满意?

    此致、

    Paolo

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

    延迟缓冲器可能会导致滤波问题。 您可以尝试将 dbuffer 切换为67+2吗?
    还要尝试使用偶数的滤波器长度? 不确定这是否会起作用。

    是否仅在使用 FIR 滤波器时发生毛刺脉冲、即将输入数据复制到输出数据而不进行任何滤波以排除任何 DMA 配置问题?

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

    您好、Lalindra、

    dbuffer 是69个条目的声明数据*。

    缓冲区为1024个条目... 我不理解您的意思...

    谢谢

    Paolo

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

    您好、Lalindra、

    我将继续使用滤波器。 除干扰外、它可以成功工作。  

    现在:毛刺脉冲不会出现在直接输入-输出中、因此由滤波器引入。

    同样、使用偶数个抽头(66)时、问题仍然存在。

    您能否提供几行示例? 我不熟悉 DSP 编程...

    非常感谢

    此致、

    Paolo