OVER CURRENT PROTECT ON USB PORT

简介:

根据USB协议2.0的7.2.1.2.1 Over-Curent Protection和11.12.5 Over-current Reporting and Recovery规定,USB HOST和SELF-POWERED HUB必须执行过电流保护.保护包括两方面,一是HUB必须有办法检测过电流的情况并向USB软件报告,二是过电流限制机制不需要经过用户的机械干涉就可以重新复位.也就是11.12.5描述的Reporting and Recovery. 目前WINTV和手机部3108的设计里都没有OC保护,因此如果发生意外, 用户的USB设备马上报销,因为协议里没有说USB DEVICE必须对所接受的电流进行保护.

电路保护元器件主要有物理型的和电子型的两种.

1.物理型:自恢复保险丝(协议里提到的聚合PTC),热敏电阻,聚合开关,POLYSWITCH等,特点为
  (1)可恢复性,过电流之后又恢复到常态,不必更换;
  (2)阻抗高,一般说来,这种自恢复保险开关在电路正常状态下,其阻抗比相同的金属型熔断器高,这样,就增加了电子产品的电能消耗,对于以电池为电源的电子产品来说,这种情况是不可忽视的,在某些电路应用中,由于其电阻大而产生热噪声也是不能使用的原因;
  (3)响应速度慢,如PolySwitch响应时间是1s,与金属型熔断器、电子型限流开关相比较,这种自恢复保险开关的响应速度慢,因而它不适用于保护那些对过电流特别敏感的电路;
  (4)存在老化现象,这种有机聚合物自恢复保险开关是靠自己随温度变化的伸缩而实现过电流保护作用的,因而随着时间的推移,其特性会发生一些变化,在高可靠产品中使用这种自恢复保险开关时,要考虑这一特性;
  (5)体积较大,与金属型熔断器、电子型限流开关相比较,其承受的功率密度较低,因而体积较大。

上面这几个特点是网上COPY来的,我不太理解为什么USB协议里提到可以用聚合PTC和固态开关做电流限制.物理型只能做到OC时"消除或减小所有受影响的下行口电源",并无须用户机械干涉的RECOVRY,但并不能将OC情况报告给软件知晓.

2.电子型.就是用芯片啦,编程只要抓住几个IN/OUT PIN就可以,它内部是怎么消除过大电流,又怎么能够输出OC INDICATER我们就不用管了,省事.我在网上找了几款CURRENT LIMIT的芯片,有的其实功能也不算强.比如AAT4610(http://www.analogictech.com/products/digitalfiles/AAT4610.pdf),它的5PIN分别是INPUT / OUTPUT / ON / GND / SET, ON是芯片使能,SET接个电阻来控制限制的电流强度,其他就没了. 这仍然无法把OC情况报告给软件,废.

MAX1607(http://pdfserv.maxim-ic.com/en/ds/MAX1607.pdf)就符合要求了,8 PIN中的第5 PIN是OC OUTPUT, 这个可以连接到PXA27X CPU的USBHPWR脚上,一旦OC发生,OC OUTPUT置低, USBHPWR得知后, 会立刻做下面几件事:
1. 把该PORT断开连接,并通过USBHPEN脚停止对VBUS供电(需要硬件上实现)
2. set UHCRHPSx[POCIC] = 1
3. set UHCRHPSx[PPS] = 0
4. 前面2和3的操作会影响UHCINTS[RHSC]位,触发中断处理程序.

在程序里,usb\hcd\common\cdevice.cpp对GetPortStatus返回的OC情况进行处理.
if ( hubStatus.change.port.OverCurrentChange ) 
{
    if ( hubStatus.status.port.PortOverCurrent ) 
    {
        DetachDevice( port );
        SetOrClearFeature( port, USB_REQUEST_CLEAR_FEATURE, USB_HUB_FEATURE_PORT_POWER );
    } 
    else
    {
        hubStatus.change.port.ConnectStatusChange = 1;
    }
}

如果是短路(比如电缆或接口老化)原因造成的OVER CURRENT, 我们可以在DetachDevice后, 在UI上弹出个警告框提醒用户, 让用户操作来干涉并纠正; 如果是暂时的OC产生中断, 而当查询时 hubStatus.status.port.PortOverCurrent=0, 则属于自动恢复, 在协议规定的范围内.


本文转自Walzer博客园博客,原文链接:http://www.cnblogs.com/walzer/archive/2006/02/05/325585.html,如需转载请自行联系原作者

相关文章
|
存储 安全 信息无障碍
可信计算平台与安全芯片扫盲文
可信计算平台与安全芯片扫盲文
485 0
|
5月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
1462 1
|
Java API 调度
掌握Java线程状态:从NEW到TERMINATED
本文探讨了操作系统与Java中线程的状态及其转换。操作系统层面,线程状态包括初始、就绪、运行、阻塞和终止。Java线程状态则细分为NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,并详细介绍了各状态的特性和转换条件。此外,还列举了Java中常用的线程方法,如`wait()`、`notify()`、`start()`和`join()`等,帮助理解线程控制机制。
288 3
掌握Java线程状态:从NEW到TERMINATED
|
11月前
|
存储 前端开发 Java
springboot整合最新版minio和minio的安装(完整教程,新人必看)
本文详细介绍了如何使用Docker安装配置最新版的MinIO,并展示了如何在Spring Boot应用中整合MinIO以及如何通过前端进行文件上传测试。
1194 3
springboot整合最新版minio和minio的安装(完整教程,新人必看)
|
11月前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
207 0
|
Android开发
Flutter路由跳转参数处理小技巧
Flutter路由跳转参数处理小技巧
142 0
|
Unix Linux 索引
Linux 基础解惑:Linux 下文件描述符标志和文件描述符状态标志,文件状态标志,文件状态之间的区别
Linux 基础解惑:Linux 下文件描述符标志和文件描述符状态标志,文件状态标志,文件状态之间的区别
337 0
|
弹性计算 运维 监控
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
|
存储 监控 调度
usb摄像头驱动-core层USB集线器(Hub)驱动
usb摄像头驱动-core层USB集线器(Hub)驱动
404 0