近日,树莓派4 Model B(树莓派4B)正式发布,从处理能力,通信方式,对外接口都进行了全方位的升级,为嵌入式开发者带来了福音。
收到货后,不少开发者怀着激动的心情开始尝试使用,结果却发现USB-C接口在设计规范性上出现了严重的问题。
经过实际测试发现,树莓派4上面的这个USB-C接口,其CC1和CC2是连接在一起的,并共用了一颗5.1k的电阻下拉到地。
这个设计看似非常巧妙,USB-C接口的控制做到了极致简单,只需要一颗5.1k下拉电阻。当外接的USB-C 数据线是不带Emark芯片的情况下,一起都可以正常工作。
因为这类USB-C 数据线的CC2是悬空的,只有CC1有连接到对端,所以,这种数据线跟树莓派4B的USB-C接口母座一连起来,就非常好的符合了Sink端的设计规范,即CC1上,有一个5.1k的电阻下拉到地。
但是,USB TYPE-C规范里面,还规定了一种带Emark 芯片的数据线(Cable),这种数据线的CC2上,有一个1K的下拉电阻,用来告知DFP端的CC识别芯片,需要往CC2上提供VCONN Source。
一旦跟这样的数据线连接起来,树莓派4 Model B就会出现严重问题,因为CC1和CC2连接起来后,会跟数据线上的1K到地电阻并联,形成一个比1k电阻还小的阻抗,从而满足了USB-C规范中Audio Adapter Accessory Mode的连接规范,被电源端误认为是一个模拟耳机设备,从而拒绝供电。
通过上图我们可以看到,Emark连接线上的1k电阻会导致,CC1建立失败,1k电阻和5.1k电阻的并联,会导致树莓派4B被认为是一个Audio Adapter Accessory Mode。
解决这个问题的方法也很简单,只需要在CC1和CC2上各接一个5.1K电阻到地,互相独立就行了。
树莓派4B在USB-C接口上的设计,其实属于入门级设计,因为这个接口仅仅用来进行5V供电和一个USB2.0 通信而已,并无复杂的音视频及USB 3.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 数据线内的高速差分对通路进行配置,让数据信号和视频信号适配到合适的差分对上。
第三, 双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控制芯片。