1 USB通信都是基于中断完成的,主要使用两个中断:复位中断、数据传输中断。 1.1 复位中断 对于复位中断来讲,设备插入主机后,并设置连接,主机识别设备连接后,会复位设备。复位后使用0默认地址,对设备进行枚举,枚举过程其实就是获取设备的各种描述符。 当设备被主机复位后,设备会对端点0的相关寄存器进行初始化。初始化完成后,设备就可以通过端点0进行控制传输,也就可以通过控制传输来进行传输各种描述符数据和设置设备的通信地址。 1.2 数据传输中断 对于设备的数据传输中断,基本上分为两种:in中断和out中断,在out中断中又可以通过寄存器来判断是否有setup被置位。其实in中断就可以对应usb中的in事务,out中断可以对应out事务,out中断中如果setup被置位,就是setup事务。在中断里,可以直接读取各个事务中的数据。当有一笔事务到来时,设备硬件自动识别“令牌包”和自动发送“状态包”,所以可以直接在中断中读取“数据包”了。具体数据是in、out、setup中的哪一个,设备会根据“令牌包”进行识别,来产生in中断或是out中断和setup标志。
|