总算搞了一回USB HID设备,做了一个USB键盘来玩玩~~~~其间的陈述描述符让我晕了几天~~~~~几份HID相关的协议仍是蛮长的~~~~~~明日再弄个USB鼠标设备玩玩~~~~~~~有空的话再搞个红外遥控器玩玩~~~
这回是拿曾经做的Mass storage来改的,所以比较快,修改了一下描述符以及端点处理等,就行了。用了一个4*4的小键盘,有0-9十个数字键,Num Lock键,Caps Lock键,Shift键,Ctrl键,Alt键,回车键等。
最多能够有三个键一起按下,假如相交的话,最多只能两个键按下。
以下是经过串口回来的调试信息:
系统启动…………………………..
断开USB衔接……………………
USBD12芯片初始化
设置地址…………………
地址为: 0
衔接USB……………
USB总线复位…………………………..
USB总线挂起…………………………..
USB总线复位…………………………..
USB总线挂起…………………………..
USB总线复位…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取设备描述符…………………………..
USB总线复位…………………………..
USB规范恳求…………………………..
设置地址…………………
地址为: 2
USB规范恳求…………………………..
获取描述符…………………………..
获取设备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取言语ID…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取设备序列号…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取言语ID…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取产品字符串…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取言语ID…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取产品字符串…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取设备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
设置装备…………………………..
USB类恳求…………………………..
设置闲暇…………………………..
USB规范恳求…………………………..
获取描述符(从接口)…………………………
获取陈述描述符…………………………..
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
端点2输出…………………………..
端点2的数据是 0x01
端点2输出…………………………..
端点2的数据是 0x03
端点2输出…………………………..
端点2的数据是 0x01
端点2输出…………………………..
端点2的数据是 0x00
端点2输出…………………………..
端点2的数据是 0x02
端点2输出…………………………..
端点2的数据是 0x03
断开USB衔接……………………
USBD12芯片初始化
设置地址…………………
地址为: 0
衔接USB……………
USB总线复位…………………………..
USB总线挂起…………………………..
USB总线复位…………………………..
USB总线挂起…………………………..
USB总线复位…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取设备描述符…………………………..
USB总线复位…………………………..
USB规范恳求…………………………..
设置地址…………………
地址为: 2
USB规范恳求…………………………..
获取描述符…………………………..
获取设备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取言语ID…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取设备序列号…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取言语ID…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取产品字符串…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取言语ID…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取字符串描述符…………………………..
获取产品字符串…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取设备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
获取装备描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
获取描述符…………………………..
USB规范恳求…………………………..
设置装备…………………………..
USB类恳求…………………………..
设置闲暇…………………………..
USB规范恳求…………………………..
获取描述符(从接口)…………………………
获取陈述描述符…………………………..
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
USB规范恳求…………………………..
获取描述符(从接口)…………………………
端点2输出…………………………..
端点2的数据是 0x01
端点2输出…………………………..
端点2的数据是 0x03
端点2输出…………………………..
端点2的数据是 0x01
端点2输出…………………………..
端点2的数据是 0x00
端点2输出…………………………..
端点2的数据是 0x02
端点2输出…………………………..
端点2的数据是 0x03
在设备管理器里看到的图:
原理图
(用的是曾经做IDE转USB的板,所以上面还有个IDE接口和573锁存器,能够不必理睬它们):
(用的是曾经做IDE转USB的板,所以上面还有个IDE接口和573锁存器,能够不必理睬它们):
(留心:原理图上所标的晶体值是曾经的,这个程序中运用的是22.1184M的晶体.它关系到串口波特率,假如你不运用串口,那么能够不必理睬它.)
留心:图中串口电平转化部分的C8和C10接反了,C11负端应接VDD。D12的SUSPEND(12脚)应该接地。USB接头的D+和D-跟芯的D+和D-之间应该串联22欧姆的匹配电阻。片因为图得比较匆忙,所以没留心。右击挑选图片另存为能够看到完好图片了.