本人想通过FPGA中的块传输发送数据,手边已有资料是从上位机到FPGA再返回上位机的块传输程序,现在我想从FPGA的DMA直接发送数据上去,现在找不到入口赋值,现上传程序请大家帮帮忙。
//包含头文件省略
unsigned short usbDataBuf[USB_BUF_MAX_SIZE]; //本来我认为上位机发下来的数据是先放在这里的,然后我对usbDataBuf[ ]赋值后,上位机收到的总是0.然后我后WATCH窗口调试,发现数组中始终是0,尽管上位机已发送数据。我疑惑DMA到底数据放在哪的,在哪赋值,怎样赋值,我怎样才自己赋值到上位机。
int main()
{
int n;
// 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());
}
}
int Write(alt_dma_txchan *pDMAOut,void* pOutBuf)
{
out_done=0;
return alt_dma_txchan_send(*pDMAOut,pOutBuf,USB_BUF_MAX_SIZE*2,OutDone,NULL);
}
int Read(alt_dma_rxchan *pDMAIn,void* pInBuf)
{
in_done=0;
return alt_dma_rxchan_prepare(*pDMAIn,pInBuf,USB_BUF_MAX_SIZE*2,InDone,NULL);
}
//请高手帮帮忙,不胜感激。 |