PDIUSBD12开发的一些问题集合 1.Q:usb驱动的安装与卸载 有个问题想请大家帮个忙: 我对一个下位机的usb端口实现了bulk传输模式,编写了相应的inf和sys文件. 并且安装,运行. 现在的问题: 我对这个驱动进行了修改,要从新安装这个驱动程序. 我在c盘删除了相应的inf和sys文件,但是没有把硬件重新插入pc机的时候,系统还是找到了以前的那个驱动程序. 请问我该怎么办才可以把驱动从新安装上?谢谢大家了 A:1。在你驱动卸载后,再插上设备,还会发前的驱动文件:只要你把设备驱动文件*.inf文件和驱动预安装文件*.oem删除就可以清除驱动安装记录了。 2.提示没找到相应的硬件,可能是你inf文件里的设备id与真实设备的id不符。 注册表没清除干净 2.Q:d12的中断传输方式和批量传输方式 各位大侠: 请教D12的批量传输方式和中断传输方式在固件编程上有什么地方不同呢! 或者谁用过批量传输方式进行过数据的传输么,急切请教? A:对DEVICE来说批量传输方式和中断传输方式在固件编程上没什么不同, 不同点在HOST。 HOST先保证中断传输方式的收发,但中断传输方式的数据传输较慢。 比如低速USB设备: HOST保证每10ms收发一个中断传输方式包,但每10ms最多也就收发一个包。 反之,HOST不保证批量传输方式能准时收发。但是当USB总线很空时,批量传输方式是没有限速的 3.Q:为何usb 的驱动程序卸载不了??????? 小妹最近要完成usb2.0接口的调试,用的是cy7c68013芯片,硬件部分已经做好了,固件部分由别人完成的,我负责pc机上的usb功能驱动。现在遇到了这样的问题,想请教各位大哥: 我用DriverWorks生成了一个usb驱动,pid/vid是04b4/8613,同时想利用deviceIOControl实现应用程序与接口的通信。 我在控制面板的添加/删除硬件中添加了先添加了此驱动的inf 文件,并在注册表的local_machine//system//currentcontrolset//control//class中创建了一个设备类。(如武安河书中所说) 当插上了usb接口后可以认出设备,但现在的问题是打开cypress的control panel确认不了这个接口了,检测不到,也下载不了固件了,肯定是驱动装的冲突了吧。 我想卸掉原来装的那个驱动但怎么都卸不掉,删掉了注册表里相关的东西,但不能删掉enum/usb下的pid/vid 04b4/8613,当时卸载了,重新插上后又不行了,又认了 现在的问题就是我想卸掉原来不小心装的的驱动,请教各位如何才能卸载? 但这个驱动和ezusb有何不同?他们和固件之间是否存在一个装载顺序问题? 我是菜鸟,真心请教各位了谢谢 A:把windows//inf目录下的oem*.inf打开,找到,你的那个,因为系统会吧它改名为 oem*.inf,*是不确定的,然后把它删掉。要在没插硬件的时候。然后把windows//system32//drivers目录下你的的驱动程序也删掉,就行了,注册表不用管。 同意上面的说法, 为了可靠,你可以把INF文件中和你想卸载的驱动程序相关的。INF,OEM*。INF和DERIVER下的驱动都删掉,也把注册表中的也删了。一定成功。 你可以先调试你的程序看到底调用了UNLOAD了没有?一般PNP硬件插入PC机,windows系统首先是在inf文件夹里搜索相应的.inf,所以你应当从控制面板里卸载driver,在把inf文件夹你的inf删除掉。 4.Q:d12的suspend命令是干什么用的? d12中断后,第一个中断寄存器值是0xC0,分别是suspend和bus reset。 请问,接到这两个中断寄存器后,该做什么动作? 我怎么看到很多程序都没管啊? 谢谢。 A:器件挂起状态,高电平表示器件处于挂起状态,程序中不做什么处理,周立功的软件里就置了一个标志,很多都是一个空程序,不做处理 5.Q:枚举过程是怎样的? A:1 第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。通过控制端点回送设备描述符,第一次只需要保证设备描述符中前8个字节发送正确。 2 主机发送SetAddree请求到USB 设备,给USB设备分配唯一的地址。这时外设被分配唯一地址,此时的USB设备成为被主机承认的合理外设,可以进行正常的数据传送。 3 外设再一次接收到GetDescriptor请求。主机分析描述符的信息。主机操作系统根据描述符信息寻找相应的设备驱动程序。 4 操作系统会继续发出GetConfiguration请求,读取设备的配置信息。要把外设的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。 5 在设备能通讯前,主机给外设一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关配置,使设备能合理使用。 经过上面的调试后,USB外设可以发送和接收数据,设备如果不立即使用则会进入挂起状态,直到使用。 6.Q:关于D12的SUSPEND引脚问题 想问一下对于D12来说SUSPEND引脚是输出还是输入,还有对应的状态是什么? 因为我看了周立功提供的程序,里面老是有D12SUSPD=0;(sbit D12SUSPD=P3^3);硬件上SUSPEND接单片机的P3.3脚。不太明白这么做的目的。 谢谢指教。 A:D12的suspend引脚是双向的,也就是说,即作输出也做输入。 比如说d12上电时,suspend为低,如果d12发现总线空闲,就会将suspend拉高,这种情况下的suspend便起到输出作用。 当 PDIUSBD12处于挂起模式时,内部寄存器不能被访问,如果需要对设备进行访问,将PDIUSBD12的挂起脚拉低唤醒设备然后进行访问,这种情况suspend作为输入用。 最关键的是要对d12操作前,suspend一定要拉低。
|