关于FPGA+USB用DMA传输的问题,新手求解答

2019-07-15 23:12发布

最近拿到一个开发板,这是NIOSII里面的main.c程序,实现了FPGA通过USB芯片与上位机通讯,可是我不太明白啊,上位机发送的数据在哪里赋值呢,上位机是怎么发送数据的呢???
还有,这个句子,if(Write(&o_usbdma,usbDataBuf)>0) return 0;为什么是>0,而不是<0呢?
还有 if(Read(&i_usbdma,usbDataBuf)<0) return 0,和if(Write(&o_usbdma,usbDataBuf)>0) return 0;这两个语句为什么目标地址和源地址都是同一个usbDataBuf????不解啊
我现在想改一下这个程序,变成发送一个数据,然后再存到SDRAM里面。
最近被这个问题困扰多日,这个要这么改,求解答,感激不尽


#include <stdlib.h>
#include <stdio.h>
#include "string.h"
#include <unistd.h>
#include "../inc/IO.h"
#include "../inc/usb.h"

unsigned short usbDataBuf[USB_BUF_MAX_SIZE];  

int main()
{
    int n;
    n = 0;
    pReg_LED->data = 0;
//    memset(usbDataBuf,0,USB_BUF_MAX_SIZE *2);
    alt_dma_txchan o_usbdma;
    alt_dma_rxchan i_usbdma;
    memset(usbDataBuf,0,USB_BUF_MAX_SIZE *2);  
    if(Initial_InDMA(&i_usbdma) < 0 || Initial_OutDMA(&o_usbdma) < 0)   return 0;
    while(1)
    {           
        while(IsFLAGB())
        {                     
            if(Read(&i_usbdma,usbDataBuf)<0) return 0;
            while(!IsInDone());
            while(!IsFLAGC());
            if(Write(&o_usbdma,usbDataBuf)>0) return 0;
            while(!IsOutDone());
        }
        n++;
        if(n>0x3ffff)
        {
            pReg_LED->data = pReg_LED->data + 1;
            n=0;
        }


    };

  return 0;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。