请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320C5534 工具/软件:TI-RTOS
您好!
我正在尝试设置一个从传入 I2S 流(I2S1)到缓冲器的 DMA 传输以进行处理。 我想使用乒乓模式、但不幸的是、我无法这样做。
正常的 DMA 传输工作正常、数据在我的缓冲区中正确显示。 但是、无论我尝试了什么不同的组合、都只使用缓冲器的一半。
这是我对 DMA 的设置(我使用 CSL 3.0.8)
// I2S0 (编解码器 I2S 端口) //通道0:从 I2S 到 PP_CodecUL //(允许的通道0..3 - DMA0) dmaConfig.pingPongMode = CSL_DMA_PING_PON_ENABLE; dmaConfig.autoMode = CSL_DMA_AUTORELOAD_ENABLE; dmaConfig.burstLen = CSL_DMA_TXBUST_1WORD; dmaConfig.trigger = CSL_DMA_EVENT_TRIGGER; dmaConfig.dmaInt = CSL_DMA_INTERRUPT_ENABLE; dmaConfig.dataLen = PP_SIZE; dmaConfig.trfType = CSL_DMA_TRANSIT_IO_MEMORY; dmaConfig.chanDir = CSL_DMA_READ; dmaConfig.dmaEvt = CSL_DMA_EVT_I2S0_RX; // I2S1上的麦克风(CSL_DMA_EVT_I2S0_RX) dmaConfig.srcAddr =(UINT32)(0x2828);// I2S0接收左侧数据0寄存器 dmaConfig.destAddr =(uint32) PP_codecUL; hDMA_CodecUL = DMA_open (CSL_DMA_CHAN0、&dmaCodecUL_Obj、&STATUS); dma_config (hdma_CodecUL、&dmaConfig);
lengh PP_size 等于乒乓缓冲器的总长度(以字节为单位)、但似乎仅使用缓冲器的前半部分。
当在第一个 DMA 中断处中断时、我清楚地看到缓冲区的前半部分被占用、所以我希望看到第二个部分在第二个时被填满
DMA 中断、不正确。 只有上半部分会不断重复使用。
有什么想法吗?
谢谢、
Jacques