在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
EETOP诚邀模拟IC相关培训讲师 创芯人才网--重磅上线啦!
查看: 3254|回复: 2

[求助] 关于68013的gpif_fifo写的问题,帮忙看看,万分感激!!

[复制链接]
发表于 2010-4-14 18:08:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在做一个上位机和FPGA的通信,通过cy7c68013的GPIF_FIFO来通信,下面是68013的固件的初始化,帮我看看问题出在哪里,我已经搞了好几天了,具体的设置如下:
// EP2OUT, bulk, size 512, 4x buffered,autoout,byte
// EP6IN, bulk, size 512, 4x buffered,autoin,byte


代码如下:
void TD_Init(void)             // Called once at startup
{
  // set the CPU clock to 48MHz
  CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);
  GpifInit (); // initialize GPIF registers
  
  SYNCDELAY;
  EP2CFG = 0xA0;     // EP2OUT, bulk, size 512, 4x buffered
  SYNCDELAY;                    
               
  EP6CFG = 0xE0;     // EP6IN, bulk, size 512, 4x buffered
  SYNCDELAY;                    

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


  EP2FIFOCFG = 0x10; // auto out mode, disable PKTEND zero length send, byte ops
  SYNCDELAY;
  EP6FIFOCFG = 0x08; // auto in  mode, disable PKTEND zero length send, byte ops
  SYNCDELAY;   
  // out endpoints do not come up armed
  // since EP2OUT is quad buffered we must write dummy byte counts four times
EP2BCL = 0x80;     // arm EP2OUT by writing byte count w/skip.
  SYNCDELAY;                    
  EP2BCL = 0x80;
  SYNCDELAY;                    
  EP2BCL = 0x80;
  SYNCDELAY;
  EP2BCL = 0x80;
  SYNCDELAY;  
  
}

在TD_Poll()的代码如下,这里有个问题,不是说是autoout的方式的吗,怎么还要cpu处理,而且下面的代码不太懂,也不知道是否正确,在一篇论文里面看到的,帮忙解释一下里面的具体内容,非常感谢!!

void TD_Poll(void)
{
//      完成FIFO的写操作,从EP2-OUT写到外部FIFO中
/*****************************************************************************/
if ( ! ( EP2468STAT & bmEP2EMPTY ) )
{
  SYNCDELAY;
  EP2BCL=0x00; //SKIP=0,这里不就是手动在处理数据吗??为什么,autoout是什么意思呢?
  }  

  if(GPIFTRIG & 0x80)
  {
   if(!(EP24FIFOFLGS & 0x20))
   {
     GPIF_SetAddress(ADDRESS_FIFO1);   //设置地址
     GPIFTCB0=EP2FIFOBCL;
     SYNCDELAY;
     GPIFTCB1=EP2FIFOBCH;
     SYNCDELAY;
     GPIF_FIFOWrite(0);     //触发FIFO写波形
   }
  }


还有:我看到些资料说要在 初始化那里添加
REVCTL=0x03;
不知道为什么?

我发现加了这句之后 在上位机(用USB Console)就不能发数据到EP2了,迷惑中……?
 楼主| 发表于 2010-4-15 15:00:11 | 显示全部楼层
顶一下~~
 楼主| 发表于 2010-4-19 09:09:16 | 显示全部楼层
没人知道吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 17:16 , Processed in 0.021623 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表