DMA服务于两个SRC通道吗

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
MLU.
离线
最后看到:6个月前1年
加入:2017-02-14 04:30
DMA服务于两个SRC通道吗

我正在为DA14681/SDK1.0.8编写APU驱动程序代码,因为SDK1.0.8还没有准备好相关代码。
我的目标是路由两个PMC/I2S通道:PCM1_IN1[31-8], PCM1_IN2[31-8]到两个SRC通道SRC_IN1,
SRC_IN2,然后通过SRC硬件输出到SRC输出通道:SRC_OUT1_REG[]/SRC_OUT2_REG[],
然后路由两个SRC输出通道:SRC_OUT1_REG[]/SRC_OUT2_REG[]到DMA通道。
我通过DA14681数据表Rev.2.1(2016年7月15日)阅读,并在这里有疑问:
1)DMA是否支持SRC频道?

从460的第95页,
“20.1.1 I / O通道
SRC块将两个24位通道转换为
立体声对或两个单声道。PCM线性
在SRC_IN上接收数据对,输出为
2x24位在src_out左对齐“,
它说SRC支持两个频道;从“图56:采样速率转换器框图”中,我们有两个通道寄存器:
Pcm_in1 [], pcm_in2 [], src_in1_reg [], src_in2_reg [], src_out1_reg, src_out2_reg

从460页第74页,“表29:DMA服务的外设”,它说服务的外设包括PCM RX/TX, SRC RX/TX,但它
没有明确地说两个PCM,SRC通道。

从460页第426页,“表756:DMA_REQ_MUX_REG (0x50003580)”,似乎只有一个DMA通道SRC_TX,
所以我想知道如何将两个SRC通道送入一个DMA通道,或者它一次只支持一个SRC通道映射到一个DMA通道。

从代码“hw_dma.h”
typedef enum {
HW_DMA_TRIG_SPI_RXTX = 0 x0,
hw_dma_trig_spi2_rxtx = 0x1,
HW_DMA_TRIG_UART_RXTX = 0 x2,
HW_DMA_TRIG_UART2_RXTX = 0 x3,
HW_DMA_TRIG_I2C_RXTX = 0 x4,
HW_DMA_TRIG_I2C2_RXTX = 0 x5,
hw_dma_trig_usb_rxtx = 0x6,
HW_DMA_TRIG_I2S_LEFTRIGHT = 0的混合体,
HW_DMA_TRIG_PDM_LEFTRIGHT = 0 x9,
HW_DMA_TRIG_FTDF_RXTX = 0 xa,
hw_dma_trig_ecc_rxtx = 0xb,
hw_dma_trig_adc = 0xc,
hw_dma_trig_none = 0xf.
hw_dma_trig;

I2S_LEFTRIGHT, PDM_LEFTRIGHT表示两个通道,但是不知道如何将两个通道提供给一个DMA通道,并且PDM表示这两个通道
SRC吗?还是只意味着PDM?

2)相关问题,由于PCM和SRC有如上所述的两个通道,
从460的第431页,“表767:APU_MUX_REG(0x5000401C)”,
复位
6 R / W PDM1_MUX_IN PDM1输入MUX
0 = src1_mux_in.
1 = PDM输入

5:3 R/W PCM1_MUX_IN PCM1输入mux
0 =了
1 = SRC1输出
2 = PCM输出寄存器

2:0 R/W SRC1_MUX_IN SRC1输入mux
0 =了
1 = PCM输出
2 = SRC1输入寄存器
这张桌子让我很困惑
1)位2:0,设置为1以将PCM输出路由到SRC输入?
但是从460页的第95页,“图56:样本速率转换器框图”,它说路由PCM_IN1/PCM_IN2到SRC_IN,

2)位5:3,设置为1到SRC1输出的路由,设置为2到PCM输出寄存器的路由,
同样,在460页的第95页“图56:采样速率转换器框图”中,它说明了将SRC_OUT1路由到SRC_OUT1_REG或PCM_OUT

如果我的描述也令人困惑,以其他方式,我想实现PCM_IN到USB的场景:
来自“表44:典型的SRC用例”FR Page 96
叙述了。和
如何配置APU_MUX_REG将通道PCM_IN1_DATA - > SRC_OUT1_REG,PCM_IN2_DATA - > SRC_OUT2_REG分开?

关键词:
设备:
MT_dialog
离线
最后看到:4个月2周之前
工作人员
加入:2015-06-08 34
嗨,反光镜锁定

嗨,反光镜锁定

是的,SRC的DMA既支持渠道(它的一个模块,它支持2频道,这就是为什么在DMA数据表显示一个SRC部分),但由于没有实现从SDK没有适当的枚举,您必须指定两个SRC输出,SRC_OUT1和SRC_OUT2到DMA的一个不同的通道,两个不同的通道,两个RX/TX对并且只使用RX。

关于第二个问题:

1)是,设置为1的位2:0将直接将PCM输出的两个通道直接路由到SRC。

2) SRC输出可以直接路由到PCM,也可以通过SRC_OUT1_REG或SRC_OUT2_REG获得。

3)为了路由两个输出通道的PCM通过SRC到DMA APU_MUX_REG,你应该配置位2:0 SRC1_MUX_IN到1=PCM输出(这将配置输出的PCM被用作输入在SRC)。

由于MT_dialog

MLU.
离线
最后看到:6个月前1年
加入:2017-02-14 04:30


谢谢你的回应。可以确认DMA支持SRC频道。
有几件事可能需要进一步澄清:
1.你能在你的描述中解释一下:“两个rx / tx对并仅使用rx”
如果我将DMA_REQ_MUX_REG(0x50003580)设置为0x09,则它将将SRC_OUT1_REG向DMA通道0路由到DMA通道0,以及SRC_OUT2_REG到DMA通道1.(没有任何相关的“TX”),对右?
2.关于第二个问题,我可能理解不正确:你所说的“PCM output directly to SRC”是指SRC从PCM_DATA_IN引脚/gpio获得输入吗?
(在数据表中,图56表示PCM_IN1 [31-8],PCM_IN2 [31-8],但在表767:APU_MUX_REG(0x5000401C)中,它表示PCM输出,可以与PCM_DATA_OUT PIN / GPIO相关)

2'如果我设置APU_MUX_REG (0x5000401C)为0x09, (00001001b),我应该能够获得SRC输入从PCM_DATA_IN引脚和SRC输出到SRC_OUT1_REG/SRC_OUT2_REG,对吗?

谢谢,

陆打成一片

MT_dialog
离线
最后看到:4个月2周之前
工作人员
加入:2015-06-08 34
嗨,反光镜锁定

嗨,反光镜锁定

1.通过“两个RX / TX对并仅使用RX”,以下是:

  1. 您需要对DMA_REQ_MUX_REG进行编程。DMA01_SEL到0x9 (SRC),并对DMA23_SEL做同样的事情(假设您将选择通道对0/1,2/3)
  2. 然后,您将只需要打开“Rx”通道(通过设置DMAx_CTRL_REG的'DMA_ON'位域),这意味着通道0(对于对0/1)和通道2(对于对2/3),然后分别为这些通道编写所需的寄存器。

对于通道0,启动地址将是SRC1_OUT1_REG和通道2之一,起始地址将是SRC1_OUT2_REG之一。通过这种方式,您将拥有两个通道0和2获得相同的SRC请求信号,因此您将能够跟踪立体声样本。您不需要两对(1/3)的“TX”通道,因此您不应该打开它们(甚至不需要编程其各自的寄存器)。

2.为此,您只需要将其中一个选定的GPIO配置为PCM_DI模式(输入),并基于PCM配置,输入数据应放在PCM1_IN1_REG和PCM1_IN2_REG中。这些应该通过编程apu_mux_reg.src_in_mux来驱动到src输入mux到0x1(选择PCM输出)。

如果您只想获取SRC1_OUT1 / 2_REG输出样本并将其存储到内存,则无需更改APU_MUX_REG.PCM1_MUX_IN。如果您再次需要将SRC输出样本再次输出到另一个GPIO,则只需要将SRC输出样本输出。仅在这种情况下,您需要将APU_MUX_REG设置为0x9。如果您只想将SRC输出样本存储到内存中,APU_MUX_REG应只是设置为0x1。

由于MT_dialog