helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
阅读:1475回复:5

---jinghuiren大侠----slaveFifo下:用EP2 Auto Out出现问题---------

楼主#
更多 发布于:2007-07-06 09:01
slaveFifo EP2 out 下:
用控制面板写EP2不成功,写不进去, 不知什么原因(flagc空标志一直有效)!
更改外部电路及控制逻辑后,还是用下面的固件,用"控制面板"读EP6(既用EP6 Auto in)确没问题。

外部电路连接的波形,固件代码如下:

void TD_Init( void )
{
  CPUCS = 0x02;                 // CLKSPD[1:0]=10, for 48MHz operation CLKOE=0

  IFCONFIG = 0xA3;  //内部30M同步fifo
  SYNCDELAY;                    // see TRM section 15.14
//  REVCTL = 0x01;                // use enhanced packet handling
  REVCTL = 0x03;
  SYNCDELAY;                  

  EP2CFG = 0xA8;                // EP2 is DIR=OUT, TYPE=BULK, SIZE=1024, BUF=2x
  SYNCDELAY;                    //
  EP6CFG = 0xE0;                // SIZE=0 512 BYTE BUF[1:0]=00 for 4x buffering   1110 0000
  SYNCDELAY;                    //
  EP4CFG = 0x20;                // clear valid bit
  SYNCDELAY;                    //
  EP8CFG = 0x60;                // clear valid bit

  SYNCDELAY;                    //
  FIFORESET = 0x80;             // activate NAK-ALL to avoid race conditions
  SYNCDELAY;                    //
  FIFORESET = 0x02;             // reset, FIFO 2
  SYNCDELAY;                    //
  FIFORESET = 0x04;             // reset, FIFO 4
  SYNCDELAY;                    //
  FIFORESET = 0x06;             // reset, FIFO 6
  SYNCDELAY;                    //
  FIFORESET = 0x08;             // reset, FIFO 8
  SYNCDELAY;                    //
  FIFORESET = 0x00;             // deactivate NAK-ALL
  SYNCDELAY;                    //

// 8-bit bus (WORDWIDE=0)...
//  EP2FIFOCFG = 0x10;            // AUTOOUT=1, WORDWIDE=0 修改AUTOOUT=1,自动提交输出给FIFO
  EP2FIFOCFG = 0x14;      
  SYNCDELAY;                    //  
// use auto in mode
  EP6FIFOCFG = 0x0C;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE=0
  
  SYNCDELAY;                    //

  EP4FIFOCFG = 0x00;            //WORDWIDE=0
  SYNCDELAY;                    //
  EP8FIFOCFG = 0x00;            //WORDWIDE=0
  SYNCDELAY;                    // 要将所有FIFO的WORDWIDE都设为0,不管它们有没有用到
  
  OEE = 0xff;                    //才能把D端口当成普通IO来用。
  IOE = 0x80;                    //
  OEC = 0xff;                    //才能把D端口当成普通IO来用。
  IOC = 0x80;        
  
  EZUSB_InitI2C();            // Initialize I2C Bus
  EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[0]));
  EZUSB_WaitForEEPROMWrite(LED_ADDR);    
}
//--------------------------------------------------------------------------------------------------------------------------------
再尝试用cypress的例子bulksrc(不加修改):
       Endpoint 6 in 成功
      Endpoint 2 OUT 失败,连一次512byte都没法写进去,按理至少能写入2个512byte才对!
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-07 10:14
今天还没解决,我顶啊!
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-09 08:07
早上顶一下
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-10 08:48
结帖啦,原来是我用了自己改的乱七八糟的ezusb.sys的原因,用原来的覆盖掉即可.
lig82
驱动牛犊
驱动牛犊
  • 注册日期2006-07-23
  • 最后登录2009-05-15
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-12 21:18
请问搂主,这么写可以把D口作为输出I/O使?
 EP4FIFOCFG = 0x00;            //WORDWIDE=0
  SYNCDELAY;                    //
  EP8FIFOCFG = 0x00;            //WORDWIDE=0
  SYNCDELAY;                    // 要将所有FIFO的WORDWIDE都设为0,不管它们有没有用到
  
  OEE = 0xff;                    //才能把D端口当成普通IO来用。
  IOE = 0x80;                    //
  OEC = 0xff;                    //才能把D端口当成普通IO来用。
  IOC = 0x80;      
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-12 21:42
只需加上  OED = 0xff;
游客

返回顶部