usb接口中既没有握手信号,也没有时钟信号,它是怎样进行通信的呢?
我们已经知道,传统的串行口、并行口通过握手信号进行通信,这些接口通常通过握手信号来联络主机和外设。我们也已经知道,通信双方可以同步或异步两种方式进行通信,两者最大的区别是,同步通信接口中有时钟信号线。
usb接口应用很广。可是,usb接口中既没有握手信号,也没有时钟信号,它是怎样在主机与外设之间建立联系的呢?又是如何交换数据的呢?为了深入理解usb接口的通信过程,先介绍usb的硬件和软件结构。
从物理结构上,usb系统是一个星形结构。usb系统包含三类硬件设备: usb主机(usb host)、 usb设备(usb device)和usb集线器(usb hub)。usb总线上的物理连接是一个分层的星形拓扑,处于每个星形拓扑中央的是hub集线器,在主机与hub之间,hub与hub之间,hub与设备之间都是点对点的连接。
图5 usb拓扑结构
usb host对usb系统进行管理、每毫秒产生一帧数据、发送配置请求对usb设备进行配置、管理和恢复总线上的错误。 usb hub用于设备扩展连接,所有usb device都连接在usb hub的端口上。usb device接收usb总线上的所有数据包,通过数据包的地址域来判断是不是发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过响应usb host的数据包与usb host进行数据传输。
从逻辑结构上看,每个usb逻辑设备都直接与usb host进行数据传输。与传统接口以硬件手段实现握手的方法不同,usb接口使用“软握手”方法。
usb 的软握手机制是透过三个层次的驱动程序实现的,在这中间起到关键作用的是设备驱动程序,该程序在主机与设备之间建立起至少一个管道。管道有两种类型:流管道和消息管道。其中有一个最重要的消息管道是“缺省控制管道”,这个管道在设备一加电的时候就存在了,它提供设备的配置和状态等信息。主机与设备之间的联络就是通过消息管道实现的。
图6 usb软件结构
协议栈驱动程序的主要作用是将设备与相应的设备驱动程序连接起来。因为usb支持的设备很多,而每个具体的设备都有自己对应的设备驱动程序。对于某一具体设备来说,使用哪个驱动来管理,就要由协议栈驱动程序通过读取设备描述符进行挑选。选择好驱动程序之后,协议栈驱动程序还要给usb设备分配地址。
管道建立起来之后,数据的传输控制则由usb接口驱动程序负责完成了。在这里,主机占有绝对主导权,设备只能是“听命令行事”。设备发生事件时通过消息管道报告给主机,主机伺机向设备发送命令,开通流管道,发送或接收数据包。主机与设备之间以数据数据包的形式进行传送,显然这与网络上数据传输的方式相同,是一种异步数据传输模式。
来源:阿凡的博客,ednc blog
东方集成荣获“2010年中关村中小创新企业—十佳年度企业”
中国移动针对5G三大难题开出三副药方
学习嵌入式系统C语言编程的关键点
NI收购SET GmbH,加速功率半导体和航空航天测试系统的开发
哪些因素对会影响到企业制定自己的融合CDN战略
USB接口是如何进行通信的?
太火爆!iQOO 7京东商城销量榜位列第一
常规元件封裝及基本脚位
预警地震发生和检测地震强度的传感器
MTM400 MPEG传送流监视器上新增加高性能的RF测量接
是德科技中标中国移动研究院移动物联网测试系统
Qualcomm年度十大SDK盘点:Hexagon SDK
未来是智能机器人取代智能音箱 还是两者共同发展暂时未可知
提供真正图形性能的移动平台GPU
VR交互技术浅析 为何头部追踪加体感才是王道?
DARPA耗资20亿美元的AI Next计划,究竟怎么样了?
工业机器人在工业生产中的实际用法(动图)
Redmi首款曲面屏体验小金刚正式发布 由TCL华星倾力打造
12位65Msps、单通道ADC GAD2228兼容LTC2228用于光谱分析
如何为支持UWB的设备获得FiRa认证