阅读:2225回复:21
为什么用controlpannel读的getpipes怎么不一样呢?(68013)
我用controlpannel读的getpipes显示不出来啊,其余的也不一样。就是那个管道设置怎么个设法?
本来设的是2out,6in结果读出来就是1in,1out了。 EZ-USB Control Panel - built 18:27:25 Nov 28 2001 Get PipeInfo Interface Size 56 Pipe: 0 Type: BLK Endpoint: 1 OUT MaxPktSize: 0x40 Pipe: 1 Type: BLK Endpoint: 1 IN MaxPktSize: 0x40 或干脆不显示出来了。 Get PipeInfo Interface Size 16 我的初始化如下: void TD_Init( void ) { CPUCS = 0x10; GpifInit( ); // EP2 512 BULK OUT 4x SYNCDELAY; EP2CFG = 0xA0; // EP6 512 BULK IN 4x SYNCDELAY; EP6CFG = 0xE0; // BUF[1:0]=00 for 4x buffering SYNCDELAY; // // activate NAK-ALL to avoid race conditions FIFORESET = 0x80; 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 // 8-bit bus (WORDWIDE=0)... SYNCDELAY; // EP2FIFOCFG = 0x00; SYNCDELAY; // EP6FIFOCFG = 0x04; SYNCDELAY; // EP2BCL = 0x80; // arm first buffer SYNCDELAY; // EP2BCL = 0x80; // arm second buffer SYNCDELAY; // EP2BCL = 0x80; // arm third buffer SYNCDELAY; // EP2BCL = 0x80; // arm fourth buffer 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 = 0x02; SYNCDELAY; // GPIFIE = 0x02; // Enable GPIFWF interrupt SYNCDELAY; // EIE |= 0x04; // Enable INT4 ISR, EIE.2(EIEX4=1) } :( |
|
最新喜欢:bright... |
沙发#
发布于:2004-06-21 07:09
你要在dscr.a51里面设定,这段程序不是设定管道的,
|
|
板凳#
发布于:2004-06-21 22:11
那为什么这又不一样呢?
两个程序的描述符相同,如下: DeviceDscr: db DSCR_DEVICE_LEN ;; Descriptor length db DSCR_DEVICE ;; Decriptor type dw 0002H ;; Specification VersionBCD) db 00H ;; Device class db 00H ;; Device sub-class db 00H ;; Device sub-sub-class db 64 ;; Maximum packet size dw 4705H ;; Vendor ID dw 0210H ;; Product ID (SampleDevice) dw 0000H ;; Product version ID db 1 ;; Manufacturer string index db 2 ;; Product string index db 0 ;; Serial number stringindex db 1 ;; Number of configurations 结果读出来就不同了: Device Descriptor: bLength: 18 bDescriptorType: 1 bcdUSB: 512 bDeviceClass: 0xff bDeviceSubClass: 0xff bDeviceProtocol: 0xff bMaxPacketSize0: 0x40 idVendor: 0x4b4 idProduct: 0x8613 bcdDevice: 0x4 iManufacturer: 0x0 iProduct: 0x0 iSerialNumber: 0x0 bNumConfigurations: 0x1 Device Descriptor: bLength: 18 bDescriptorType: 1 bcdUSB: 512 bDeviceClass: 0x0 bDeviceSubClass: 0x0 bDeviceProtocol: 0x0 bMaxPacketSize0: 0x40 idVendor: 0x547 idProduct: 0x1002 bcdDevice: 0x0 iManufacturer: 0x1 iProduct: 0x2 iSerialNumber: 0x0 bNumConfigurations: 0x1 :( |
|
地板#
发布于:2004-06-21 22:33
问题是你改了哪里才出现的不一样啊?
|
|
地下室#
发布于:2004-06-22 07:39
我就是把原来的那几个文件(gpifburst8,gpif,fw等)都完全复制到自己的项目中,结果用c51编译出来就不同了的。
只有把自己写好的程序(如gpif***)复制到那个(gpifburst8)中,并在原来的项目中编译才能通得过。 附件中:gpifburst8中就找得到正确的管道,描述符等 gpif-wq中就找不到了。 请高手们指点一下。 |
|
|
5楼#
发布于:2004-06-22 08:02
能说一下你的项目是干什么的吗?另外你的gpif.c文件是如何产生的?是不是通过gpif designer实现的?
|
|
6楼#
发布于:2004-06-22 14:50
我建议你采用一下FX2_to_extsyncFIFO这个文件,到cypress.com网站可以下载
|
|
7楼#
发布于:2004-06-22 22:17
我的gpif是用那个产生的。具体就是用以调试fiforead,fifowrite,signelread等,
请你调试了下载到芯片中是否不一样呢? FX2_to_extsyncFIFO是做什么用的啊? |
|
8楼#
发布于:2004-06-23 07:46
这是很实用化的一个例子,可以在它的基础上加以修改,便可以实现自己所需的数据收发功能了。
|
|
9楼#
发布于:2004-06-23 07:54
我找不到啊,你能把他放到网站上来吗?
|
|
10楼#
发布于:2004-06-23 08:00
现在那个网站上不去,cypress.com
|
|
11楼#
发布于:2004-06-23 08:20
http://www.cypress.com/support/app_note.cfm?objectID=9E0E78D3-313A-4B0B-B693A93CC8B03C8C&fname=USB%20High%2DSpeed%20Peripherals&tid=A47EC41D-A212-4D8B-B3AA620F3AEB2978
|
|
12楼#
发布于:2004-06-23 14:24
在楼上说的这个文件(FX2_to_extsyncFIFO GPIF FIFO Transactions Auto mode)中,只要把gpif.c文件中的内容完全删除,及不要gpif这个文件就读取完全正确了。是什么原因呢?
其他的范例也相同! |
|
|
13楼#
发布于:2004-06-23 16:21
不会吧,你把gpif.c删除了还能编译通过?
|
|
14楼#
发布于:2004-06-23 16:24
你还是先把例子看懂再问吧
|
|
15楼#
发布于:2004-06-23 19:36
通不过就不会问大侠了。
肯定通得过。不信的话你就把它下载去试试看! 反正把gpif文件中的都删去,只流下gpifinit()这个空函数就行了。 |
|
16楼#
发布于:2004-06-23 20:48
可是没有他你能实现什么功能呢?能通信吗?恐怕不会
这样编译是能通过,可是这样这个函数就不起作用了 |
|
17楼#
发布于:2004-06-23 21:32
关键是能读出来正确的什么描述符,管道,字符串等。这样有了管道才能做下一步的事情啊。
而却没那个文件,Vender REQ也能正确发出, 有了哪个文件就不行了。读出来的描述符等都 不正确了。 |
|
18楼#
发布于:2004-06-24 13:26
我也遇到类似的问题,用自己写的固件通过控制面板下载后,得到的设备描述符与下载前一样,管道信息也一样。我也将那个例子重新编译后,将得到的*.hex文件下进去,得到的结果还是一样,伤透了脑筋。哥们,你的问题解决了吗?
[编辑 - 6/24/04 by lzg0000] |
|
|
19楼#
发布于:2004-06-24 13:30
估计你把程序下载到外部Sram里运行了,例子代码都是为开发办设计的,有一部分是把程序下载到外部的64K Sram里运行,而你的设备没有Sram,所以程序根本没有执行。
验证的办法是在程序开始或者主程序中加上让某个IO口输出固定波形,如果能输出说明你的程序运行了,问题可能出在初始化上,如果没有,说明固件下错地方了。 改的地方应该在Target的设置选项卡里,里面有个Code range 和Xdata range,前面那个填0x80 - 0x0FFF, 后面那个填0x1000-0x1FFF,这两个范围你可以自己选择分配,其中80前的是为中断向量表留的地址,总长度不要大于8K,也就是到0x2000为止。 由于手头上没有这个软件,所以不能抓个图出来,否则一目了然,实在遗憾。不过以前好像有过类似的问题讨论 |
|
上一页
下一页