打印

关于HID Boot Keyboard的问题?

[复制链接]
7642|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mickey1118|  楼主 | 2011-12-28 23:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用Cy7C64251做了一个HID键盘,目前问题:不能在bois下工作。windows下没问题。接口描述等等都对照了,没问题。
请问有高手做过键盘吗?请指教,谢谢
附上主程序:
void main(void)  
{  
    int temp,i;

M8C_EnableGInt;                       //Enable Global Interrupts   
Timer8_1_EnableInt();               // Enable the Timer8 interrupt
Timer8_1_Start();                   // Timer8 Start and initialization


USBFS_Start(0, USB_5V_OPERATION);      //Start USBFS Operation using device 0 and with 5V operation  
while(!USBFS_bGetConfiguration());     //Wait for Device to enumerate  

   

  
//Enumeration is completed load endpoint 1. Do not toggle the first time  
USBFS_LoadInEP(1, keycode, 8, USB_NO_TOGGLE);  
while(!USBFS_bGetEPAckState(1)); //Check and see if ACK has occured  
while(!(USBFS_bGetEPState(1) & IN_BUFFER_EMPTY));
USBFS_LoadInEP(1, keycode, 8, USB_TOGGLE);

USBFS_EnableOutEP(2);


while(1)  
{

      
   
   scan();
   PRT0DR_BUF&=0xcf;
      PRT0DR=PRT0DR_BUF;
      temp=PRT0DR&0x07;
      if(temp==0x07)
      {
     if(codeflag==1)
     {
        
      for(i=0;i<8;i++)
   {
          keycode[i]=0;
   }
   
   
    if(USBFS_bGetEPAckState(1))    //Wait for ACK before loading data
        {
          USBFS_LoadInEP(1, keycode, 8, USB_TOGGLE);  
              }
      for(i=0;i<6;i++)
   {
   OldInbuf[i]=0;
   Inbuf[i]=0;
   }
   codeflag=0;
     }
   }
   
   if(USBFS_bGetEPState(2))
         {
          USBFS_bReadOutEP(2, Buf, 8);
       USBFS_EnableOutEP(2);
          if(Buf[0]&0x02)
        {
        PRT0DR_BUF&=0xf7;
                 PRT0DR=PRT0DR_BUF;
     
        }
          else
        {
                 PRT0DR_BUF|=0xcf;
                 PRT0DR=PRT0DR_BUF;         
        }
     USBFS_EnableOutEP(2);
       Delay(4000);
   }
}  
}
沙发
jxin| | 2011-12-30 09:02 | 只看该作者
要确保在usb通信没有ACK的时候重新枚举USB device

使用特权

评论回复
板凳
xglhc70338| | 2011-12-30 19:39 | 只看该作者
有赚钱的意识 1# mickey1118

使用特权

评论回复
地板
mickey1118|  楼主 | 2012-1-6 16:03 | 只看该作者
工作上要用,赚啥钱呀?
现在是boot下,重新插拔就好了。
但是进入windows之后,也要重新插拔。
boot下灯也不亮,郁闷啊

使用特权

评论回复
5
yinyankang| | 2013-7-30 17:22 | 只看该作者
我遇到的问题跟你差不多,我是一定要重启主机才能在动作。楼主,你解决了没有。

使用特权

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

本版积分规则

0

主题

5

帖子

1

粉丝