对 USB 接口设备进行操作的装置及方法 【技术领域】
本发明涉及对 USB 接口设备进行操作的装置及方法, 属于计算机设备领域。背景技术 随着技术和市场的发展, USB 接口已经成为计算机的必备接口, 使用 USB 接口的电 脑外设产品越来越多。USB 接口包含四根线 : 电源线 (VCC)、 地线 (GND)、 信号线 (D-)、 信号 线 (D+)。
这些使用 USB 接口的产品, 在生产和出厂检测时, 需要接到主机的 USB 接口, 使用 主机应用软件进行产品检测, 常见的检测操作有 : 更新设备的固件程序、 初始化出厂序列 号、 初始化厂商产品标识、 格式化 USB 存储设备等等。这些检测操作都需要把产品的 USB 接头连接到计算机的 USB 端口, 而且一般还需要对一个设备反复插拔多次才能完成检测操 作。因为计算机自带的 USB 端口数量有限, 而且不能用计算机程序实现设备重新上电, 因此 当大批量生产 USB 接口的产品的时候, 需要较多计算机和操作人员, 浪费人力物力。
在生产过程中, 可通过普通 USB HUB 把计算机有限的 USB 端口扩展为若干 USB 端 口, 这可以解决计算机自带的 USB 端口数量不足问题, 但是应用程序不能控制普通 USB HUB 设备 USB 端口的电源, 因此需要操作人员不停的手工插拔 USB 设备以实现 USB 设备重新上 电。频繁的手工插拔容易使人疲劳, 而且通用 USB HUB 的 USB 端口没有可编程的指示灯, 因 此不但排除发生故障的 USB 设备很困难, 而且太多的手工操作导致了生产效率严重降低。
现有技术解决不了的问题 :
一: 普通 USB HUB 的 USB 端口没有软件可控的指示灯, 当插在某个端口的 USB 设备 存在故障, 主机软件不能通过指示灯提示操作人员进行处理。
二: 普通 USB HUB 不能控制 USB 端口的电源, 无法软件实现 USB 设备的重新上电操 作, 不能将操作人员手工插拔设备的次数降至最低。
发明内容 本发明提供了对 USB 接口设备进行操作的装置及方法, 解决了上述现有技术中存 在的问题。
本发明采用的技术方案是在现有的 USB HUB 装置中, 增加控制模块、 多个端口控制 单元和多个端口单元指示灯, 主机中的应用软件通过接口函数和控制模块通讯, 可控制 USB 端口的电源和指示灯。
本发明的一方面, 提供对 USB 接口设备进行操作的装置。 该装置包括主机、 USB HUB 模块、 控制模块、 电源模块、 扩展端口控制模块、 扩展端口模块。
扩展端口模块包含多个端口单元, 用于连接 USB 设备 ; 每个端口单元都提供了 USB 连接所需的电源线、 地线、 USB 信号线 D- 和 D+ ; 每个端口单元还提供了指示灯。
扩展端口控制模块包含多个端口控制单元 ;
端口控制单元包含主机软件可控的开关, 通过该开关, 主机软件可提供或者切断
端口单元的电力, 当端口单元的电源和地短路, 所述开关自动切断电源输出, 当短路故障解 除后, 自动恢复电源输出。
端口控制单元包含主机软件可控的指示灯输出线路, 通过该线路, 主机软件可点 亮或熄灭端口单元的指示灯。
端口控制单元包含检测端口单元的电源电压的线路 ; 该电压检测线路用于向控制 模块汇报端口单元电源电压的两种状态 : 正常状态和短路状态。
电源模块, 用于为 USB HUB 模块、 控制模块、 以及端口控制单元提供电力。
控制模块, 用于接收并解释主机指令, 并通过端口控制单元执行命令 ;
USB HUB 模块, 用于将连接主机的 USB 通讯线路扩展为多路 USB 通讯线路供其它模 块使用。
主机通过发送命令, 以打开或关闭端口单元电源、 点亮或熄灭端口单元的指示灯、 获取端口单元的电源状态 ; 通过系统函数调用获取端口单元连接的 USB 设备的枚举状态、 对端口单元连接的 USB 设备进行业务操作。
端口单元的电源线连接到端口控制单元的主机可控的电源输出、 地线连接所述装 置的公共地线、 USB 信号线 D- 和 D+ 连接 USB HUB 模块下游端口之一的 USB 信号线 D- 和 D+、 指示灯连接到端口控制单元的主机可控的指示灯输出。
端口控制单元通过其电源控制线、 指示灯控制线、 电源状态线连接到控制模块。
USB HUB 模块通过 USB 通讯线路连接主机的 USB 接口, 并扩展出多个 USB 下游端 口, 供其他模块使用。
本发明的另一方面, 提供一种对 USB 接口设备进行操作的方法。其主要步骤如下 :
步骤 A : 主机向控制模块发送命令, 关闭全部端口单元的电源 ;
步骤 B : 主机向控制模块发送命令, 关闭全部端口单元的指示灯 ;
步骤 C : 操作人员连接 USB 设备到该装置 ;
步骤 D : 主机向控制模块发送命令, 打开全部端口单元的电源 ;
步骤 E : 主机向控制模块发送命令, 获取全部端口单元的电源状态, 如果发现部分 端口单元电源状态异常, 则采取措施进行处理 ;
步骤 F : 主机通过操作系统功能调用, 获取全部端口单元连接的 USB 设备的枚举状 态, 如果发现部分 USB 设备枚举异常, 则采取措施进行处理 ;
步骤 G : 主机对端口单元连接的全部 USB 设备进行业务操作 ;
步骤 H : 操作人员移除 USB 设备。
所述步骤 E 包含如下步骤 :
步骤 E1 : 主机向控制模块发送命令, 获取全部端口单元的电源状态 ; 端口单元的 电源有两种状态 : 正常状态和短路状态 ;
步骤 E2 : 主机向控制模块发送命令, 通过电源短路的端口单元的指示灯, 提示操 作人员处理 ;
步骤 E3 : 重复执行步骤 E, 直到所有端口单元的电源状态为正常。
所述步骤 F 包含如下步骤 :
步骤 F1 : 主机通过操作系统功能调用, 获取全部端口单元连接的 USB 设备的枚举 状态 ; USB 设备的枚举状态有两种 : 成功和失败 ;步骤 F2 : 主机向控制模块发送命令, 通过枚举失败的端口单元的指示灯, 提示操 作人员处理 ;
步骤 F3 : 重复执行步骤 F, 直到所有端口单元 USB 设备枚举成功。
所述步骤 G 包含如下步骤 :
步骤 G1 : 主机向全部端口单元的 USB 设备发送业务操作命令 ;
步骤 G2 : 根据具体业务操作, 主机通过向控制模块发送命令, 先关闭全部端口单 元的电源, 然后再打开全部端口单元的电源, 实现 USB 设备的重新上电枚举 ;
步骤 G3 : 重复执行步骤 G, 直到所有 USB 设备业务操作结束。
有益效果 :
一: 主机应用软件能同时操作多个 USB 设备, 可提高生产效率。
二: 主机应用软件能通过关闭再打开端口单元的电源实现 USB 设备的重新上电操 作, 能将操作人员手工插拔设备的次数降至最低。
三: 当 USB 设备存在故障, 主机应用软件可通过该故障 USB 设备所连接的端口单元 的指示灯提示操作人员排除故障。 附图说明 图 1 是本发明提供的对 USB 接口设备进行操作的装置的结构框图, 其控制模块使 用 USB 通讯线路跟主机通讯, 并且该 USB 通讯线路直接连接到主机的 USB 接口。
图 2 是本发明提供的对 USB 接口设备进行操作的装置的结构框图, 其控制模块使 用 USB 通讯线路跟主机通讯, 该 USB 通讯线路连接到 USB HUB 模块, 通过 USB HUB 模块跟主 机通讯。
图 3 是本发明提供的对 USB 接口设备进行操作的装置的结构框图, 其控制模块使 用串行接口通讯线路跟主机通讯, 并且该串行接口通讯线路直接连接到主机的串行接口。
图 4 是本发明提供的对 USB 接口设备进行操作的方法的工作流程图。
图 5 是本发明提供的对 USB 接口设备进行操作的对 USB 设备进行业务操作的方法 的流程图, 该流程图是图 4 中步骤 405 的进一步细分。
图 6 是本发明提供的对 USB 接口设备进行操作的对 USB 设备进行短路检查和枚举 检查的方法的流程图, 该流程图是图 4 中步骤 404 的进一步细分。
具体实施方式
为使本发明的目的、 技术方案和优点更加清楚, 现结合附图, 对本发明的实施方式 做进一步的详细描述, 但并不作为对本发明的限定。
本发明提供的装置包含软件和硬件两部分, 软件是指运行在主机之上的应用软 件, 应用软件可通过系统函数及相应协议和控制模块通讯。
控制模块可解释执行主机的下述命令 :
1: 打开单个多个或全部端口单元的电源。
2: 关闭单个多个或全部端口单元的电源。
3: 打开单个多个或全部端口单元的指示灯。
4: 关闭单个多个或全部端口单元的指示灯。5: 获取全部端口单元的电压状态 ( 正常或者短路 )。
本发明提出的装置中, 每个端口单元都有一个唯一编号。控制模块根据主机命令 指定的端口单元, 可以得到端口单元的唯一编号, 根据唯一编号可获得指定的端口控制单 元所使用的电源控制线、 状态线和指示灯控制线。 控制模块通过电源控制线的高低电平, 可 控制端口控制单元内部的电源开关, 实现打开或关闭端口单元的电源。控制模块通过指示 灯控制线的高低电平, 可控制端口控制单元内部的指示灯开关, 实现点亮或熄灭端口单元 的指示灯。控制模块通过电源状态线高低电平, 可获得端口单元的电压状态。
当主机软件发送命令给控制模块、 打开了单个多个或全部端口单元的电源, 这些 端口单元所连接的 USB 设备上电复位, 开始正常工作, 通过 USB HUB 模块扩展的 USB 通讯线 路响应主机的 USB 枚举命令。从实现方法中可以看到, 本发明提出的装置, 内置 USB HUB 模 块, 因此可以同时操作多个连接的 USB 设备, 具体可由应用软件选择是操作一个、 多个、 还 是全部 USB 设备。
实施例 1, 如图 1 所示 ; 其控制模块 103 使用 USB 通讯线路跟主机通讯, 并且该 USB 通讯线路直接连接到主机的 USB 接口。
实施例 2, 如图 2 所示 ; 其控制模块 103 使用 USB 通讯线路跟主机通讯, 并且该 USB 通讯线路连接到 USB HUB 模块、 通过 USB HUB 模块跟主机通信。 实施例 3, 如图 3 所示 ; 其控制模块 103 使用串行接口通讯线路跟主机通讯, 并且 其串行接口通讯线路直接连接到主机的串行接口。
控制模块 103 连接到主机的方式、 实施例 1、 2、 3、 各不相同 ; 除此之外, 实施例 1、 2、 3 的模块之间连接关系都相同, 可以一并进行叙述。
如图 1-3 所示, 本发明提出的装置包含运行应用软件的主机 101, USBHUB 模块 102, 控制模块 103, 电源模块 104, 端口控制模块 105, 端口模块 106。
主机 101, 运行能对 USB 设备进行业务操作的应用软件 ; 在实施例 1 中, 主机通过 两条 USB 通讯线路分别连接到控制模块 103 和 USB HUB 模块 102 ; 在实施例 2 中, 主机通过 一条 USB 通讯线路连接到 USB HUB 模块 102 ; 在实施例 3 中, 主机通过一条 USB 通讯线路连 接到 USB HUB 模块 102 并且使用串行接口通讯线路连接到控制模块 103。
USB HUB 模块 102, 主要器件包含 5 个 USB HUB 芯片 CY7C65630, 芯片 CY7C65630 是 一个四端口的 USB HUB 芯片, 支持一个上游接口, 四个下游接口 ; 在实施例 1-3 中, 第一个 CY7C65630 芯片的上游 USB 接口接到主机 USB 接口, 另外四个 CY7C65630 芯片的上游 USB 接口接到第一个 CY7C65630 芯片的下游 USB 接口, 因此, USB HUB 模块 102 整体上具有一个 上游 USB 端口, 十六个下游 USB 端口。所述十六个下游端口的 USB 通讯线路, 在实施例 1 和 3 中, 直接连接到十六个端口单元, 在实施例 2 中, 其中十五条直接连接到十五个端口单元, 另外一条直接连接到控制模块 102。
控 制 模 块 103, 主 要 器 件 包 含 ARM 单 片 机 ATSAM3U4EA, 该单片机具有一个 USB 高 速 设 备 接 口, 四 个 串 行 接 口, 和 九 十 六 根 GPIO(PIOA0-PIOA31, PIOB0-PIOB31, PIOC0-PIOC31) ;
在实施例 1 中, 该单片机使用 USB 通讯线路跟主机通讯, 使用 PIOA0-PIOA15 作为 电源控制线 1- 电源控制线 16, 使用 PIOB0-PIOB15 作为指示灯控制线 1- 指示灯控制线 16, 使用 PIOC0-PIOC15 作为电源状态线 1- 电源状态线 16 ;
在实施例 2 中, 该单片机使用 USB 通讯线路跟主机通讯, 使用 PIOA0-PIOA14 作为 电源控制线 1- 电源控制线 15, 使用 PIOB0-PIOB14 作为指示灯控制线 1- 指示灯控制线 15, 使用 PIOC0-PIOC14 作为电源状态线 1- 电源状态线 15 ;
在实施例 3 中, 该单片机使用串行接口通讯线路跟主机通讯, 使用 PIOA0-PIOA15 作为电源控制线 1- 电源控制线 16, 使用 PIOB0-PIOB15 作为指示灯控制线 1- 指示灯控制线 16, 使用 PIOC0-PIOC15 作为电源状态线 1- 电源状态线 16 ;
电源模块 104, 电源电压 5 伏特, 电流 10 安培 ; 在实施例 1-3 中, 16 个 USB 设备所 需的最大电流是 8 安培, 剩余电力可供该装置的其他模块使用。
端口控制模块 105, 在实施例 1 和 3 中, 包含 16 个端口控制单元, 在实施例 2 中, 包 含 15 个端口控制单元 ; 端口控制单元的主要器件包含一个负载开关 FPF2163 和一个三极管 SS9013。
负载开关 FPF2163 的电源输入连接电源模块 104 的电源输出、 负载开关 FPF2163 的电源输出连接到该端口控制单元所控制的端口单元的电源端子、 负载开关 FPF2163 的开 关控制管脚连接控制模块 103 的电源控制线。当电源控制线输出电平为高电平, 负载开关 FPF2163 导通, 端口单元的电源端子可得到符合 USB 规范的电源 ; 当电源控制线输出电平为 低电平, 负载开关 FPF2163 截止, 端口单元的电源端子失去电力供应, 电压为 0 伏特 ; 三极管 SS9013 的基极通过电阻连接控制模块 103 的指示灯控制线、 发射极连接 地线、 集电极连接端口单元的指示灯的负极。当指示灯控制线输出电平为高电平, 三极管 SS9013 导通, 点亮端口单元的指示灯 ; 当指示灯控制线输出电平为低电平, 三极管 SS9013 截止, 熄灭端口单元的指示灯 ;
端口模块 106, 在实施例 1 和 3 中, 包含 16 个端口单元, 在实施例 2 中, 包含 15 个 端口单元 ; 端口单元主要器件包含一个标准 A 型 USB 插座和一个指示灯 ;
该 A 型 USB 插座的电源端子连接到端口控制单元中的负载开关 FPF2163 的电源输 出管脚、 USB 信号 D- 和 D+ 连接到 USB HUB 模块的一个下游端口的 USB 信号 D- 和 D+、 地线 连接到各模块的公共地线。
指示灯的正极通过限流电阻接到电源模块 104 的 5 伏特电源输出、 负极接到端口 控制单元中的三极管 SS9013 的集电极。
图 4 是本发明提供的对 USB 接口设备进行操作的装置的工作流程图。
步骤 401, 操作开始, 转到步骤 402 ;
步骤 402, 主机软件关闭所有端口单元的电源, 然后转到步骤 403 ;
步骤 403, 操作人员连接需要进行业务操作的 USB 设备到本发明提供的装置的端 口单元, 然后转到步骤 404 ;
步骤 404 : 主机软件打开所有端口单元的电源, 连接的 USB 设备上电复位, 开始应 答主机的命令, 实现 USB 设备枚举, 然后转到步骤 405 ;
步骤 405 : 主机软件同时对所有端口单元连接的 USB 设备进行业务操作, 例如格式 化U盘 ; 当 USB 设备出现故障, 主机软件通过其所连接的端口单元的指示灯提示操作人员处 理; 所有设备操作完毕后转到步骤 406 ;
步骤 406 : 主机软件关闭所有端口单元的电源, 提示操作人员移除全部 USB 设备, 然后转到步骤 407 ;
步骤 407 : 操作人员手工将所有 USB 设备从该装置移除, 然后转到步骤 408 ;
步骤 408 : 如果还有 USB 设备需要业务操作, 则转到步骤 403, 否则转到步骤 409 ;
步骤 409 : 所有 USB 设备的业务操作结束。
图 5 是本发明提供的对 USB 接口设备进行操作的装置对 USB 设备进行业务操作的 方法的流程图, 该流程图是图 4 中步骤 405( 对连接的 USB 设备进行业务操作 ) 的进一步细 分。
步骤 501 : 主机软件把每个 USB 设备的状态标记为正常, 错误计数器清除为零, 然 后转到步骤 502 ;
步骤 502 : 主机软件对每个状态标记正常的 USB 设备进行业务操作, 如果操作某个 USB 设备出现异常, 则把该 USB 设备的状态标记为异常, 并且错误计数器加 1, 然后转到步骤 503 ;
步骤 503 : 主机软件关闭所有端口单元的电源, 延时适当时间, 然后打开状态标记 正常的 USB 设备对应的端口单元的电源, 然后转到步骤 504 ;
步骤 504 : 主机软件同时检查所有状态标记正常的 USB 设备, 如果检查发现某个 USB 设备存在问题, 则把该 USB 设备的状态标记为异常, 并且错误计数器加 1 ; 然后转到步骤 505 ;
步骤 505 : 如果还有更进一步的业务操作, 则返回步骤 502, 否则进入过程 506 ;
步骤 506 : 主机软件关闭所有端口单元的电源, 然后把所有状态标记正常的 USB 设 备的状态改变为业务操作已完成, 然后转到步骤 507 ;
步骤 507 : 如果全部 USB 设备的状态都是业务操作已完成, 则进入步骤 510, 否则进 入步骤 508 ;
步骤 508 : 主机软件通过状态标记异常的 USB 设备对应的端口单元的指示灯、 提示 操作人员这些 USB 设备出现异常, 操作人员可手工移除全部异常 USB 设备, 连接还未进行业 务操作的 USB 设备到这些端口单元, 然后转到步骤 509 ;
步骤 509 : 主机软件打开所有状态标记异常的 USB 设备对应的端口单元的电源, 然 后把所有状态标记异常的 USB 设备的状态改变为正常, 并返回步骤 502 ;
步骤 510 : 如果错误计数器不等于零, 进入步骤 511, 否则步骤 514 ;
当错误计数器等于零, 表示该装置上不但所有 USB 的业务操作全部完成, 而且在 业务操作操作过程中没有一次错误发生, 这期间, 用户没有手工插拔过任何设备, 是一种操 作人员最想要的结果。
当错误计数器不等于零, 表示该装置上尽管所有 USB 的业务操作全部完成, 但是 在业务操作操作过程中发生过错误, 错误次数就是错误计数器的值 ; 因为发生过错误而且 已经解决了错误, 所以这期间, 用户手工插拔过 USB 设备, 而且还存在这样一种可能 : 操作 人员移除发生故障的 USB 设备的同时, 把故障 USB 设备旁边的正常的 USB 设备也一并移除, 并且替换上了还未操作过的新设备, 也就是说 : 解决问题的同时引入了新问题。
从步骤 510 转到步骤 511、 再执行步骤 512、 513 的重要目的, 就是检测操作人员在 排除故障 USB 设备时候, 是否引入了新问题。 如果引入新问题, 步骤 513 将返回到步骤 508 ; 否则步骤 513 将转到步骤 514, USB 设备操作顺利结束。
步骤 511 : 主机软件打开所有端口单元的电源, 错误计数器清除为零, 然后转到步骤 512 ; 步骤 512 : 主机软件同时检查所有 USB 设备, 如果检查某个 USB 设备发现异常, 则 把该 USB 设备的状态标记为异常, 错误计数器加 1, 然后转到步骤 513 ;
步骤 513 : 如果错误计数器等于零, 进入步骤 514, 否则步骤 508 ;
步骤 514 : 所有端口单元连接的 USB 设备业务操作成功, 可以移除所有设备。
图 6 是本发明提供的对 USB 接口设备进行操作的装置对 USB 设备进行短路检查和 枚举检查的方法的流程图, 该流程图是图 4 中步骤 404 的进一步细分。
步骤 601, 操作开始, 转到步骤 602 ;
步骤 602, 主机软件获取所有端口单元的电源状态, 然后转到步骤 603 ;
步骤 603, 判断端口单元的电源状态, 如果有短路设备则转到步骤 604, 否则转到 步骤 605 ;
步骤 604 : 主机软件通过端口单元的指示灯, 提示操作人员移除故障 USB 设备并接 入新设备, 然后返回步骤 602 ;
步骤 605, 主机软件获取所有端口单元 USB 设备的枚举状态, 然后转到步骤 606 ;
步骤 606, 判断 USB 设备枚举状态, 如果有枚举失败设备则转到步骤 607, 否则转到 步骤 608 ;
步骤 607 : 主机软件通过端口单元的指示灯, 提示操作人员移除故障 USB 设备并接 入新设备, 然后返回步骤 602 ;
步骤 608 : USB 设备的短路检查和枚举检查结束
以上结合图 1、 2、 3、 4、 5、 6, 对本发明提出的对 USB 接口设备进行操作的装置及方 法进行了详细介绍, 本文中应用了具体的个例对本发明的原理方法和实施方式进行了阐 述, 这些阐述仅用于表达该发明的原理和方法, 并不用来限制该发明 ; 同时, 对于本领域的 技术人员, 根据本发明的原理, 对上述实施例提出的修改、 等同替换、 改进等, 均应包含在本 发明的保护范围之内。