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

UPP接口接收FPGA的数据

我的主函数是这样写的,两个buffer接收FPGA发过来的数据(0-32766),每个buffer大小是1024,UPID1的参数是:

#define upp_line_size (1024)
#define upp_line_count (1)

我想实现连续接收FPGA发过来的数据的功能,即upp_buffer_ping接收0-1023,upp_buffer_pong接收1024-2047。

但是事实上,两个buffer接收的都是0-1023。想了好久也没想明白原因。谁能告诉我这是为什么?我要想连续接收FPGA发过来的数据该怎么做?

/*启动UPP DMA传输*/
UARTPuts("ping\n",-2);
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_ping;
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(upp_buffer_ping[0]);
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(upp_buffer_ping[0]);

upp_reg_hdl->UPID0 = (Uint32)upp_buffer_pong;
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(upp_buffer_pong[0]);
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(upp_buffer_pong[0]);

UARTPuts("printf data.\r\n", -2);

for(j=0; j<upp_frame_size; )
{
for(k=0; k<5; k++)
{
UARTprintf("upp_buffer_ping[%d]=%d ",j, upp_buffer_ping[j]);
j++;
}
UARTPuts("\n",-2);
}

for(j=0; j<upp_frame_size; )
{
for(k=0; k<5; k++)
{
UARTprintf("upp_buffer_pong[%d]=%d ",j, upp_buffer_pong[j]);
j++;
}
UARTPuts("\n",-2);
}

Tony Tang:

仔细看样例代码,两个配置之间加pend位检测,不然不就覆盖了吗。

yan wang4:

回复 Tony Tang:

pend位一直是低电平。。。。

yan wang4:

回复 Tony Tang:

覆盖了是什么意思?是第二个配置把第一个覆盖了吗?

Tony Tang:

回复 yan wang4:

是的,两个配置之间一定要加pend检测:

Each DMA channel allows a second descriptor to be queued while the previously programmed DMAtransfer is still running. The UPxS2.PEND bit reports whether a new set of DMA parameters may bewritten to the DMA descriptor registers. Each DMA channel can have at most one active transfer and onequeued transfer. This allows each I/O channel to perform uninterrupted, consecutive transactions acrossDMA transfer boundaries.

yan wang4:

回复 Tony Tang:

我也看到了这一段文字,但是我的pend位在程序运行期间一直是0,检测不起作用啊

Tony Tang:

回复 yan wang4:

为什么不先加上测试一下再说呢?

yan wang4:

回复 Tony Tang:

你好Tony Tang,

我将pend位检测的程序加上测试了多次,正如我前面所说,这个循环没有起到作用,两个buffer的数据还是和之前一样。

第一次DMA执行完执行该循环,后进入中断服务函数,然后在执行第二个DMA,然后再执行一次中断服务函数。

另外我发现寄存器UPPCR中的DB位在执行完第一次DMA后一直是1。

赞(0)
未经允许不得转载:TI中文支持网 » UPP接口接收FPGA的数据
分享到: 更多 (0)