從樹莓派4 USB-C接口設計失誤看嵌入式系統的接口升級
近日,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控制芯片。