阅读:2505回复:16
大家看看我的fx2 CY7C68013的固件和波形slave fifo模式
采用的是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控制,波形如下: |
|
最新喜欢:![]() |
沙发#
发布于:2004-07-31 10:44
没人用这种模式么?
|
|
板凳#
发布于:2004-07-31 13:11
我也准备用slave fifo模式来做,但是还没有写好外部控制器,所以还没有开始调板子。FW方面跟你的差不多。
|
|
地板#
发布于:2004-08-01 13:16
波形可以采用普通fifo的读写波形,不用管68013上边的波形
|
|
地下室#
发布于:2004-08-02 09:02
请问老兄:你是用来传输什么的?
我也在做这方面的,请联系:QQ43225058 zhyf9711@tom.com |
|
5楼#
发布于:2004-08-02 10:53
把挂起关了试试.
|
|
6楼#
发布于:2004-09-24 15:18
我也遇到这个问题,我的环境和你 差不多。
我试着将REVCTL = 0x03;这条语句屏蔽掉,EP2端点可以写入。不屏蔽就无法写入。 |
|
7楼#
发布于:2004-09-25 19:36
我也是用的slave模式,外部的仿真波形跟你的差不多,只不过我的SLRD的信号下降沿变化的时候只是实现FIFO的指针加一,在下一个时钟周期才传输数据。我是用VC写的数据的发送和接受应用程序。请教老兄你是怎么用控制面板实现的数据发送呢?我用VC和EZ―USB的GPD实现数据发送。请问还需要另外添加固件程序吗?
|
|
8楼#
发布于:2004-09-27 15:26
我很早就实现了,auotin和autoout的slave fifo模式。当然当时没有考虑flag标志,现在考虑了flag。但只能从pc写数据给68013,不能从68013收数据。当然我认为是CPLD的数据没有传到68013,时序应该没有问题。我想了,好久也没有解决,请各位大侠帮忙一下。
|
|
9楼#
发布于:2004-09-27 16:37
我的verilog程序时序仿真如下图所示。大家看看是时序有问题吗?
|
|
10楼#
发布于:2004-09-27 16:38
请问楼上的大哥!你是怎么从主机写数据给68013的啊?现在我得vc程序往Slave fifo写数据老是出错。不知为何?
|
|
11楼#
发布于:2004-09-27 16:45
你的地址选择怎么是一位的啊?不应该是二位的么?
|
|
12楼#
发布于:2004-09-28 08:37
默认下是00,写时是10,只改变了1位,所以只显示1位呀。PC往68013写数据,我没有写,我现在只是要收数据呀。
|
|
13楼#
发布于:2004-10-01 15:14
请问楼主,时序波形用什么工具可以捕捉到啊?
|
|
14楼#
发布于:2007-04-10 16:22
引用第6楼lioniamhero于2004-09-24 15:18发表的“”: 但是他的手册里不是明确的说了必须要REVCTL = 0x03的吗? |
|
15楼#
发布于:2007-04-11 08:43
恩 是啊 如果我要用PKTEND的话 是不是也需要将这条语句屏蔽掉呢?
|
|
16楼#
发布于:2007-10-07 13:49
上楼的老兄,是ifclk上升沿写数据吧,你怎么是下降沿有效呢?
|
|