阅读:2078回复:23
请问D12问题,实在是不懂了。
我的d12用的非同步方式,a0接的是cpu的addr0,枚举,发送接受都是好的,但是速度太慢了,才10k左右,感觉太不可能了,我的驱动用的是周立功的驱动,2000的机子,我发现我的板子不管什么时候,在收中断的时候老实要发生一个0x0的中断(就是什么中断都没有发生),但是d12的int管脚就是有中断,这个0x0的中断不影响这个板子的枚举,发送接受等,就是速度太慢了,会不会是这个的影响啊?
我的ALE是接gnd的,dma管脚dmaack下拉,dmareq悬空 有发生这样的情况吗? [编辑 - 12/17/03 by zkking] |
|
沙发#
发布于:2003-12-17 08:34
就算有中断,也不会影响你的速度阿。
|
|
板凳#
发布于:2003-12-17 08:34
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2003-12-17 10:11
这个速度实在是慢得不行了,那位能指点一下可能是什么问题?
我发送的时候是每次发64个直接,用的端口2,直接写到fifo中,然后在中断中等host来收,收完再发64个字节,这样对不对啊? 为什么我的速度还是上不去,mcu的工作频率都60mhz了,我只要求到300k的速度而已啊。 还有,各位说的bulk传送是不是我上面说的那个意思啊,我是非同步模式?谢谢了 |
|
地下室#
发布于:2003-12-17 10:19
这个速度实在是慢得不行了,那位能指点一下可能是什么问题? 大概就是这样做。你的mcu是51的?还要分频阿,实际就没有60M了。bulk传送,你的端点描述是BULK了吗?读写FIFO时候最好用汇编写,用DMA。速度提升最大关键就是MCU速度和读写FIFO |
|
5楼#
发布于:2003-12-17 10:31
楼上这位大侠,我的mcu不是51,其实他的晶振是10mhz的,然后内部pll倍频到64Mhz的。
端口描述为bulk?我还是个菜鸟,在d12的pdf中(周立功的那个中文的)就没有说道这个啊,需要如何描述了?实在不好意思,我真的不知道,在寄存器中写入吗?还是在枚举的时候通知host的? [编辑 - 12/17/03 by zkking] |
|
6楼#
发布于:2003-12-17 11:03
这样描述可以吗?
//设备描述符 const USB_DEVICE_DESCRIPTOR DeviceDescr = { sizeof(USB_DEVICE_DESCRIPTOR), // 设备描述符长度, =0x12 USB_DEVICE_DESCRIPTOR_TYPE, // 设备描述符类型, =0x01 0x0110, // 协议版本, =1.10 USB_CLASS_CODE_TEST_CLASS_DEVICE, // 设备类型 0, // 设备子类 0, // 设备协议 EP0_PACKET_SIZE, // 端点0最大数据包大小, =0x10 0x0471, // PHILIPS公司的设备ID 0x0888, // 设备制造商定的产品ID 0x0100, // 设备系列号 0, // iManufacturer 0, // iProduct 0, // iSerialNumber 1 // 可能配置数 }; //配置描述符 const USB_CONFIGURATION_DESCRIPTOR ConfigDescr = { sizeof(USB_CONFIGURATION_DESCRIPTOR), // 配置描述符的长度, =0x09 USB_CONFIGURATION_DESCRIPTOR_TYPE, // 配置描述符的类型, =0x02 CONFIG_DESCRIPTOR_LENGTH, // 描述符总长度 =0x2e 1, // 只支持1个接口 1, // 配置值 0, // 字符串描述符指针(无) 0x60, // 自供电 0x32 // 最大功耗(100mA) }; //接口描述符 const USB_INTERFACE_DESCRIPTOR InterfaceDescr = { sizeof(USB_INTERFACE_DESCRIPTOR), // 接口描述符长度, =0x09 USB_INTERFACE_DESCRIPTOR_TYPE, // 接口描述符类型, =0x04 0, // 接口数,只有1个 0, // 可选配置,只有1个 NUM_ENDPOINTS, // 除端点0的端点索引数目 =0x04 USB_CLASS_CODE_TEST_CLASS_DEVICE, // 设备类型 USB_SUBCLASS_CODE_TEST_CLASS_D12, // 子类代码 USB_PROTOCOL_CODE_TEST_CLASS_D12, // 协议代码 0 // 字符串描述符指针(无) }; //端点1发送描述符 const USB_ENDPOINT_DESCRIPTOR EP1_TXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x81, // 端点1IN USB_ENDPOINT_TYPE_BULK, // 中断传输, =0x03 EP1_PACKET_SIZE, // 端点最大包的大小, =0x10 10 // 传输间隔时间, =10ms }; //端点1接收描述符 const USB_ENDPOINT_DESCRIPTOR EP1_RXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x01, // 端点1OUT USB_ENDPOINT_TYPE_BULK, // 中断传输, =0x03 EP1_PACKET_SIZE, // 端点最大包的大小, =0x10 10 // 传输间隔时间, =10ms }; //端点2发送描述符 const USB_ENDPOINT_DESCRIPTOR EP2_TXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x82, // 端点2IN USB_ENDPOINT_TYPE_BULK, // 批量传输, =0x02 EP2_PACKET_SIZE, // 端点最大包的大小, =0x40 10 // 批量传输时该设置无效 }; //端点2接收描述符 const USB_ENDPOINT_DESCRIPTOR EP2_RXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x02, // 端点2OUT USB_ENDPOINT_TYPE_BULK, // 批量传输, =0x02 EP2_PACKET_SIZE, // 端点最大包的大小, =0x40 10 // 批量传输时该设置无效 }; |
|
7楼#
发布于:2003-12-17 11:10
USB_ENDPOINT_TYPE_BULK, // 批量传输, =0x02
就是配置BULK了,使用endp2 |
|
8楼#
发布于:2003-12-17 11:36
那么为什么速度就是上不去了?我要被搞昏了,几位大侠指点一下好吗?我看了,很多人都是用10M的单片机做的,也是用c写的fifo的读写,速度一般可以到200k,我是mcu是64mhz的工作频率,3级的流水线,处理器可以到60个MIPS啊,速度绝对不会慢的,应用c写,却没有10m的单片机速度快,怎么回事了?
|
|
9楼#
发布于:2003-12-17 11:42
200kbit吧,我看以前用51做过的都是几十Kbyte。还用C写肯定慢,你的MCU机器周期是1/64M吗?我看除了avr,其他的都要分频阿
|
|
10楼#
发布于:2003-12-17 11:47
关于速度的问题,看看吧
http://www.driverdevelop.com/forum/viewthread.php?fid=9&tid=44150&page=1&totalpost=37 |
|
11楼#
发布于:2003-12-17 13:15
我的处理器绝对速度够快的,是arm7的处理器,三级流水线,可以到60个mips,绝对比51单片机要快好多吧。
下位机我的fifo缓冲设的64bytes,上位机也是设的64bytes,有什么问题吗? |
|
12楼#
发布于:2003-12-17 13:59
一般上位机buffer也有关系,少发几次操作命令会快点
|
|
13楼#
发布于:2003-12-17 19:19
上位机的缓冲一般设称多少啊?
听某位大侠说,周立功提供的2000驱动不可能使d12很快,因为他是vendor request模式,我也不太清楚,请问d12上200kbytes的驱动是用的周立功的吗? |
|
14楼#
发布于:2003-12-18 08:42
zlg那个测速程序使用厂商请求、端点0做的,确实不够快。主要还是看你的usb设备用那种传输方式,Bulk和同步的方式会快点。我以前做的700Kbyte是用通用U盘驱动的。如果光是mcu速度快,而使用vendor request是很难提升速度的。
|
|
15楼#
发布于:2003-12-18 13:47
有用d12做u盘的吗?好像没有吧,速度上不去,我想换个驱动试试,但是现在只有周立功给的那个了
|
|
16楼#
发布于:2003-12-18 13:51
我就是用D12做U盘,这里好多人都是。驱动用通用的MASS STORAGE驱动。
|
|
17楼#
发布于:2003-12-18 15:59
驱动用通用的MASS STORAGE驱动,固件要不要做什么更改啊???
|
|
18楼#
发布于:2003-12-18 16:10
描述符要改,在加Bulk only协议的处理
|
|
19楼#
发布于:2003-12-18 20:46
这位狮子大侠啊,非常感谢您的耐心帮助,我现在怎么试速度都只有15kbytes左右,怀疑是不是上位机的驱动的问题,看了不少帖子,好像都说速度不高,因为周立功的驱动试vendor request 模式,请问能不能下到bulk模式的设备驱动啊,谢谢了
[编辑 - 12/18/03 by zkking] |
|
上一页
下一页