labview05
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-04-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2120回复:9

请教:EZ-USB FX2与主机bulk传输的问题

楼主#
更多 发布于:2005-04-06 16:52
我在固件中的Td_Init()中将端点配置好,并用递增的数填充端点2的缓冲区,在主机端用bulk_reak控制码的时候,deviceiocontrol函数的返回值总是零,没有数据读入。这是小弟第一次做usb的设备
以下是Td_Init()中初始化的代码
请各位看看问题出在哪里
int i=0;
   // set the CPU clock to 48MHz
   CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;

   // set the slave FIFO interface to 48MHz
   IFCONFIG |= 0x40;
   EA=1;                        //enable all interrupt
   EIE=0x10;                    //enable interrupt 6
   PORTECFG=0x20;               //PortE.5 as interrupt 6
   PORTACFG=0X00;               //set PortA as common IO
   EP6CFG=0xA2;                //set endpoint6 out bulk type, buffer size 512 bytes, double buffering
   EP2CFG=0xE2; //set endpoint2 in bulk type, buffer size 512 bytes, double buffering

    for(i=0;i<512;i++)
{
   EP2FIFOBUF=i+1;   //fill the buffer with increased data
}
   SYNCDELAY;                   //write twice because of double buffering
   EP2BCH = 0x02;
   SYNCDELAY;
   EP2BCL = 0x00;  
for(i=0;i<511;i++) //write twice because of double buffering
{
   EP2FIFOBUF=i;   //fill the buffer with increased data
}
   SYNCDELAY;                   //write twice because of double buffering
   EP2BCH = 0x02;
   SYNCDELAY;
   EP2BCL = 0x00;
maoxiaojun
驱动牛犊
驱动牛犊
  • 注册日期2007-09-04
  • 最后登录2009-04-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望42点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-14 16:47
把这条语句 IFCONFIG |= 0x40; 注释掉看看!
reanchear
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望253点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-31 16:10
关于你这个问题主要是端点的长度配置,此外还要注意对端点状态的检测,当为空闲时才可以在固件端接收数据,在发送数据时要提交你自己的数据包,还有一点就是设置为手动控制
        INPKTEND=0x82;
        SYNCDELAY;
        INPKTEND=0x82;
        SYNCDELAY;
Good Luck!
onizuka2070
驱动牛犊
驱动牛犊
  • 注册日期2006-10-18
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望44点
  • 贡献值0点
  • 好评度43点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-30 20:46
试试bulkControl.pipeNum = 0
我记得EP2 0
         EP4 1
         EP6 2
         EP8 3
zhongyao
驱动牛犊
驱动牛犊
  • 注册日期2006-09-13
  • 最后登录2007-04-05
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-26 13:31
我也遇到同样的问题,高手能来讲解哈啊
lzyuer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-10 21:59
注意sizeof(BULK_TRANSFER_CONTROL)的值,可能会有两种不同值

[编辑 -  4/10/05 by  lzyuer]
labview05
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-04-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-07 08:28
 谢谢帮忙看看吧
我还是不知道问题在哪里 :)
labview05
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-04-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-06 20:11
有人知道问题出在哪里吗? :)
labview05
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-04-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-06 17:21
在应用程序中发送bulkread的命令之前
也将我要用的管道复位了 :)
labview05
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-04-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-06 16:56
应该是在将数据写入缓冲区以后,再将计数写入端点就准备好了吧,当主机发送bulk read的命令的时候,就会将数据送入主机的缓冲区了吧
主机端的发送命令代码是这样的
//commit the read-transfer now
unsigned char InBuffer[512];
bulkControl.pipeNum = 1;
bResult = DeviceIoControl(hDevice,IOCTL_EZUSB_BULK_READ,&bulkControl,
 sizeof(BULK_TRANSFER_CONTROL),InBuffer,512,&nBytes,NULL);
if(bResult!=TRUE)
{
AfxMessageBox(\"failed to read the data !!!\");
CloseHandle(hDevice);
}
游客

返回顶部