usb 驱动学习笔记

基本概念

配置(configuration)&设置(setting)

配置代表USB 的一种功能
设置 是具体属性或参数的设置(如音量)。
一个设备可能有多种配置,如一个手机既可以做u盘,也可以摄像;配置代表一种功能。一种配置可能使用多种接口,接口可以有多种设置。
更准确的说是设备可以有多个配置,配置里可以包含一个或更多的接口,而接口通常又具有一个或更多的设置

四种 usb 描述符

设备描述符,配置描述符,接口描述符和端点描述符

data toggle

data 0 data1 交叉传输
struct usb_device 中的 toggle[2]
每一位表示的就是每个端点当前发送或接收的数据包是 DATA0 还是DATA1

usb core

设备的生命线

HUB 检测设备连接–usb_alloc_dev( attached)----usb_control_msg(Address)
–usb_internal_control_msg–usb_alloc_urb–usb_fill_control_urb–usb_start_wait_urb

urb

全称usb request block
usb 通信 基于 urb 流程
创建一个urb–指定它的目的地是设备上的哪个端点–提交给 usb core
–usb core 将它做些美化之后再移交给主机控制器的驱动程序HCD–
HCD 解析urb,并与 usb设备进行相应的交流–交流结束,HCD 再把这个 urb 的所有权移交回驱动程序

Q&A

1.usb 设备探测如何区分低速,高速及 host &device
a:usb有主从设备之分,主设备有:pc,现在市面上的那些插u-disk即可播放mp3的“mp3”之类的,usb信号是差分信号,信号线为D+, D-。 在usb host 端, D+,D-各接一个15kohm 的下拉电阻,而在usb device端,这时就有高速低速设备的区别了。usb1.0, 1.1,2.0协议中都有定义高低速设备以满足不同情况的需求,这些在硬件上的区别就是:高速设备:d+接一个1.5kohm的上拉电阻,d-不接;低速设备则相反。

这样当usb device插入到host中时,如果是高速设备,则d+被拉高,d-不变;低速设备则与之相反。这个上拉过程需要大概2.5us的时间,host这这个时间内便检测到了该信号,即可判断有device plug in,和该device的类型,然后开始通讯。

Usb充电器的D+,D-是短路的,因此可以通过检测数据线的连接方式来判断是usb充电还是usb传数据。

USB OTG(on the go)就是既可以做host又可以做client,我们一般是作为client接受pc传输数据,作为host时可以接打印机直接把手机中的照片打印出来。判别是host还是client是靠USB_ID这根pin,当作为client时,USB_ID基本是悬空的(内部有上拉),如果侦测到 USB_ID被拉低,就被认为是作为host,向外输出,所以需要外部client设备把USB_ID拉低。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值