打印

制作HID键盘

[复制链接]
1039|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stly|  楼主 | 2017-3-4 22:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用CY7C64215单片机制作HID键盘,支持开机启动。
开机后,按键有响应,但太快。但LED无响应(如Caps Lock 灯)
沙发
yinxiangh| | 2017-3-4 22:52 | 只看该作者
进入Windows后,键盘正常吗?

使用特权

评论回复
板凳
stly|  楼主 | 2017-3-4 22:55 | 只看该作者

正常

使用特权

评论回复
地板
ousj| | 2017-3-4 22:57 | 只看该作者
不清楚你有啥实际问题

使用特权

评论回复
5
stly|  楼主 | 2017-3-4 22:58 | 只看该作者

我设了两个端点EP1(input),EP2(output),也设了subclass。还需要什么改动?

使用特权

评论回复
6
zyf部长| | 2017-3-4 23:00 | 只看该作者
程序看看

使用特权

评论回复
7
stly|  楼主 | 2017-3-4 23:04 | 只看该作者
void main(void)  
{  
int temp1,temp2;
BYTE readout;

  LED_1_Start();
  LED_2_Start();
  LED_3_Start();
  LED_1_Switch(0); // Turn on LED_1
  LED_2_Switch(0); // Turn on LED_2
  LED_3_Switch(0); // Turn on LED_3
M8C_EnableGInt;                       //Enable Global Interrupts   
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);  
    USBFS_EnableOutEP(2);
while(1)  
{

   temp1=KEY_input();
   
   if(temp1==0x41)
   {
    keycode[0]|=0x02;
   }
   else
   {
   keycode[0]&=(~0x02);
   }
   if(temp1==0x43)
   {
    keycode[0]|=0x02;
    temp1=0x11;
   }
      if(USBFS_bGetEPAckState(1))
      {
         
   
   //ACK has occurred, load the endpoint and toggle the data bit  
         USBFS_LoadInEP(1, keycode, 8, USB_TOGGLE);
      //converting read from Keyboard scan code to PC format     
      keycode[2]=MakeConversionTable(temp1);
      }
   
     }

        
      if(USBFS_bGetEPAckState(2))
     {
      USBFS_bReadOutEP(2, Buf, 1);  
      if(Buf[0]&0x02)
   {
   LED_1_Switch(1);
   }
      else
   {
   LED_1_Switch(0);
   }
   USBFS_EnableOutEP(2);
  }
  Delay(1000);
}  
}

使用特权

评论回复
8
kangzj| | 2017-3-4 23:05 | 只看该作者
响应太快还是问题?

使用特权

评论回复
9
stly|  楼主 | 2017-3-4 23:07 | 只看该作者
就是按一下按键,能跳出很多的字符,这个有可能是我的按键响应没最好。

使用特权

评论回复
10
chuxh| | 2017-3-4 23:09 | 只看该作者
我正在用CY7C64215做一个uSB的键盘, 有个问题想问你下, 你的电路是给CY7C64215 的电压是几伏? 我的是 用5V供电,把程序下载进去后,电脑有时候识别的了,有时候识别不了USB设备, 你遇到过这个问题吗?

使用特权

评论回复
11
stly|  楼主 | 2017-3-4 23:10 | 只看该作者
理图很简单的,5V供电是从USB接口取的。我倒是没遇到过你的问题,只要在系统里,还是很稳定的。

使用特权

评论回复
12
llljh| | 2017-3-4 23:13 | 只看该作者
应该是你HID Report没写好吧

使用特权

评论回复
13
pengf| | 2017-3-4 23:15 | 只看该作者
按下Caps Lock等几个键的时候,主机会返回俩个字节的数据,第二个字节第三位就是LED的状态值(1亮 0灭),直接将状态值设到LED就行了

使用特权

评论回复
14
stly|  楼主 | 2017-3-4 23:17 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
15
shcshc1234| | 2017-3-5 21:00 | 只看该作者
HID Repot描述符写的没问题么

使用特权

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

本版积分规则

433

主题

7058

帖子

0

粉丝