springincense
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2505回复:16

大家看看我的fx2 CY7C68013的固件和波形slave fifo模式

楼主#
更多 发布于:2004-07-30 22:23
采用的是slave fifo模式,外部时钟,
ep2采用autoout模式x4
每次主机通过控制面板向usb写数据就会挂起,不知道为什么,请大家诊断一下
初始化程序如下:
void TD_Init(void)             // Called once at startup
{

   // set the CPU clock to 48MHz
   CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;

    IFCONFIG |= 0x43;

   Rwuen = TRUE;            // Enable remote-wakeup
   REVCTL = 0x03;

SYNCDELAY;
   // EP2 512 BULK OUT 4x
   SYNCDELAY;                    // see TRM section 15.14
   EP2CFG = 0xA0; //512PACKET;                // BUF[1:0]=00 for 4x buffering
  
   SYNCDELAY;                    //
   EP4CFG = 0x20;                // clear valid bit
   SYNCDELAY;                    //
   EP6CFG = 0xE0;  //512PACKET;                // BUF[1:0]=00 for 4x buffering            
   SYNCDELAY;                    //
   EP8CFG = 0x60;                // clear valid bit
   SYNCDELAY;
   EP6FIFOCFG=0x0C;

   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;//AUTO OUT 8-BIT BUS
   SYNCDELAY;
   EP6FIFOCFG = 0x00;//AUTO IN  8-BIT BUS
   SYNCDELAY;

PINFLAGSAB = 0x00; // defines FLAGA as prog-level flag, pointed to by FIFOADR[1:0]
SYNCDELAY; // FLAGB as full flag, as pointed to by FIFOADR[1:0]
PINFLAGSCD = 0x00; // FLAGC as empty flag, as pointed to by FIFOADR[1:0]
// won't generally need FLAGD
PORTACFG = 0x40; // used PA7/FLAGD as a port pin, not as a FIFO flag
FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low
SYNCDELAY;

EP6AUTOINLENH=0x02;
SYNCDELAY;
EP6AUTOINLENL=0x00;
SYNCDELAY;

   EPIRQ = 0xFF; //clear all interrupt bit
   SYNCDELAY;
//  EPIE |= 0x50;     //enable the ep2 and ep6 inout interrupt*/

   SYNCDELAY;

   OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;
SYNCDELAY;
}

另外slave fifo的控制端采用cpld控制,波形如下:

最新喜欢:

gdutchengdutch...
springincense
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-31 10:44
 没人用这种模式么?
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-31 13:11
我也准备用slave fifo模式来做,但是还没有写好外部控制器,所以还没有开始调板子。FW方面跟你的差不多。
springincense
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-01 13:16
波形可以采用普通fifo的读写波形,不用管68013上边的波形
zhyf2008
驱动牛犊
驱动牛犊
  • 注册日期2003-11-07
  • 最后登录2008-05-01
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-02 09:02
请问老兄:你是用来传输什么的?
我也在做这方面的,请联系:QQ43225058
zhyf9711@tom.com
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-02 10:53
把挂起关了试试.
lioniamhero
驱动小牛
驱动小牛
  • 注册日期2003-05-31
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-24 15:18
我也遇到这个问题,我的环境和你 差不多。
  我试着将REVCTL = 0x03;这条语句屏蔽掉,EP2端点可以写入。不屏蔽就无法写入。
Rohoo
驱动牛犊
驱动牛犊
  • 注册日期2004-07-06
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-25 19:36
我也是用的slave模式,外部的仿真波形跟你的差不多,只不过我的SLRD的信号下降沿变化的时候只是实现FIFO的指针加一,在下一个时钟周期才传输数据。我是用VC写的数据的发送和接受应用程序。请教老兄你是怎么用控制面板实现的数据发送呢?我用VC和EZ―USB的GPD实现数据发送。请问还需要另外添加固件程序吗?
gdutchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-27 15:26
我很早就实现了,auotin和autoout的slave fifo模式。当然当时没有考虑flag标志,现在考虑了flag。但只能从pc写数据给68013,不能从68013收数据。当然我认为是CPLD的数据没有传到68013,时序应该没有问题。我想了,好久也没有解决,请各位大侠帮忙一下。
gdutchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-27 16:37
我的verilog程序时序仿真如下图所示。大家看看是时序有问题吗?
Rohoo
驱动牛犊
驱动牛犊
  • 注册日期2004-07-06
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-27 16:38
请问楼上的大哥!你是怎么从主机写数据给68013的啊?现在我得vc程序往Slave fifo写数据老是出错。不知为何?
Rohoo
驱动牛犊
驱动牛犊
  • 注册日期2004-07-06
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-27 16:45
你的地址选择怎么是一位的啊?不应该是二位的么?
gdutchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-09-28 08:37
默认下是00,写时是10,只改变了1位,所以只显示1位呀。PC往68013写数据,我没有写,我现在只是要收数据呀。
pppflash
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2006-02-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-10-01 15:14
请问楼主,时序波形用什么工具可以捕捉到啊?
huanglinyu
驱动牛犊
驱动牛犊
  • 注册日期2006-06-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分122分
  • 威望23点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-04-10 16:22
引用第6楼lioniamhero2004-09-24 15:18发表的“”:
我也遇到这个问题,我的环境和你 差不多。
  我试着将REVCTL = 0x03;这条语句屏蔽掉,EP2端点可以写入。不屏蔽就无法写入。



但是他的手册里不是明确的说了必须要REVCTL = 0x03的吗?
bennydice
驱动牛犊
驱动牛犊
  • 注册日期2006-09-20
  • 最后登录2008-01-10
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望48点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-04-11 08:43
恩  是啊  如果我要用PKTEND的话 是不是也需要将这条语句屏蔽掉呢?
y_j_tang
驱动牛犊
驱动牛犊
  • 注册日期2007-09-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分120分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-10-07 13:49
上楼的老兄,是ifclk上升沿写数据吧,你怎么是下降沿有效呢?
游客

返回顶部