本发明涉及电子技术领域,特别涉及一种调整工作模式的方法及USB控制器。
背景技术:
随着USB技术的发展,使得PC(Personal Computer,个人计算机)和周边设备能够通过简单的方式、适度的制造成本,将各种数据传输速度的设备连接在一起。并且,最常见的连接方式都是将设备通过USB(Universal Serial Bus,通用串行总线)连接到PC,并在PC的控制下进行数据交换。但这种方便的交换方式,一旦离开了PC,各设备间无法利用USB口进行操作。随着技术的发展,出现了支持otg(On-The-Go)功能的嵌入式设备,嵌入式设备在处于otg模式时,可以挂在USB口外设;同时,在处于主机模式时,又可以充当外设连接到PC上。
现有的USB标准中规定vbus开关及USB控制器的状态需要与USB外设的拔插事件相关联;例如,在外设发生拔插事件时,USB口的ID引脚会触发ID中断信号,在ID引脚的电平被拉低时USB控制器进入otg模式;因此,在嵌入式设备挂载的外设不能拔插时将无法进行USB控制器的状态控制。
技术实现要素:
本发明提供一种调整工作模式的方法及设备,用以解决现有技术中存在的在嵌入式设备挂载的外设不能拔插时将无法进行USB控制器的状态控制的问题。
基于上述问题,本发明实施例提供一种调整工作模式的方法包括:
USB控制器在确定被设置为手动模式的USB口全部退出手动模式后,判断每个USB口的vbus开关状态;其中,在USB口被设置成手动模式时,所述USB控制器根据第一用户指令对被设置为手动模式的USB口的vbus开关进行控制;
在确定每个USB口的vbus开关状态为闭合时,所述USB控制器将工作模式调整为device模式。
第二方面,本发明实施例提供一种USB控制器包括:至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行下列过程:
在确定被设置为手动模式的USB口全部退出手动模式后,判断每个USB口的vbus开关状态;其中,在USB口被设置成手动模式时,根据第一用户指令对被设置为手动模式的USB口的vbus开关进行控制;在确定每个USB口的vbus开关状态为闭合时,将工作模式调整为device模式。
由于本发明实施例为USB口提供一种手动模式的控制模式,在USB口的挂载的外设不能拔插时,可以将该USB口的控制模式设置为手动模式,通过手动模式对该USB口的vbus开关进行控制;并且,由于USB控制器处于device模式相比otg模式耗电更少,本发明实施例在被设置成手动模式的USB口全部退出手动模式后,且每个USB口的vbus开关均闭合时,将USB控制器的工作模式调整为device模式,实现了在嵌入式设备包括多个外设,且外设不能拔插时对USB控制器的工作模式的控制,并降低了嵌入式设备的功耗。
附图说明
图1为本发明实施例嵌入式设备的结构示意图;
图2为本发明实施例USB口信号线定义的示意图;
图3为本发明实施例第一种USB控制器工作模式的控制流程图;
图4为本发明实施例USB口的vbus开关的控制流程图;
图5为本发明实施例调整工作模式的方法流程图;
图6为本发明实施例第一种调整工作模式的方法的整体流程图;
图7为本发明实施例第二种调整工作模式的方法的整体流程图;
图8为本发明实施例第一种USB控制器的结构示意图;
图9为本发明实施例第二种USB控制器的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例的调整工作模式的方法可以应用于嵌入式设备,在应用到嵌入式设备时,嵌入式设备的结构如图1所示,包括CPU(Central Processing Unit,中央处理器)、位于CPU中的USB控制器、与USB控制器连接的USB HUB(集线器)、USB HUB输出至少两个USB口、以及位于USB HUB和至少两个USB口之间的DCDC供电芯片,每一路USB口的vbus通过开关独立进行控制。
如图2所示,USB口的信号线的定义;其中,引脚1为vbus,引脚2为D-,引脚3为D+,引脚4为ID,引脚5为GND;USB口的ID引脚与CPU的gpio管脚连接,用于向USB控制器触发ID中断信号;引脚1通过S开关与DCDC供电芯片连接,用于控制vbus的打开与关闭。
本发明实施例USB控制器的工作模式包括device模式和otg模式;
每个USB口的控制模式包括自动模式和手动模式。
其中,USB控制器根据用户指示,配置每个USB口对应的控制模式;
可选的,在用户为USB口手动选择连接的外设时,该USB口对应的控制模式为手动模式,相应的,其它USB口的控制模式为自动模式。
在USB口的控制模式为自动模式时,USB控制器在接收到该USB口的ID中断信号后,调整USB控制器的工作模式;
具体的,在USB控制器接收到USB口的ID中断信号后,判断当前USB口的ID引脚的电平状态是否为低电平;在该USB口的ID引脚的电平状态为低电平时,打开该USB口的vbus开关,USB控制器将工作模式调整为otg模式。
在本发明实施例仅包括一个自动模式的USB口时,USB控制器的工作模式的控制流程如图3所示:
步骤301、USB控制器接收到USB口触发的ID中断信号;
步骤302、USB控制器判断该USB口的ID引脚的电平状态是否为低电平;若是,执行步骤303,若否,执行步骤304;
步骤303、USB控制器打开该USB口的vbus开关,并将工作模式调整为otg模式;
步骤304、USB控制器关闭该USB口的vbus开关,并将工作模式调整为device模式。
在USB口的控制模式为手动模式时,USB控制器将工作模式调整为otg模式;并根据第一用户指令对手动模式对应的USB口的vbus开关进行控制;
具体的,在USB控制器确定存在USB口的控制模式为手动模式时,则将工作模式调整为otg模式;
需要说明的是,在USB控制器对应有多个USB口时,只要多个USB口中存在USB口的控制模式为手动模式,就将USB控制器的控制模式设置为手动模式。
USB控制器在将工作模式调整为otg模式之后,若接收到表示开启vbus开关的第一用户指令后,则USB控制器打开第一用户指令对应的USB口的vbus开关;若接收到表示关闭vbus开关的第一用户指令后,则USB控制器关闭第一用户指令对应的USB口的vbus开关。
在本发明实施例包括手动模式的USB口时,USB口的vbus开关的控制流程如图4所示:
步骤401、USB控制器将至少一个USB口对应的控制模式设置为手动模式;
步骤402、USB控制器将工作模式调整为otg模式;
步骤403、USB控制器判断是否接收到表示开启vbus开关的第一用户指令;若是,执行步骤404,若否,执行步骤405;
步骤404、USB控制器打开第一用户指令对应的USB口的vbus开关;
步骤405、USB控制器关闭第一用户指令对应的USB口的vbus开关。
由于在现有技术中,若USB控制器的至少一个USB口中挂载的外设不能拔插时,将不能采用USB口的控制模式处于自动模式时的调整USB控制器工作模式的方法;基于该问题,如图5所示,本发明实施例提供一种调整工作模式的方法包括:
步骤501、USB控制器在确定被设置为手动模式的USB口全部退出手动模式后,判断每个USB口的vbus开关状态;其中,在USB口被设置成手动模式时,所述USB控制器根据第一用户指令对被设置为手动模式的USB口的vbus开关进行控制;
步骤502、在确定每个USB口的vbus开关状态为闭合时,所述USB控制器将工作模式调整为device模式。
由于本发明实施例为USB口提供一种手动模式的控制模式,在USB口的挂载的外设不能拔插时,可以将该USB口的控制模式设置为手动模式,通过手动模式对该USB口的vbus开关进行控制;并且,由于USB控制器处于device模式相比otg模式耗电更少,本发明实施例在被设置成手动模式的USB口全部退出手动模式后,且每个USB口的vbus开关均闭合时,将USB控制器的工作模式调整为device模式,实现了在嵌入式设备包括多个外设,且外设不能拔插时对USB控制器的工作模式的控制,并降低了嵌入式设备的功耗。
其中,USB控制器根据用户指示,将至少一个USB口的控制模式设置为手动模式;
本发明实施例在将至少一个USB口的控制模式设置为手动模式之后,USB控制器将工作模式调整为otg模式。
具体的,若USB控制器接收到用户指示,将一个USB口设置为手动模式之前,该USB控制器确定已存在USB口的控制模式为手动模式,此时可以确定USB控制器的工作模式已经调整为otg模式,不再需要调整USB控制器的工作模式;若USB控制器接收到用户指示,将一个USB口设置为手动模式之前,该USB控制器确定不存在USB口的控制模式为手动模式,此时USB控制器需要将工作模式调整为otg模式。
并且,USB控制器在接收到第二用户指令时,确定退出USB口的手动模式。
需要说明的是,在USB口退出手动模式后即进入自动模式。
本发明实施例USB控制器可以周期性判断是否将工作模式调整为device模式;
具体的,USB控制器周期性判断被设置为手动模式的USB口是否全部退出手动模式,,在确定被设置为手动模式的USB口全部退出手动模式后,且每个USB口的vbus开关闭合时,USB控制器将工作模式调整为device模式。
或者,本发明实施例USB控制器在确定满足触发条件时,USB控制器判断是否将工作模式调整为device模式;
其中,本发明实施例的触发条件可以为:
触发条件1:
USB控制器接收到USB口触发的ID中断信号,且确定触发所述ID中断信号的USB口的ID引脚为高电平。
在满足该触发条件1后,在判断每个USB口的vbus开关状态之前,USB控制器关闭触发所述ID中断信号的USB口的vbus开关。
需要说明的是,本发明实施例USB控制器可以在判断被设置为手动模式的USB口是否全部退出手动模式之前,关闭触发ID中断信号的USB口的vbus开关;或者在判断被设置为手动模式的USB口是否全部退出手动模式之后,判断每个USB口的vbus开关状态之前,关闭触发ID中断信号的USB口的vbus开关。
在满足该触发条件1后,USB控制器判断被设置为手动模式的USB口是否全部退出手动模式,以及关闭触发ID中断信号的USB口的vbus开关;在确定被设置为手动模式的USB口全部退出手动模式,且每个USB口的vbus开关闭合时,USB控制器将工作模式调整为device模式。
需要说明的是,在USB控制器接收USB口触发的ID中断信号后,若确定触发ID中断信号的USB口的ID引脚的为低电平,则打开触发ID中断信号的USB口的vbus开关,若当前USB控制器的工作模式为device模式,则将USB控制器的工作模式调整为otg模式。
例如,USB控制器通过USB HUB扩展三个USB口,分别为USB口1、USB口2和USB口3,其中,USB口2的控制模式被设置成手动模式;若USB控制器接收到USB口1触发的ID中断信号,USB控制器判断USB口1的ID引脚的电平状态,在USB口1的ID引脚为高电平时,USB控制器关闭USB口1的vbus开关;此时,USB控制器判断USB口2是否退出手动模式;在USB口2的退出手动模式时,且USB口2和USB口3的vbus开关均闭合时,USB控制器将工作模式调整为device模式;在USB口2没有退出手动模式时,USB控制器将工作模式保持为otg模式;或者,若USB口2和USB口3中有任意一个的vbus开关打开,则USB控制器将工作模式保持为otg模式。
若USB控制器接收到USB口1触发的ID中断信号,USB控制器确定USB口1的ID引脚为低电平时,USB控制器打开USB口1的vbus开关。
如图6所示,本发明实施例第一种调整工作模式的整体流程图:
步骤601、USB控制器根据用户指示,将至少一个USB口的控制模式设置为手动模式;
步骤602、USB控制器将工作模式调整为otg模式;
步骤603、USB控制器接收USB口触发的ID中断信号;
步骤604、USB控制器判断触发ID中断信号的USB口的ID引脚是否为低电平;若是,执行步骤605,若否,执行步骤606;
步骤605、USB控制器打开触发ID中断信号的USB口的vbus开关;
步骤606、USB控制器保持工作模式为otg模式;
步骤607、USB控制器关闭触发ID中断信号的USB口的vbus开关;
步骤608、USB控制器判断被设置为手动模式的USB口是否全部退出手动模式;若是,执行步骤609,若否,执行步骤606;
其中,步骤606和步骤607不区分先后顺序;
步骤609、USB控制器判断每个USB口的vbus开关是否全部闭合;若是,执行步骤610,若否,执行步骤606;
步骤610、USB控制器将工作模式调整为device模式。
触发条件2:
所述USB控制器接收到表示退出USB口的手动模式的第二用户指令,且确定需要退出手动模式的USB口的ID引脚为高电平。
在满足该触发条件2后,在判断每个USB口的vbus开关状态之前,USB控制器关闭需要退出手动模式的USB口的vbus开关。
需要说明的是,本发明实施例USB控制器可以在判断被设置为手动模式的USB口是否全部退出手动模式之前,关闭需要退出手动模式的USB口的vbus开关;或者在判断被设置为手动模式的USB口是否全部退出手动模式之后,判断每个USB口的vbus开关状态之前,关闭需要退出手动模式的USB口的vbus开关。
在满足该触发条件2后,USB控制器判断被设置为手动模式的USB口是否全部退出手动模式,以及关闭触发ID中断信号的USB口的vbus开关;在确定被设置为手动模式的USB口全部退出手动模式,且每个USB口的vbus开关闭合时,USB控制器将工作模式调整为device模式。
可选的,在USB控制器接收到所述第二用户指令后,若所述需要退出手动模式的USB口的ID引脚的电平状态为低电平,所述USB控制器打开所述需要退出手动模式的USB口的vbus开关。
例如,USB控制器通过USB HUB扩展三个USB口,分别为USB口1、USB口2和USB口3,其中,USB口1和USB口2的控制模式被设置成手动模式;若USB控制器接收到指示USB口1退出手动模式的第二用户指令,USB控制器判断USB口1的ID引脚的电平状态,在USB口1的ID引脚为高电平时,USB控制器关闭USB口1的vbus开关;此时,USB控制器判断USB口2是否退出手动模式;在USB口2的退出手动模式时,且USB口2和USB口3的vbus开关均闭合时,USB控制器将工作模式调整为device模式;在USB口2没有退出手动模式时,USB控制器将工作模式保持为otg模式;或者,若USB口2和USB口3中有任意一个的vbus开关打开,则USB控制器将工作模式保持为otg模式。
若USB控制器接收到指示USB口1退出手动模式的第二用户指令,USB控制器确定USB口1的ID引脚为低电平时,USB控制器打开USB口1的vbus开关。
如图7所示,本发明实施例第一种调整工作模式的整体流程图:
步骤701、USB控制器根据用户指示,将至少一个USB口的控制模式设置为手动模式;
步骤702、USB控制器将工作模式调整为otg模式;
步骤703、USB控制器接收到表示退出USB口的手动模式的第二用户指令;
步骤704、USB控制器判断需要退出手动模式的USB口的ID引脚是否为低电平;若是,执行步骤705,若否,执行步骤706;
步骤705、USB控制器打开需要退出手动模式的USB口的vbus开关;
步骤706、USB控制器保持工作模式为otg模式;
步骤707、USB控制器关闭需要退出手动模式的USB口的vbus开关;
步骤708、USB控制器判断被设置为手动模式的USB口是否全部退出手动模式;若是,执行步骤709,若否,执行步骤706;
其中,步骤707和步骤708不区分先后顺序;
步骤709、USB控制器判断每个USB口的vbus开关是否全部闭合;若是,执行步骤710,若否,执行步骤706;
步骤710、USB控制器将工作模式调整为device模式。
基于同一发明构思,本发明实施例中还提供了一种USB控制器,由于该USB控制器是本发明实施例中的调整工作模式的方法中的USB控制器,并且该USB控制器解决问题的原理与该方法相似,因此该USB控制器的实施可以参见方法的实施,重复之处不再赘述。
如图8所示,本发明实施例第一种USB控制器包括至少一个处理单元800以及至少一个存储单元801,其中,所述存储单元801存储有程序代码,当所述程序代码被所述处理单元800执行时,使得所述处理单元800执行下列过程:
在确定被设置为手动模式的USB口全部退出手动模式后,判断每个USB口的vbus开关状态;其中,在USB口被设置成手动模式时,根据第一用户指令对被设置为手动模式的USB口的vbus开关进行控制;在确定每个USB口的vbus开关状态为闭合时,将工作模式调整为device模式。
可选的,所述处理单元800还用于:
在确定被设置为手动模式的USB口全部退出手动模式之前,根据用户指示,将至少一个USB口的控制模式设置为手动模式。
可选的,所述处理单元800还用于:
根据用户指示,将至少一个USB口的控制模式设置为手动模式之后,将工作模式调整为otg模式。
可选的,所述处理单元800还用于:
在确定被设置为手动模式的USB口全部退出手动模式之前,接收到USB口触发的ID中断信号,且确定触发所述ID中断信号的USB口的ID引脚为高电平;
在判断每个USB口的vbus开关状态之前,关闭触发所述ID中断信号的USB口的vbus开关。
可选的,所述处理单元800还用于:
在确定被设置为手动模式的USB口全部退出手动模式之前,接收到表示退出USB口的手动模式的第二用户指令,且确定需要退出手动模式的USB口的ID引脚为高电平;
在判断每个USB口的vbus开关状态之前,关闭需要退出手动模式的USB口的vbus开关。
可选的,所述处理单元800还用于:
接收到所述第二用户指令后,若所述需要退出手动模式的USB口的ID引脚的电平状态为低电平,打开所述需要退出手动模式的USB口的vbus开关。
如图9所示,本发明实施例第二种USB控制器,包括:
判断模块901,用于在确定被设置为手动模式的USB口全部退出手动模式后,判断每个USB口的vbus开关状态;其中,在USB口被设置成手动模式时,根据第一用户指令对被设置为手动模式的USB口的vbus开关进行控制;
调整模块902,用于在确定每个USB口的vbus开关状态为闭合时,将工作模式调整为device模式。
可选的,所述判断模块901还用于:
在确定被设置为手动模式的USB口全部退出手动模式之前,根据用户指示,将至少一个USB口的控制模式设置为手动模式。
可选的,所述判断模块901还用于:
根据用户指示,将至少一个USB口的控制模式设置为手动模式之后,将工作模式调整为otg模式。
可选的,所述判断模块901还用于:
在确定被设置为手动模式的USB口全部退出手动模式之前,接收到USB口触发的ID中断信号,且确定触发所述ID中断信号的USB口的ID引脚为高电平;
在判断每个USB口的vbus开关状态之前,关闭触发所述ID中断信号的USB口的vbus开关。
可选的,所述判断模块901还用于:
在确定被设置为手动模式的USB口全部退出手动模式之前,接收到表示退出USB口的手动模式的第二用户指令,且确定需要退出手动模式的USB口的ID引脚为高电平;
在判断每个USB口的vbus开关状态之前,关闭需要退出手动模式的USB口的vbus开关。
可选的,所述判断模块901还用于:
接收到所述第二用户指令后,若所述需要退出手动模式的USB口的ID引脚的电平状态为低电平,打开所述需要退出手动模式的USB口的vbus开关。
本发明实施例提供一种计算设备可读存储介质,包括程序代码,当所述程序代码在计算设备上运行时,所述程序代码用于使所述计算设备执行USB控制调整工作模式的方法的步骤。
以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。