usb

硬件部分:

usb 信号:

VBUS, GND, D+,D-,ID共5根线。

usb分为插座和插头两种。

插座(A Female)

图1 A型插座

图2 A型插头

图3 mini 插头

图4 micro 插头

 

standard:标准

mini:

micro:最扁的那种

mini插头转A型插座(AF)转接线:ID引脚是接地的

mini插头转A型插头(AM)转接线:ID引脚是悬空的

 在otg-1.3版本协议中第5.1.3节描述了VBUS的上升和下降时间:

 When the A-device provides power, the rise time on VBUS from 0 V to VA_VBUS_VLD shall be less than
TA_VBUS_RISE max when driving a constant current load equal to the rating of the device’s VBUS supply and
an external load capacitance of 10 µF (this 10 µF is in addition to any VBUS decoupling capacitance on the
A-device).  If VBUS does not reach this voltage within TA_VBUS_RISE max from the time that VBUS is turned
on, this is an indication that the B-device is drawing more current that the A-device is capable of providing
and an over-current condition exists.  In such a case, the A-device shall turn off VBUS and terminate the
session.  The A-device shall also indicate to the user that the B-device is not supported.
Note: VBUS rise time is not specified in USB 2.0 and standard USB hosts may have rise times longer
than TA_VBUS_RISE max. A compliant peripheral shall be able to operate with the longer VBUS rise times
allowed by the USB 2.0 specification [USB2.0].

[当A device提供电源时,当驱动一个恒流的负载,该负载等效于一个外部的10uF负载电容,VBUS从0V到VA_VBUS_VLD电压的上升时间应该要小于TA_VBUS_RISE最大值,

如果从VBUS打开时在最大的TA_VBUS_RISE时间内没有上升到VA_VBUS_VLD这个电压,这表明B device正在吸收比A device能提供的电流要大,

这将导致过流条件的产生。在这种情况,A device将关闭VBUS并且终止会话。A device同时也要通知用户不支持B device。]
 

usb phy的典型电路图

USB phy会根据ID的接地(host)和ID悬空(device)控制USB_VBUS的供电,当没有插A线时,ID悬空,CPEN为0V,USB_VBUS(USB_5.0V)没有输出为0V,这和接B线连PC的情况一致,需要PC的USB口提供VBUS;当插上A线是,ID脚接地,CPEN输出高电平3.3V,USB_VBUS电压为5V,向连接到A另外一端的USB device提供VBUS。USB PHY在系统上电会根据ID的配置,内部的otg控制逻辑会根据VBUS充电时间和幅值符合otg规范才能正常输出CPEN控制信号,才能成功输出USB_VBUS电平。否则usb otg驱动中会提示device not supported , over current condition detect.

 -------------------------------------------------------------------------------------------------------------------------------------------------

高速和低速的识别:

---------------------------------------------------------------------------------------------------------------------------------------------------

软件部分(linux部分):

 内核usb_device 对应的驱动usb_device_driver;而usb_interface对应于usb_driver;即usb_driver是功能驱动,实现设备具体的功能的。

usb_hcd代表一个usb host,也代表一条usb总线,由于root hub密切和usb host绑定,所以在add hcd时,同时也分配roothub,root hub用usb_device来抽象,然后register这个root hub,同时它也是这条总线上的第0个设备,注册过程中会枚举这个root hub,一般嵌入式的root hub是通过软件模拟的,实际的usb控制器提供很少的寄存器控制root hub(一般只有电源和port相关的寄存器控制)。

然后是插在在root hub上的另外的hub或设备,他们就是具体的usb_interface。

 

usb_gadget:

 

 

---------------------------------------------

usb设备枚举过程:

连接状态--> 一般是指设备查到usb口上了

上电-状态>host 检测到设备插入,然后host打开电源VBUS(自供电设备可以不用),设备进入默认状态,不会响应任何总线处理,必须从总线上接收到reset之后才能才能能使使用默认地址访问设备。设备对电源支持能力是在configuration descriptor中描述的。所以在选择和设置配置描述符时,要特别关注该配置下电源是否符合总线目前提供的能力。在复位过程中,根据设备在D+和D-上的上拉电阻决定是否是低速(D-)或全速设备(D+)。复位完成后,设备可以响应usb总线操作了。高速设备必须以全速复位,以及响应和设置描述符请求。默认状态用端点0及0地址访问设备的,直到使用set address请求成功后设备进入地址状态。

(复位是通过(root) hub的Set_Port_Feature请求来是实现的,这个接口很重要;

    hub一般有中断端点来上报端口状态,然后host会发送Get_Port_Status请求获取和确认hub端口的状态,比如那些端口有断开和连接时间。

地址状态->必须用新的地址重新再次获取设备描述符,可以很好验证设备在地址态可以正常操作。

配置状态->host以新的地址访问设备,获取设备的配置描述符,接口描述符,端点描述符,字符串描述符等。

 

-------------------------------------------------------------------------

配置描述符的理解:

由于一个设备要使用不同使用场合,各场合端点的设置和使用不一定相同,端点的设置可以称作为接口interface descriptor,所以需要用不同接口描述,通过打开不同接口,可以按照不同的方式使用端点,可以看成是和usb device的如何使用各端点的握手协议。

OV511+的端点0是控制端点,用来设置参数以及起停设备;端点1是实时传输端点,用来传输视频。端点1有8套不同的设置,主要区别就在于一次传输的数据帧的大小,所以在USBDeviceAttach的时候,要记录这些设置到驱动程序中,后面才能够选用。

--------------------------------------------------------------------------

端点类型:控制端点,批量端点,中断端点,同步端点

控制端点,顾名思义,用来控制usb设备使用的

批量端点,用来传输大量数据使用

中断端点,是一种伪中断的概念,因为从硬件角度来看,Host和device只有D+和D-两根线通信,没有任何中断线连接,所以是一种按固定interval time“轮询”,该端点描述符中会指定查询频率,在1~255ms之间。

同步端点,不可靠传输。

 待续。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值