SevenLuck
驱动牛犊
驱动牛犊
  • 注册日期2008-01-23
  • 最后登录2012-10-22
  • 粉丝2
  • 关注1
  • 积分37分
  • 威望55点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:2038回复:2

68013 FX2 缓冲区数量的问题,为什么设置2048K的的大小,但只能发1024K的数据?

楼主#
更多 发布于:2012-09-28 18:43
各位大侠,你们好!我这里在用68013的FX2时,遇到一个问题,请指教:
 
设计: 用EP2和EP6这2个端口。
 
我用的是SLAVE FIFO模式。
EP2为OUT端口,设置为4缓冲,每个缓冲512字节,AUTOOUT模式。
EP6为IN端口,也是4缓冲,每个512字节,AUTOIN模式。
EP4和EP8都不用
FX2的时钟用的是48Mhz,同步时钟模式,输出时钟给外部主控。
 
现象:我用Cypress自带的ez-usb的工具来下载我的固件,下载固件正常。下载完固件FX2 RESET后可正确识别我的设备,且可以看到EP2和EP6这2个端口
当我使用EP2下载数据时,如果我每次下载的数据小于或等于512字节,则能下发2次,第三次就会报告下载失败。如果我下载的数据超过512,则只能下载一次,如果超过1024则一次都无法下载。而且,我用万用表测量FALG信号,发现我的EP2的满状态也是无信号的,这说明FIFO的缓冲区根本没有满。
 
按照我的理解,4缓冲的设置,那么当我每次下载小于或等于512时应该允许我下载4次才对,而且为什么只能下载最多1024个数据就不行呢?明明FIFO也没有满啊。我还尝试把EP2配置成双缓冲,每个缓冲1024字节,测试的效果是一样的,也是最多只能下载1024个字节。
 
实现代码:
 
 

void TD_Init( void )
{ // Called once at startup
  CPUCS = 0x10;                 // CLKSPD[1:0]=10, for 48MHz operation
  //IFCONFIG = 0xCB;
  IFCONFIG = 0xE3;
  // IFCLKSRC=1   , FIFOs executes on internal clk source
  // xMHz=1       , 48MHz internal clk rate
  // IFCLKOE=0    , Don't drive IFCLK pin signal at 48MHz
  // IFCLKPOL=0   , Don't invert IFCLK pin signal from internal clk
  // ASYNC=1      , master samples asynchronous
  // GSTATE=0     , Don't drive GPIF states out on PORTE[2:0], debug WF
  // IFCFG[1:0]=11, FX2 in slave FIFO mode

  // Registers which require a synchronization delay, see section 15.14
  // FIFORESET        FIFOPINPOLAR
  // INPKTEND         OUTPKTEND
  // EPxBCH:L         REVCTL
  // GPIFTCB3         GPIFTCB2
  // GPIFTCB1         GPIFTCB0
  // EPxFIFOPFH:L     EPxAUTOINLENH:L
  // EPxFIFOCFG       EPxGPIFFLGSEL
  // PINFLAGSxx       EPxFIFOIRQ
  // EPxFIFOIE        GPIFIRQ
  // GPIFIE           GPIFADRH:L
  // UDMACRCH:L       EPxGPIFTRIG
  // GPIFTRIG
  
  // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
  //      ...these have been replaced by GPIFTC[B3:B0] registers
  SYNCDELAY;
  FIFORESET = 0x80;             // activate NAK-ALL to avoid race conditions
  SYNCDELAY;                    // see TRM section 15.14
  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;
  //PINFLAGSAB = 0x98;            // FLAGA - fixed EP2EF, FLAGB - fixed EP4EF
  PINFLAGSAB = 0xc8;            // FLAGA - fixed EP2EF, FLAGB - fixed EP4EF
  SYNCDELAY;
  //PINFLAGSCD = 0xFE;            // FLAGC - fixed EP6FF, FLAGD - fixed EP8FF
  PINFLAGSCD = 0xEA;            // FLAGC - fixed EP6FF, FLAGD - fixed EP8FF
  SYNCDELAY;
  //PORTACFG |= 0x80;             // FLAGD, set alt. func. of PA7 pin
  PORTACFG = 0x40;             // FLAGD, set alt. func. of PA7 pin
  SYNCDELAY;
  FIFOPINPOLAR = 0x00;          // all signals active low
  SYNCDELAY;
  
  // handle the case where we were already in AUTO mode...
  EP2FIFOCFG = 0x00;            // AUTOOUT=0, WORDWIDE=0
  SYNCDELAY;
  
  EP2FIFOCFG = 0x10;            // AUTOOUT=1, WORDWIDE=0
  SYNCDELAY;
  EP4CFG &= 0x00;
  SYNCDELAY;
  EP8CFG &= 0x00;
  SYNCDELAY;
  EP2CFG &= 0xFC;
  //EP2CFG |= 0x08;
    SYNCDELAY;
  // handle the case where we were already in AUTO mode...
 // EP4FIFOCFG = 0x00;            // AUTOOUT=0, WORDWIDE=0
 // SYNCDELAY;
  
  //EP4FIFOCFG = 0x10;            // AUTOOUT=1, WORDWIDE=0
 // SYNCDELAY;
  
  EP6FIFOCFG = 0x0C;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE=0
  SYNCDELAY;
 // EP8FIFOCFG = 0x0C;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE=0
}
 
SevenLuck
驱动牛犊
驱动牛犊
  • 注册日期2008-01-23
  • 最后登录2012-10-22
  • 粉丝2
  • 关注1
  • 积分37分
  • 威望55点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2012-09-28 18:46
忘了说,我用的bulk模式
zhouxu1985
驱动牛犊
驱动牛犊
  • 注册日期2012-11-01
  • 最后登录2013-02-02
  • 粉丝0
  • 关注1
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2012-11-01 09:35
是不是 REVCTL设置的问题
 我最近也在做68013的开发
 你问题解决了没
游客

返回顶部