sunqing98
驱动牛犊
驱动牛犊
  • 注册日期2003-12-03
  • 最后登录2005-09-16
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1525回复:4

寻找cahwlx1982 ,送给你的100

楼主#
更多 发布于:2004-12-14 09:27
你好!你所说的时序是什么意思呢?
我现在只完成一个简单的任务,用gpif方式读取存储器的内容,现在还没有接外部设备,只是用示波器测量开发板的GPIF 的地址位和CTL控制为.我发现是可以启动GPIF波形的,按照技术说明当EP6FIFO的装满后GPIF就应该暂停的,但在我没有通过控制面板取数的情况下,示波器显示GPIF的波形没有停止.
好心的大哥,求你赐教,我的老师都没有办法指导我,临近毕业了,我还要找工作啊,谢谢
这就是我的固件.
void TD_Init(void)             // Called once at startup
{
   BREAKPT &= ~bmBPEN;      // to see BKPT LED go out TGE
   Rwuen = TRUE;            // Enable remote-wakeup
   GpifInit();

   // EP2 512 BULK OUT 4x
   SYNCDELAY;                    // see TRM section 15.14
   EP2CFG = 0xA2; //512PACKET;              
  SYNCDELAY;                    //
  EP4CFG = 0x20;                // clear valid bit
  SYNCDELAY;                    //
  EP6CFG = 0xE0;                // 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=1)...
   EP2FIFOCFG = 0x00;//AUTO OUT 8-BIT BUS
  
   SYNCDELAY;
  EP6FIFOCFG = 0x00;//AUTO IN  8-BIT BUS
  
    // setup INT4 as internal source for GPIF interrupts
  // using INT4CLR (SFR), automatically enabled
 INTSETUP |= 0x03;   // Enable INT4 FIFO/GPIF Autovectoring
  SYNCDELAY;          // used here as "delay"
EXIF &=  ~0x40;     // just in case one was pending...
  SYNCDELAY;          // used here as "delay"
  GPIFIRQ = 0x03;
  SYNCDELAY;          //
  GPIFIE = 0x03;      // Enable GPIFWF interrupt
  SYNCDELAY;          //
  EIE |= 0x04;        // Enable INT4 ISR, EIE.2(EIEX4=1)
  EP6GPIFFLGSEL=0x02;
  SYNCDELAY;
  GPIFREADYCFG=0x20;
 
 
}

void TD_Poll(void)             // Called repeatedly while the device is idle
{

 
  if( GPIFTRIG & 0x80 )
  
  {
  if(!(EP68FIFOFLGS &0x01))
   {
Peripheral_SetAddress(0);
Peripheral_SetEP6GPIFTC( 512 );      
Peripheral_FIFORead(2);
    }
  else
  {
SYNCDELAY;
   INPKTEND=0x06;
}

 }
}
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-12-14 09:45
好象应该是大姐。

到这 http://www.zstel.com/zsbbs/main.htm 去找她。 至少能找到她的 email

cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-14 11:51
呵呵……,wdy9927说的对!我不是大哥!
恩……,看了一下,你的程序,感觉你有很多的错误!也许你是直接拷贝原有的程序,是不是呀?但是你有没有认真的核对过呢?
先指正你里面的一些错误吧!
(1)// EP2 512 BULK OUT 4x
SYNCDELAY; // see TRM section 15.14
EP2CFG = 0xA2; //512PACKET; 你这样定义是2XBUFFER,512个字节
应该是0XA0
(2)EP6CFG = 0xE0; // clear valid bit你这个也有问题呀!你这样写是定义EP6为输出端点4X,512个字节,而不是clear valid bit
(3)EP2FIFOCFG = 0x00;//AUTO OUT 8-BIT BUS
     SYNCDELAY;
     EP6FIFOCFG = 0x00;//AUTO IN 8-BIT BUS
按你的定义,应该是“手动”的方式,在初始化的时候应该要
     SYNCDELAY;                   //
     EP2BCL = 0x80;                // arm first buffer
     SYNCDELAY;                    //
     EP2BCL = 0x80;                // arm second buffer
     SYNCDELAY;                    //
     EP2BCL = 0x80;                // arm third buffer
     SYNCDELAY;                    //
     EP2BCL = 0x80;                // arm fourth buffer
     SYNCDELAY;  
而你没有这样设置!
另外呢,你在TD_POLL里面
SYNCDELAY;
INPKTEND=0x06;
这个是自动的方式用的呀?
你应该用的不是这个,而是:EP6BCL = 0x00;
明白我的意思吗?要是不明白的话,自己再看看资料!上面说的很清楚的!
(4),你说的是“用gpif方式读取存储器的内容,现在还没有接外部设备”,按我就不明白了,你把GPIFADR[8:0]接哪里了呀?怎么通讯呀?要是没有接的话,那么你的“Peripheral_SetAddress(0);
”不是多余的吗?压根就不需要!
(5)你说的"按照技术说明当EP6FIFO的装满后GPIF就应该暂停的"不错是有这个功能的,但是呢,在设置GPIF波形的时候要将他做为你的"FIFOFlag"作为你的一个RDY信号,然后在波形中让他满足条件就跳到"IDLE",你也可以用TC来控制!

从这些错误来看,你压根就没有理解GPIF是什么,那么你的GPIF波形肯定就更是漏洞百出,另外呢,建议你接几个RDY信号,控制你的波形用的!
 所以我建议你到www.cypress.com上面下载一个GPIF文档,名字叫“EZ-USB FX2 GPIF Primer”,好好的看看例题和讲解!也许不要着急!很快就明白怎么去设计了!


不要太心急了,还是花一点时间好好的看看文档吧!你的每一步都是设计好了,再开始调试你的程序吧!

呵呵,说的有一点的乱哦!我的表达水平不是很好,不知道你是不是看的明白我的意思!

祝你好运,朋友!!!


sunqing98
驱动牛犊
驱动牛犊
  • 注册日期2003-12-03
  • 最后登录2005-09-16
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-14 16:25
谢谢你啊,大姐.
我继续努力中.
我的外部存储器电路已经做好了,只是测量的时候把电路撤了,只用示波器测量所需要的控制信号是否正确.
您的话对我来说帮助很大
谢谢
我会再开帖送您分数的
谢谢
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-14 19:12
认真的看资料,相信你很快自己就可以解决很多的问题的!
游客

返回顶部