阅读:2525回复:14
用PDIUSBD12的经验!
D12的BUG很多,但可以避开,DMA方式并不比I/O方式快多少,而且电路复杂,程序大。我使用I/O方式做的FLASH盘的速度达到了1MB/秒。你要仔细阅读D12的文档,注意命令与数据之间的延迟。我有很多使用D12的经验,有问题可以给我打电话:13001127521。
我还有大量的比市场价低的D12芯片。 |
|
最新喜欢:![]() |
沙发#
发布于:2003-05-08 20:04
你好!我是正在做c51-d12。现在遇到点困难想请教您,我的d12一上电其int_n脚就一直处于低电平,这样就使我的c51一直处于中断状态.请问这是否是d12的bug?? 如果是该如何跳过??
非常感谢!!!!! :( |
|
板凳#
发布于:2003-05-08 22:22
不是BUG,是上电后,D12的中断寄存器或状态寄存器中有动作,你应该读取它们,这在文档中有介绍。
|
|
地板#
发布于:2003-05-08 22:35
兄弟,能介绍D12初始化的过程吗??
我按照下面的做了―― ① Set Address Enable(D0,80); ② Set Endpoint Enable(此时LED亮); (D8,01) ③ Disconnect; (F3,06,0B) ④ delay(1~2 s); ⑤ Connect(即用43h参数调用Set Mode,此时LED灭); (F3,16,0B) 然后我读中断――有时候能产生两次中断(有时候就不中断),读中断寄存器的第一个字节,第一次为C0,第二次为80,读最后状态寄存器始终为0 兄弟能指点我一下,我还需要做什么吗?? [编辑 - 5/8/03 by Wxy8030] |
|
地下室#
发布于:2003-05-09 09:22
楼上的大哥!请教一下你的d12的中断是在什么时候打开的?? :)
|
|
5楼#
发布于:2003-05-09 12:53
在
⑤ Connect(即用43h参数调用Set Mode,此时LED灭); (F3,16,0B) 之后―― |
|
6楼#
发布于:2003-05-09 16:45
D12的BUG很多,但可以避开,DMA方式并不比I/O方式快多少,而且电路复杂,程序大。我使用I/O方式做的FLASH盘的速度达到了1MB/秒。你要仔细阅读D12的文档,注意命令与数据之间的延迟。我有很多使用D12的经验,有问题可以给我打电话:13001127521。 楼上的兄弟,我正在用D12,项目大部分已经完成了,只是速度很慢,大概几十K左右,硬件我用的是中断写的方式,D12发一个中断到MCU,MCU就发16个字节到D12,驱动程序用的是周立功的,应用层则不断的读数据,用的是readfile(),它一次最大只能发64个字节的请求,但是很多高手都说可以发64K的请求,不知道是怎么回事,可否指教一二?它的驱动程序有什么问题吗?是不是需要自己重新编写?另外,你的D12价格多少,我公司很快需要大批量采购,我们电话或E_mail联系! 我的电话:023-65413681转8699找 倪水平 023-65456915转8699 E_mail:nishuiping@hotmail.com :) :) :) :) :) :) :) :) :) :) :) |
|
7楼#
发布于:2003-05-09 22:50
楼上的,d12是全速的,一次最大可以发64字节bulk包,你为什么用16字节的呢?你用的是bulk方式吗,如果是中断方式那速度最大只能到64k/s.
所谓的64k其实是应用程序想驱动提供的最多数据量,到了驱动里它会自动给你分成1个1个的64字节的包发送到设备里,这样就省掉了一部分从应用程序到驱动时间消耗 |
|
8楼#
发布于:2003-05-10 11:32
一.Wxy8030朋友的问题:
读中断寄存器的第一个字节,第一次为C0,意思是有两个中断, 一个是BUS RESET,一个是SUSPEND CHANGE。第二次为80,意思是SUSPEND CHANGE中断。这两个中断值是上电时的典型值,可以继续读中断寄存器,根据新值再处理。 43h参数是怎么用的? 二.balsilver朋友的问题: D12的中断在上电时,检测D+,D-线,可以产生BUS RESET和SUSPEND CHANGE中断,其它有关终点的中断,会在你设置它们的地址后,并有动作和数据时产生。 三.一天到晚游泳的鱼朋友的问题: 用中断方式就是慢,可以试用BULK方式,也可改一下MCU写数据的指令,不要用循环指令,减少判断指令,尽量用汇编语言写指令。 |
|
9楼#
发布于:2003-05-10 12:31
TO―zengyon
写错了,是F3―― 问题是我只能读到这两次中断啊,再往后就没有中断了,,,,, 对于复位中断和挂起中断我什么都没做,D12的挂起脚我常接地了,,,, |
|
10楼#
发布于:2003-05-10 15:29
楼上是用什么作mcu的??怎么在connect之后才开中断???
:o :o |
|
11楼#
发布于:2003-05-10 15:43
楼上是用什么作mcu的??怎么在connect之后才开中断??? 我觉得应该在CONNECT前就开中断的:) |
|
|
12楼#
发布于:2003-05-10 16:19
我用的AT89C52啊,,,,,,,,
在执行完往D12发送CONNECT(F3,16,OB)之后打开中断的啊,,,,,,, |
|
13楼#
发布于:2003-05-10 17:26
中断在F3命令中设置,但在FB命令中才能启用终点4和5的中断,如果你要使用I/O模式和BULK管道,最好设置这个命令。你可以在程序初始时循环读中断寄存器,等RESET中断发生以后,再设置D0,D8,F3命令。不要先断上拉,再开启上拉,直接开启上拉。其后,CPU循环读中断寄存器,应该有终点0的中断,再读取终点0的缓冲区,这是读取描述符的80,06...命令,这样才正常。我的设计就是这样,没有问题。
顺便说一下,先连接还是先设置中断没有多少区别,先中断还容易被干扰 |
|
14楼#
发布于:2003-05-10 18:28
不知他说的中断是终点4和5的中断,还是mcu的中断,如果是前者倒没什么问题,如果枚举不成功可能是底层程序有问题(延时之类),因为我也是按这个顺序做的,没问题。如果是后者,问题就很明显了,呵呵…… :P :P
|
|