一,概述
现在许多的主控上都带有USB的功用,可是关于初学者来说,这方面使用仍是比较扎手,由于usb的不光固件程序需求编写,PC端的驱动也要编写,而且驱动写好了还要写个上位机才干看出作用。这样调试起来好不容易,主张从USB的键盘,鼠标开端做,了解清楚了,再做自己的协议就比较简略了。
USB的概念前史啥的这儿就不说了。咱们先不论具体的数据包格局,这一节先从整个包的层面上简略的说,进程是这样的,
—————————————设备刺进————————————————————-
1)主时机轮回查询各个USB端口,主机检测到D+与D-之间有电压差,就认为有新的设置接入。主机等候100ms后宣布复位恳求。设备接到复位恳求后将发生一个外部中止信号。
—————————————枚举进程————————————————————
2)主机这时候仅仅知道有新的设备刺进了,可是不知道插进来个什么东西,所以就开端问询它是什么设备,怎样用,负荷才能怎样样。这个时侯就进入了枚举进程。由于刚刚刺进的设备没有分配地址,就用默许地址0,首要发送一个Get_deor(获取设备描绘符)指令包,设备接到包后就开端解析包(其实便是你在固件程序里判别处理),然后按固定格局回来自己设备的设备描绘符,这一步主要是主机知道你的USB设备的根底特点,比如支撑的传输数据长度,电流负荷多少,支撑那个USB版别,以及今后便利电脑找驱动的PID,VID。
3)这时候主机知道你(你做的设备,简称你吧)的数据长度还有电流巨细后,下一步便是给你分配一个归于你的地址。
4)给你一个地址后就开端问询你的具体装备。首要发送一个试探性的设备装备恳求Get_configuration(要求固定回来9个设备装备字),你接到后就开端发送9字节的设备装备字,其间包含你的装备字的总长度,这样主机就知道你的装备到底有多长,然后再发一次设备装备恳求,这时你就开端上传一切的装备字。这个时侯主机就现已很理解你的作业方式就各种特性,然后就能够正常作业了
5)假如你在前面的某些装备(今后章节具体阐明)要求要阐明自己的姓名什么的,这儿还要上传字符串描绘符。
6)假如是鼠标或许键盘还要上传陈述描绘符
—————————————正常数据阶段——————————————————
7)这个时侯你现已被主机正式承受而且注册了,你能够经过自己写测驱动或通用驱动与电脑进行通讯了。
以上是简略的描绘,具体的后边章节再做介绍,学习一个东西关键是首要要知道这个东西是什么,简略的作业原理。关于USB的作业我这儿做个比如,
主机比如一个公司,你便是USB设 备,要进入公司首要要面试(枚举),你到了面试现场(第一次刺进设备),面试官首要了解到你的表面,性别现已你要应聘的岗位(设备描绘符),然后给你一个 号,今后就开端按号叫人,当你被叫到就开端问你的专业知识,性情等(装备描绘符),假如你比较适宜(经过了枚举)你就会录取了,而且注册一个你的信息到公 司(驱动装置,而且写入注册表)。等你下次来公司,只要把工号(PID,VID)报上,就知道是你来了