近日,RaspBerry 4 Pi model B(树莓派4B)正式发布,从处理能力,通信方式,对外接口都进行了全方位的升级,为嵌入式开发者带来了福音。收到货后,不少开发者怀着激动的心情开始尝试使用。结果,却发现了USB-C接口在设计规范性上出现了严重的问题。
经过实际测试发现,树莓派4上面的这个USB-C接口,其CC1和CC2是连接在一起的,并共用了一颗5.1k的电阻下拉到地。这个设计看似非常巧妙,USB-C接口的控制做到了极致简单,只需要一颗5.1k下拉电阻。当外接的USB-C Cable是不带Emark芯片的情况下,确实可以正常工作。因为这类USB-C Cable的CC2是悬空的,只有CC1有连接到对端,所以,这种Cable跟RaspBerry 4B的USB-C接口母座一连起来,就非常好的符合了Sink端的设计规范,即CC1上,有一个5.1k的电阻下拉到地。
但是,USB TYPE-C规范里面,还规定了一种带Emark 芯片的Cable,这种Cable的CC2上,有一个1K的下拉电阻,用来告知DFP端的CC识别芯片,需要往CC2上提供VCONN Source。一旦跟这样的Cable连接起来,RaspBerry 4 Pi model B就会出现严重问题。因为CC1和CC2连接起来后,会跟Cable上的1K到地电阻并联,形成一个比1k电阻还小的阻抗,从而满足了USB-C规范中Audio Adapter Accessory Mode的连接规范,被电源端误认为是一个模拟耳机设备,从而拒绝供电。
通过上图我们可以看到,Emark 连接线上的1k电阻会导致,CC1建立失败,1k电阻和5.1k电阻的并联,会导致RaspBerry 4B被认为是一个Audio Adapter Accessory Mode。解决这个问题的方法也很简单,只需要在CC1和CC2上各接一个5.1K电阻到地,互相独立就行了。这一点可以搜索一下笔者在2015年的原创文章《你真的需要TYPE-C芯片吗》。这篇文章为大家提供了判断系统是否需要使用USB-C 控制芯片的三个原则和两个实现方法。
RaspBerry 4B在USB-C接口上的设计,其实属于入门级设计,因为这个接口仅仅用来进行5V供电和一个USB2.0 通信而已,并无复杂的音视频及USB3.0功能。在实际的嵌入式开发中,一个USB-C接口的功能,可能远不止于此。下面我们就大功率供电供电、高速信号传输、双C口DRP控制三点进行阐述。
第一, 需要使用USB-C接口来获得9V/12V/15V/20V的供电电压。很多嵌入式系统具有非常复杂的功能,仅仅5V的供电,是无法满足要求的。那么,这个时候,只是通过在CC1和CC2上单独设置5.1k下拉电阻,就不够了,而是必须使用USB PD控制芯片,最好是能够灵活配置各种电压的USB PD控制芯片,例如LDR6015和LDR6021就可以实现这个功能。某些系统设计中,甚至希望USB PD控制芯片自动去判断适配器的最高功率档,让电源适配器直接供应最高功率给嵌入式系统,这个时候,就可以使用LDR6015Max,可以不需要任何的控制,直接获得最高功率。
第二, 需要使用USB-C接口进行高速视频信号传输的应用开发。USB-C接口,可以同时支持10G/b的USB 3.1Gen2数据传输和4K高清视频传输。但是要让Sink端进入DP ALT mode,这个时候必须使用一颗USB PD Controller,例如LDR6282等。这类USB PD控制芯片,充当的是一个交通管理员的角色,通过USB PD通信,对USB-C Cable内的高速差分对通路进行配置,让数据信号和视频信号适配到合适的差分对上。
第三, 双C口DRP功能控制,很多嵌入式应用不仅仅使用单个USB-C口,还可能会有两个USB-C口,其中一个C口用于供电,另外一个C口用于进行高速数据及视频信号传输。但用户使用过程中,并不确定两个中的哪一个口会插上电源,或者多媒体设备,因此需要满足双C口盲插识别和控制,最典型的应用是USB-C接口的显示屏和投影仪。这就属于比较复杂的USB PD控制功能了。目前市面上仅仅有LDR6282可以满足这个需求。
综上所述,我们可以看出,对于USB-C接口仅仅用于供电和Debug功能的嵌入式系统,USB-C接口并不需要使用任何芯片控制,通过CC1和CC2各自独立下拉一个5.1k电阻到地即可。对于需要用到大功率供电或者高清视频传输功能的嵌入式设计,则必须要使用USB PD控制芯片。
文章作者:刘小灵