TI中文支持网
TI专业的中文技术问题搜集分享网站

6748 mcasp multi AXRn data line + EDMA problem

Dear friends:

1, 我现在用6748做开发,用TI默认的startwarer的MCASP的例程,可以正常跑起来

2,但是我们需要用两个AXRn data line 作为输入, AXR0和AXR1. 因此我做了最小的修改,只是增加AXRn的配置,同时也修改platform.lib中关于mcasp的配置:

    // 设置串行器,设置12通道接收
    McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, 0);
    McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, 2);

    // 初始化 McASP 引脚,和引脚输入输出方向
    McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
    McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
                                               | MCASP_PIN_ACLKX
                                               | MCASP_PIN_AXR(2)
                                               | MCASP_PIN_AXR(0));

这样修改完以后,EDMA的RX通路就不工作了,没有McASPRxDMAComplHandler()接受中断上来。因此我的问题就是还需要配置什么吗?

3,我看了MCASP的文档: Table 23-8:

虽然使能了多个AXR,但是MCASP是自动去读每个AXR data line上的数据的,因此EDMA的配置不需要做修改(不知道我这样理解是否正确)。

这个问题对于我们十分着急,希望能尽快得到您的答复。

Thanks.

Shine:

用一个EDMA事件就可以了,一次EDMA的触发就要将所有通道数据搬完,有几个通道就搬几个,ACNT需要改成element_size*channel,处理需要算法自己将数据分开处理。

chenyu zhang2:

回复 Shine:

hi Shine:

感谢你的答复,那么我现在改成4个输入AXR data line,word size和slot size都是32bit,stereo,那么ACNT要填多少呢?我现在发现如果ACNT=16还是没有EDMA的中断,但是如果改成ACNT=32,就有EDMA的中断了。请问这是为什么?还有如果ACNT=32的话,我的数据会是正确的吗?

Thanks.

Shine:

回复 chenyu zhang2:

请问每条线上几个slot?

chenyu zhang2:

回复 Shine:

每条线上2个slot

Shine:

回复 chenyu zhang2:

2个slot的话,ACNT=4x2x4=32。

赞(0)
未经允许不得转载:TI中文支持网 » 6748 mcasp multi AXRn data line + EDMA problem
分享到: 更多 (0)