2021-3-30 ADI 的DMA操作模式总结

2021-3-30 ADI 的DMA操作模式总结

问题:我阅读了ADSP-21489的数据表,并说明ADSP-21489具有八个SPORT,但它只能微调或接收16通道音频数据。据我了解,总共应该有32声道音频数据,因为每个SPORT都有两条数据线(A和b)。与ADSP-21371相同。

回答:
ADSP-21489处理器具有八个独立且同步的串行端口(SPORT)。根据串行端口体系结构,它在配置为输入的双向串行数据信号之一上接收串行数据,或在配置为输出的双向串行数据信号上发送串行数据。它可以同时在两个通道上进行单向接收或发送。特定SPORT上通道A和通道B的数据方向必须相同请注意,每个SPORT上的SPORTx_DA和SPORTx_DB通道数据信号不能同时发送和接收数据以进行全双工操作。因此,当所有八个SPORT都启用时,串行端口最多只能支持16个DMA通道的音频数据发送或接收。

问题:如何在传输结束时判断中断状态位:
回答:
SPMCTLx寄存器具有SPORT的DMA状态位。您可以参考所参考的SPORT的SPMCTLx位。
请通过以下链接参考ADSP-214XX HRM:
http://www.analog.com/static/imported-files/processor_manuals/ADSP-214xx_hwr_r1-0.pdf
ILAT寄存器具有用于中断状态的状态位。如果启用中断,则无需轮询状态位。一旦传输完成,中断将自动发生。您需要添加一个中断服务例程来处理它们。

追问:因此我使用sport0和sport1接收四个通道的数据,对于每个SPORT通道,两组数据。

 我想对sport0和sport1使用相同的中断函数,因此,在中断函数中,我必须查询中断的状态,以确认sp0和sp1都访问了该中断函数(当sp0或sp1接收数据完成时,中断将赋值),最近我发现SPERRCTLx寄存器的bit4和bit5报告通道a和通道b的中断状态,但是我很确定,请问:我说的对吗?或者给我一些有用的信息。

提高了数据传输的速度,如果我以此方式进行操作,应该如何查询SP0或SP1的中断状态。

回答:
IRPTL和LIRPTL寄存器具有中断的状态位。默认情况下,SPORT 1中断映射到P3I,而SPORT 0中断映射到P6I。您可以分别检查SPORT 1的IRPTL寄存器的位14和SPORT 0的LIRPTL寄存器的位0。

追问:
我尝试了您说的内容,但它不起作用。我想再说一遍,我想检查SP0和SP1的中断状态,我的一些代码如下:

LIRPTL = sysreg_read(sysreg_LIRPTL);

IRPTL = sysreg_read(sysreg_IRPTL);

while((LIRPTL&0x00000001 == 0x00000001)&&(IRPTL&0x00008000 == 0x00008000))

{

       ................

sysreg_bit_clr(sysreg_LIRPTL,P6I);

sysreg_bit_clr(sysreg_IRPTL,P3I);

}

我的代码正确吗?或还有其他问题?请帮助我!

回答:
您是否使用VDSP ++寄存器窗口检查了LIRPTL和IRPTL寄存器的值?您在那里看到正确的值了吗?我也建议您将条件更改为||。而不是&&并尝试。您不必清除LIRPTL和IRPTL寄存器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值