打印

USB开发中的难题

[复制链接]
1846|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
phd8882004|  楼主 | 2008-9-6 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的USB芯片是PDIUSBD12,固件程序和应用程序都编写好了,驱动程序用的是WINDOWS自带的HID设备驱动程序。


    现在遇到个麻烦事,设备在WIN2000上能识别,但到XP(SP1)上就不识别了,而我在XP里的固件程序里如果设置一些断点,这样运行的话,在XP上就能识别,去掉断点整个程序全速运行又不行了


    用BUS HOUND捕捉到的数据只有 GET STATUS & CLEAR FEATURE两个过程。


     已经调试了两天,没有眉目,请大虾圈圈与高手不吝赐教!!!!多谢

相关帖子

沙发
phd8882004|  楼主 | 2008-9-6 18:32 | 只看该作者

问题补充

关于设置断点后枚举成功的问题,我导师说只是多了一个延时,后来我把下面的程序:

//USB中断服务子程序
void fn_usb_isr()
{
  unsigned int i_st;
  bEPPflags.bits.in_isr = 1;
  i_st = D12_ReadInterruptRegister();//读取中断寄存器 调用D12ci.c中的
  if(i_st != 0){........}

改成:

//USB中断服务子程序
void fn_usb_isr()
{
  unsigned int i_st;

  bEPPflags.bits.in_isr = 1;

  i_st = D12_ReadInterruptRegister();//读取中断寄存器 调用D12ci.c中的子程序
  
  i_st = D12_ReadInterruptRegister();//此处为加上去的,读中断寄存器两次
  if(i_st != 0)

这样却能在去掉断点后能成功枚举,电脑能识别到设备。
//////////////////////////////////////////////////////////
请再问大家这是什么问题引起的呢?

使用特权

评论回复
板凳
phd8882004|  楼主 | 2008-9-6 18:33 | 只看该作者

补充

这样一修改,同时在上位机应用程序与单片机通信时又出现新的问题,通信过程中,只能正确读取一个数据,应用程序发送第二个数据时,用BUS HOUND检测到不能成功发送到总线了,同时CreateFile函数返回值HidDevice为-1,但却能获得FindTheHid,请问这是什么原因造成的呢?

   这些问题是由系统引起的,WIN2000与WINXP系统在USB通信方面,主控制器识别设备的过程有什么不同吗?

使用特权

评论回复
地板
aweyfan| | 2008-9-28 17:32 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝