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

TMS320C6747中MCASP利用EDMA3传送数据,中断成功,但对应的XBUF\RBUF中一直为0

在MCASP中使用EDMA3来传输数据,使用ping-pong模式,发送和接收部分分别使用了3个通道。目前现象:edma3的传输完成中断正常触发,并且能够进入中断服务函数。MCASP的RDATA/XDATA也正常0、1变化着。问题:使用的XBUF1和RBUF2中的值始终为0.相关部分程序如下:

while(1)
{
xmt_ping[0]=0x123456;
xmt_ping[1]=0x123457;

while(!rcv_ping_flag );    //当接收ping通道传输完成
rbuf_ping_data[sample++]=rcv_ping[0]; //ping通道的目标地址数据rcv_ping给rbuf_ping_data
rcv_ping_flag=0;
while(! rcv_pong_flag ); //当接收pong通道传输完成
rbuf_pong_data[sample]=rcv_pong[0]; //pong通道的目标地址数据rcv_pong给rbuf_pong_data
rcv_pong_flag=0;
while(! xmt_ping_flag );
xmt_ping_flag = 0;
while(! xmt_pong_flag );
xmt_pong_flag = 0;
}

该段程序目的主要是获取接收部分的pingpong数据和测试发送部分是否有数据到XBUF,结果没有!请教各位大神,可能是哪里错了?另外我还有两点疑问:1、想要写给XBUF1的数据写给发送的pingpong地址,这种做法对吗?不对的话。数据该放到哪里才能通过EDMA给XBUF1.

2、RBUF2的数据是传给了ping还是pong?还是交替的给了ping和pong.

这部分程序已经调了半个多月,请知道的朋友不吝赐教或,拜托。

Tony Tang:

我没有完全看懂是什么问题。

但是还是提醒一下,你收发各用了3个通道,而且用的是EDMA方式,如果不是用Chain的方式来实现对3个通道的数据读写(这种方式有一点点复杂,不确定你是否会用),那么应该用DMA port RBUF或XBUF,而不是XBUF1, RBUF2等,而且是一次读写3个数。

canlin tu:

解决了没? 我也碰到这样的问题,MCASP和EDMA3单独正常,连起来就是没有进中断。。。。

Tony Tang:

回复 canlin tu:

多通道时,建议理解一下下面这段说明,也就是一次EDMA事件要把几个通道的数据都服务完,比如如果是4个通道,那么EDMA的Acount=4个element size.

Da Jiang2:

回复 Tony Tang:

TI大神,我是6747新手,想向你问些问题,我的qq1728597823能加我一下吗?着急死我了,6747 中断edma 实现收发问题

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6747中MCASP利用EDMA3传送数据,中断成功,但对应的XBUF\RBUF中一直为0
分享到: 更多 (0)