我们日常生活中在手机连接电脑或者U盘传输数据的时候,虽然是传输数据,但是主从关系是不同的,在手机连接电脑的时候可以同时给手机充电,而连接U盘的时候是手机提供电力给U盘,造成这种区别到底是由什么控制呢?

Android USB等时传输 手机usb传输数据_Power

那么首先我们要知道的是数据和供电归属于两个角色,那么数据和供电会有主从关系。

那么就拿手机上的Type-C接口来说,Type-C接口里搭载的PD协议里定义了 Data Role 和 Power Role 。

所以在USB2.0端口的Data Role里,USB根据数据传输的方向定义了HOST/Device/OTG三种角色,其中OTG即可作为HOST,也可作为Device,即在Type-C中,也是一样有类似的定义的,只是名字会有些许的修改。

1.DFP(Downstream Facing Port)

下行端口,可以理解为Host或者是HUB,DFP提供VBUS、VCONN,可以接收数据。在协议规范中DFP特指数据的下行传输,笼统意义上指的是数据下行和对外提供电源的设备。

2.UFPUpstream Facing Port):

上行端口,可以理解为Device,UFP从VBUS中取电,并可提供数据。典型设备是U盘,移动硬盘。

3.DRPDual Role Port):

请注意DRP分为DRD(Dual Role Data)/DRP(Dual Role Power)双角色端口,类似于以前的OTG,DRP既可以做DFP(Host),也可以做UFP(Device),也可以在DFP与UFP间动态切换。典型的DRP设备是笔记本电脑。设备刚连接时作为哪一种角色,由端口的Power Role(参考后面的介绍)决定;后续也可以通过switch过程更改(如果支持USB PD协议的话)。

而在Type-C的Power Role里,同样根据USB PORT的供电(或者受电)情况,USB Type-C将port划分为Source、Sink等power角色

Android USB等时传输 手机usb传输数据_智能手机_02

Power Role 详细可以分为:

1.Source Only

2.默认Source,但是偶尔能够通过PD SWAP切换为SINK模式

3.Sink Only

4.默认SINK,但是偶尔能够通过PD SWAP切换为Source模式

5.Source/SINK 轮换

6.Sourcing Device (能供电的Device,显示器)

7.Sinking Host(吃电的Host,笔记本电脑)

Android USB等时传输 手机usb传输数据_Power_03

USB Type-C的插座中有两个CC脚,以下的角色检测,都是通过CC脚进行的,但是对于插头、或者线缆正常只有一个CC引脚,两个端口连接在一起之后,只存在一个CC引脚连接,通过检测哪一个CC有连接,就可以判断连接的方向。如果USB线缆中有需供电的器件,其中一个CC引脚将作为VCONN供电。

CC引脚有如下作用:

1.检测USB Type-C端口的插入,如Source接入到Sink

2.用于判断插入方向,翻转数据链路

3.在两个连接的Port之间,建立对应的Data Role

4.配置VBUS,通过下拉电阻判断规格,在PD协商中使用,为半双工模式

5.配置VCONN

6.检测还有配置其他可选的配置模式,如耳机或者其他模式

Android USB等时传输 手机usb传输数据_电脑_04

再回到实际应用中,正常来说Power Role和Data Role都是同步的,比如手机连接U盘的时候,手机的Power Role是DFP,Data Role也是做host;当手机连接笔记本,手机的Power Role是UFP,Data Role也是做device。如果要让手机Power Role做UFP,Data Role做host就需要用到PD协议芯片切换。

我们拿乐得瑞科技推出的PD协议芯片LDR6028举例,看看是如何实现边充电边传输数据?

手机和PD协议芯片LDR6028都属于DRP,都是双角色端口。想实现边充电边传输数据的状态,需要LDR6028跟手机进行PD协议沟通切换Power Role和Data Role。切换成功后的状态,手机的Data Role是做DFP(Host 主机),Power Role是做Sink(UFP 受电方)。

Android USB等时传输 手机usb传输数据_Power_05

在没做角色切换之前,sink(受电方)只能是UFP(从机),source(供电方)只能是DFP(主机),例如手机接U盘的时候,手机作为source(供电方),U盘作为sink(受电方),所以手机会放电给U盘使用。

为了达到边充电边传输数据的状态,PD协议芯片LDR6028有两种做法:

1.PR_SwapPower Role Swap 供电角色切换):

Android USB等时传输 手机usb传输数据_网络协议_06

第一种是手机的数据角色保持不变,仅切换供电角色,就能实现手机边充电边传输数据,这种做法有个好处就是数据不用重连,连接听歌或者投屏的时候,插上充电数据不掉,体验非常好。

2.DR_SwapData Role Swap 数据角色切换):

Android USB等时传输 手机usb传输数据_智能手机_07

第二种是手机的供电角色保持不变,仅切换数据角色,也可以实现手机边充电边传输数据,但是这种做法因为是切换数据角色,所以数据传输过程中会强制中断再重连,就像投屏的时候黑屏一下又恢复正常,体验并没那么好。

那么有人就会问了,都用第一种PR_Swap体验好不就行了,但是事实并没有那么简单,目前市面上的手机型号五花八门,而且不少手机的PD协议做的并不规范,在角色切换过程中出现的问题也千奇百怪,只用第一种PR_Swap可能会沟通失败,导致无法切换角色,所以退而求其次,想成功边充电边传输数据,有时候是不得不采用第二种DR_Swap的。

总结:

在现在这个科技急速发展的时代,人们使用的手机功能是越来越强大,我们可以用手机连接各种外设实现不同的需求,就比如连接显示器投屏,连接麦克风直播,还有连接VR眼镜等等,但是手机只有一个Type-C接口,而且连接外设的时候的手机耗电速度极为惊人,所以实现边充电边传输数据这个功能就显得尤为重要。