打印

FPGA通过CY7C68013A给上位机发数不正常

[复制链接]
4059|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pplu777|  楼主 | 2012-12-11 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FPGA产生10个16位的数,发送给68013的EP6(IN),配置为AUTOIN模式,当发送10个数时,上位机EZ-USB Console读得时候,提示 Bulk IN Transfer failed.但如果将FIFO发满,上位机会读到,但数据不完全正确,请问有碰到类似情况的吗?
void TD_Init(void)             // Called once at startup
{
   // set the CPU clock to 48MHz
//   CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);//0X10;48MHZ

   IFCONFIG |= 0xCB;//异步,从FIFO模式.11001011   
   SYNCDELAY;
  
   REVCTL = 0x03;    // enable the external master   
   SYNCDELAY;
  // config the endpoints direction
  EP1OUTCFG = 0xA0;//enable and bulk type
  SYNCDELAY;
  EP1INCFG = 0xA0;
  SYNCDELAY;                    // see TRM section 15.14
  EP2CFG = 0xA0;//out,bulk,512,double
  SYNCDELAY;                    
  EP4CFG &= 0x7F;
  SYNCDELAY;                    
  EP6CFG = 0xE0;//enable IN bulk 512 double buffer
  SYNCDELAY;
  EP8CFG &= 0x7F;
  SYNCDELAY;                 

  //reset the fifos
  FIFORESET = 0x80;
  SYNCDELAY;
  FIFORESET = 0x82;
  SYNCDELAY;  
  FIFORESET = 0x86;
  SYNCDELAY;
  FIFORESET = 0x00;
  SYNCDELAY;
///////////////////////////////////////////////////////////////////
  OUTPKTEND = 0x82; // Arm both EP2 buffers to “prime the pump”
  SYNCDELAY;
  OUTPKTEND = 0x82;
  SYNCDELAY;
  OUTPKTEND = 0x82;
  SYNCDELAY;
  OUTPKTEND = 0x82;
  SYNCDELAY;
   
  //config the endpoint6
  EP2FIFOCFG = 0x11;//EP2 IS AUTOOUT=1  ZEROLEN=1 WORDIDE=1 配置EP2自动方式16位总
  SYNCDELAY;//添加EP2
  
  EP6FIFOCFG = 0x0D;//EP6 IS AUTOIN =1 ZEROLEN=1 WORDIDE=1 配置EP6自动方式16位总
  SYNCDELAY;

  //-------------------------
  INPKTEND = 0x06;
  SYNCDELAY;
  INPKTEND = 0x06;
  SYNCDELAY;
  INPKTEND = 0x06;
  SYNCDELAY;
  INPKTEND = 0x06;
  SYNCDELAY;


  //-------------------tiao ji IN depth_1204---------------------
  EP6AUTOINLENH = 0x02;   //set the packet size 512
  SYNCDELAY;
  EP6AUTOINLENL = 0x00;//EP6 recevie 10 num (16bit)LYF
  SYNCDELAY;

  PINFLAGSAB = 0xe8;  //F,FLAGA IS THE FIFO2 EF,FLAGb IS THE FIFO6 FULL FLAG
  SYNCDELAY;

  PORTACFG = 0x00;//PA7 pin as a port pin,not as a fifo flag;
  SYNCDELAY;
  FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low PKTEND OR SLOE SLWR LOW AVTIVE
  SYNCDELAY;

  }
沙发
pplu777|  楼主 | 2012-12-12 11:16 | 只看该作者
为什么没人回复啊!?

使用特权

评论回复
板凳
pplu777|  楼主 | 2012-12-12 11:17 | 只看该作者
恳请高手帮忙解答,非常感谢。

使用特权

评论回复
地板
Go_PSoC| | 2012-12-14 12:03 | 只看该作者
楼主可以在CY官网建个case,或者可以发中文邮件至support_china@cypress.com

使用特权

评论回复
5
小工程师| | 2012-12-16 14:53 | 只看该作者
楼主,请试一试参考代码bulkloop传输,如果在您的系统上没有什么问题,怀疑是您的FPGA端没有设计好,看看时序是否有问题。

使用特权

评论回复
6
yppjk| | 2014-5-8 09:26 | 只看该作者
可以把完整的程序分享一下么?

使用特权

评论回复
7
happygirlwz| | 2014-6-18 21:35 | 只看该作者
不懂,帮顶吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝