USB开发中的难题

[复制链接]
3404|3
 楼主| phd8882004 发表于 2008-9-6 18:32 | 显示全部楼层 |阅读模式
我用的USB芯片是PDIUSBD12,固件程序和应用程序都编写好了,驱动程序用的是WINDOWS自带的HID设备驱动程序。<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;现在遇到个麻烦事,设备在WIN2000上能识别,但到XP(SP1)上就不识别了,而我在XP里的固件程序里如果设置一些断点,这样运行的话,在XP上就能识别,去掉断点整个程序全速运行又不行了<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;用BUS&nbsp;HOUND捕捉到的数据只有&nbsp;GET&nbsp;STATUS&nbsp;&&nbsp;CLEAR&nbsp;FEATURE两个过程。<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;已经调试了两天,没有眉目,请大虾圈圈与高手不吝赐教!!!!多谢
 楼主| phd8882004 发表于 2008-9-6 18:32 | 显示全部楼层

问题补充

关于设置断点后枚举成功的问题,我导师说只是多了一个延时,后来我把下面的程序:<br /><br />//USB中断服务子程序<br />void&nbsp;fn_usb_isr()<br />{<br />&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i_st;<br />&nbsp;&nbsp;bEPPflags.bits.in_isr&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;i_st&nbsp;=&nbsp;D12_ReadInterruptRegister();//读取中断寄存器&nbsp;调用D12ci.c中的<br />&nbsp;&nbsp;if(i_st&nbsp;!=&nbsp;0){........}<br /><br />改成:<br /><br />//USB中断服务子程序<br />void&nbsp;fn_usb_isr()<br />{<br />&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i_st;<br /><br />&nbsp;&nbsp;bEPPflags.bits.in_isr&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;i_st&nbsp;=&nbsp;D12_ReadInterruptRegister();//读取中断寄存器&nbsp;调用D12ci.c中的子程序<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;i_st&nbsp;=&nbsp;D12_ReadInterruptRegister();//此处为加上去的,读中断寄存器两次<br />&nbsp;&nbsp;if(i_st&nbsp;!=&nbsp;0)<br /><br />这样却能在去掉断点后能成功枚举,电脑能识别到设备。<br />//////////////////////////////////////////////////////////<br />请再问大家这是什么问题引起的呢?<br />
 楼主| phd8882004 发表于 2008-9-6 18:33 | 显示全部楼层

补充

这样一修改,同时在上位机应用程序与单片机通信时又出现新的问题,通信过程中,只能正确读取一个数据,应用程序发送第二个数据时,用BUS&nbsp;HOUND检测到不能成功发送到总线了,同时CreateFile函数返回值HidDevice为-1,但却能获得FindTheHid,请问这是什么原因造成的呢?<br /><br />&nbsp;&nbsp;&nbsp;这些问题是由系统引起的,WIN2000与WINXP系统在USB通信方面,主控制器识别设备的过程有什么不同吗?<br />
aweyfan 发表于 2008-9-28 17:32 | 显示全部楼层

和操作系统无关,和机器有关,换电脑再试

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部