USB-HID设备1-协议及硬件基础
探索USB-HID设备的奥秘:协议与硬件基础
USB技术,凭借其高速(1.5-480Mb/s)、热插拔等特性,已经成为PC世界中不可或缺的连接桥梁。本实验选用高效STM32芯片,专攻USB 2.0全速(12Mb/s)的卓越性能。
USB通信的深层解析
- 电气细节: USB连接由Vbus/GND提供电力,D+/D-承载数据,NRZI编码确保同步,同步域则强化了通信的稳定性。数据线的半双工模式巧妙地应对了信息传输。
- 系统结构: USB协议划分为主机和设备两个角色,通过功能层、设备层和总线接口层的分层设计,USB主控器主导着双向的交流,严格区分了控制与被控制。
- 端点魔法: 数据传输的指挥中心,端点不仅定义了信息的流向和速率,还在主机与设备之间搭建了多通道的桥梁。
每个USB接口中的多个端点就像是信息的接收与发送节点,它们通过编号、方向和数据包长度等参数进行精准操作。端点0执行初始化任务,其余端点则为后续数据交换提供路径。USB传输类型包括控制、同步、中断和批量,以适应不同的数据传输需求。
在USB枚举过程中,主机通过控制传输来识别设备,获取描述符,配置设备地址,并进一步了解配置信息。STM32 USB控制器的强大之处在于其支持USB 2.0全速,配置了1-8个双向端点(最多16个单向),配备CRC校验、同步传输和智能缓冲机制。它还支持端点的挂起和恢复功能,确保高效通信。
STM32的USB模块设计巧妙,SIE组件以48MHz的USB时钟运行,其他部分则由PCLK1供电。配置寄存器等关键组件确保了USB规范的无缝对接。数据传输依赖于共享的专用缓冲区,其大小由端点数和数据分组大小共同决定,每个端点的最大传输容量为512字节。驱动程序通过中断信号监控数据传输状态,确保实时响应。
总的来说,USB-HID设备的协议与硬件基础是实现高效、便捷通信的关键,STM32以其卓越的性能和细致的接口设计,为USB世界增添了更多可能性。让我们深入理解这些原理,感受USB连接的魔力。
绛旓細鎬荤殑鏉ヨ锛USB-HID璁惧鐨勫崗璁涓庣‖浠跺熀纭鏄疄鐜伴珮鏁堛佷究鎹烽氫俊鐨勫叧閿紝STM32浠ュ叾鍗撹秺鐨勬ц兘鍜岀粏鑷寸殑鎺ュ彛璁捐锛屼负USB涓栫晫澧炴坊浜嗘洿澶氬彲鑳芥с傝鎴戜滑娣卞叆鐞嗚В杩欎簺鍘熺悊锛屾劅鍙桿SB杩炴帴鐨勯瓟鍔涖
绛旓細USB-HID锛屽叏绉颁负Human Interface Device锛屽嵆浜烘満浜や簰璁惧鐨勭畝绉般傝繖涓悕瀛楁竻鏅板湴鎻ず浜嗚繖绫昏澶囩殑涓昏鍔熻兘锛屽嵆鐩存帴涓庣敤鎴疯繘琛屼簰鍔紝濡傞敭鐩樸侀紶鏍囧拰娓告垙鎵嬫焺绛夈HID璁惧鐨勬牳蹇冨湪浜庡畠浠殑璁捐鐩殑鏄负浜嗕笌浜虹洿鎺ヤ氦娴侊紝鎻愪緵鐩磋鐨勮緭鍏ユ柟寮忋傚煎緱娉ㄦ剰鐨勬槸锛孒ID璁惧鐨勫畾涔夊苟涓嶅眬闄愬湪蹇呴』鍏峰浜烘満鎺ュ彛涓娿傚彧瑕佹槸閬靛惊H...
绛旓細璁惧闄や簡HID鎺ュ彛涔嬪锛屽畠鍙兘鍚屾椂杩樺寘鍚湁鍏朵粬鐨USB鎺ュ彛銆備緥濡傚奖鍍忔樉绀鸿澶囧彲鑳戒娇鐢℉ID鎺ュ彛鏉ュ仛浜害锛屽姣旓紝涓庢洿鏂扮巼鐨勮蒋浠舵帶鍒讹紝鑰屼娇鐢ㄤ紶缁熺殑褰 鍍忔帴鍙f潵浼犻佽鏄剧ず鐨勬暟鎹俇SB鎵╅煶鍣ㄥ彲浠ヤ娇鐢ㄥ疄鏃朵紶杈撴潵鎾斁璇煶锛屽悓鏃朵娇鐢℉ID鎺ュ彛鏉ユ帶鍒堕煶閲忥紝闇囪崱锛屼笌浣庨煶绛夈侶ID鎺ュ彛閫氬父姣斾紶缁熺殑鎺у埗鎺ュ彛鏉ュ緱渚垮疁銆
绛旓細USB-HID璁惧鐨勪富瑕佽兘鍔涗綋鐜板湪鏁版嵁浜ゆ崲鍜岀伒娲荤殑鎶ュ憡缁撴瀯涓娿傛暟鎹瓨鍌ㄥ湪绉颁负鎶ヨ〃鐨勭粨鏋勪腑锛岃澶囩殑鍥轰欢闇鏀寔HID鎶ヨ〃鐨勮鑼冿紝浠ヤ究涓绘満鍦ㄦ帶鍒朵笌涓柇浼犺緭涓彂閫佽姹傚苟鎺ユ敹鏁版嵁銆傛姤琛ㄨ璁℃瀬涓虹伒娲伙紝鑳藉閫傚簲鍚勭绫诲瀷鐨勬暟鎹紶杈撱傛暟鎹紶杈撶殑澶у皬鏍规嵁璁惧鐨勯熷害鑰屽紓銆備綆閫熻澶囦竴娆℃渶澶氫紶杈8瀛楄妭锛屽叏閫熻澶囧垯鎻愬崌鑷64瀛...
绛旓細USB-HID璁惧鍦ㄨ璁′笂瀛樺湪涓浜涗富瑕侀檺鍒讹紝棣栧厛鍦ㄦ暟鎹紶杈撻熷害涓婏紝涓嶅悓绫诲埆璁惧鏈夌潃鏄庣‘鐨勪笂闄愩傚浜庝綆閫熷拰鍏ㄩ熻澶囷紝姣10姣鍐呭厑璁哥殑浜嬪姟绗旀暟鍒嗗埆闄愬埗鍦1绗鍜1绗/姣锛屽鑷存渶澶т紶杈撻熺巼鍒嗗埆涓烘瘡绉800瀛楄妭鍜64,000瀛楄妭銆傞珮閫熻澶囩殑浼犺緭閫熷害鏇村揩锛屾瘡125寰1绗斾簨鍔★紝鍙揪鍒版瘡绉24.576MB鐨勯熺巼銆傜劧鑰岋紝瀹為檯...
绛旓細USB HID璁惧鏄氳繃鎶ュ憡鏉ョ粰浼犻佹暟鎹殑,鎶ュ憡鏈夎緭鍏ユ姤鍛婂拰杈撳嚭鎶ュ憡銆傝緭鍏ユ姤鍛婃槸USB璁惧鍙戦佺粰涓绘満鐨,渚嬪USB榧犳爣灏嗛紶鏍囩Щ鍔ㄥ拰榧犳爣鐐瑰嚮绛変俊鎭繑鍥炵粰鐢佃剳,閿洏灏嗘寜閿暟鎹暟鎹繑鍥炵粰鐢佃剳绛;杈撳嚭鎶ュ憡鏄富鏈哄彂閫佺粰USB璁惧鐨,渚嬪閿洏涓婄殑鏁板瓧閿洏閿佸畾鐏拰澶у啓瀛楁瘝閿佸畾鐏瓑銆傛姤鍛婃槸涓涓暟鎹寘,閲岄潰鍖呭惈鐨勬槸鎵瑕佷紶閫佺殑鏁版嵁銆傝緭鍏...
绛旓細HID鐨勪腑鏂囨嫾闊充负鈥渞茅n j墨 ji猫 mi脿n zhu膩ng zh矛鈥濓紝鍦ㄨ嫳鏂囦腑鐨勬祦琛屽害涓1169锛屽畠灞炰簬Computing锛堣绠楁満锛夐鍩熺殑缂╁啓銆傝繖涓被鍒富瑕佹秹鍙USB璁惧锛屽USB浜烘満鎺ュ彛绫婚氫俊鍜屽彲缂栫▼閫氫俊鎺у埗鍣ㄧ殑寮鍙戙傛澶栵紝HID鍗忚銆乄ii Remote涓庣數鑴戦氫俊鎶鏈佷綅缃潗鏍囧鐞嗕互鍙婂浘鍍忔搷浣滅瓑鏂归潰涔熸槸鐮旂┒鐨勯噸鐐广傛荤殑鏉ヨ锛孒ID浣滀负...
绛旓細鏈夊尯鍒1銆佽澶囩被鍨嬩笉鍚岋紝usb鏄氱敤鐨勪覆琛岄氫俊鍗忚锛屽厑璁歌澶囦箣闂磋繘琛屾暟鎹紶杈撱倁sbhid鏄壒瀹氱被鍨嬬殑璁惧锛岀敤浜庝笌鐢ㄦ埛杩涜浜や簰锛岄敭鐩樸侀紶鏍囧拰瑙︽懜灞忕瓑銆2銆佷紶杈撻熷害涓嶅悓锛usbhid璁惧鐨勬暟鎹紶杈撻熷害姣usb璁惧蹇倁sbhid璁惧鍦ㄤ紶杈撴暟鎹椂浣跨敤浜嗘洿楂樻晥鐨勫崗璁傚洜姝usb鍜寀sbhid鏈夊尯鍒
绛旓細娣卞叆鎺㈢储USB涓栫晫锛氶┍鍔ㄥ師鐞嗕笌宸ヤ綔鏈哄埗 USB锛屽叏绉伴氱敤涓茶鎬荤嚎锛屼互鍏朵究鎹风殑璁惧杩炴帴鍜岀儹鎻掓嫈鐗规э紝涓烘垜浠殑鐢熸椿甯︽潵鏋佸ぇ渚垮埄銆傛湰鏂囧皢鑱氱劍浜嶭inux绯荤粺涓殑USB妯″潡锛屾彮绀哄叾鑳屽悗鐨鍗忚銆佹灇涓炬祦绋嬪拰椹卞姩鏋舵瀯銆傝鎴戜滑涓璧锋彮绉楿SB浼犺緭鐨勯噾瀛楀缁撴瀯锛屼簡瑙RZI缂栫爜銆佸寘鏍煎紡鍜屾暟鎹紶杈撹鑼冿紝鍖呮嫭IN/OUT浠ょ墝鍖呫佸洓绉嶄紶杈...
绛旓細1, 绾疕ID绫,绗﹀悎 HID1.1 鍗忚,USB1.1 FIFO闀垮害涓: 8 bytes 2, HT82k96E, 鏈 3 endpoints (闄や簡Controll endpoint), 姣忎釜endpoint 鍙畾涔変负鍙屽悜绔偣 EM78M611 鏈2 endpoints (闄や簡Controll endpoint), 姣忎釜endpoint 涓嶈兘瀹氫箟涓哄弻鍚戠鐐 Em78p612 浠呮湁1 endpoint(闄や簡Controll endpoint),...