因為最近我的專案都全面轉用 type C 來取代傳統的 micro USB 跟 type A USB port 了,避免開始工作一段時間之後忘掉了怎樣走線,所以就來寫一篇部落格來記錄一下。
Type C Sink (接收端,例如說要充電的裝置)
這個官方文件裡面是說需要把 CC 接 5.1K 到 GND。可是由於一開始規格內容沒很明顯,導致不少人誤解了這句話的意思,例如說 Raspberry Pi 4 一開始版本的 type C sink 設計就是有問題的:
一般來說如果你的電源供應器只輸出 5V 3A 的話倒是沒甚麼問題,但是一用到支持 E-mark 的 type C 線加上 PD 供電器就會出問題了。所以正確的接法應該像下面的, CC1 跟 CC2 獨立拉出來經 5.1K 電阻再接到 GND 上面去
這樣 PD 電供就會知道這是一個 5V 的 sink 而輸出 5V 3A 的電壓 / 流了。
Type C Source (放電端,例如說充電器或是筆電)
接收端應該是比較多人知道,但是 Source 端就較少人討論了。技術宅老人可能知道,在很早的電子產品中, USB 接口預設最高只能提供 (5V)500mA 的電流。所以如果隨便把現代的電子產品插到 10 – 15年前的電腦上充電,電腦有時候會直接把那個 USB 口砍掉(
但是因為太多人拿 USB 來當一個充電接口,所以後來 USB-IF 加入了額外的規格來給需要 USB 充電的裝置使用,現在大家看到的 5V 1A、2A 到 type C 的 3A,都是後來 USB Battery Charging Specification (BCS) 跟 USB Power-Delivery (PD) 提供的。
因此在此背景下, type C device (特別是能用到 10W 以上的電子產品)在插上去的時候,是需要知道 Source 能提供多少的電流,是甚麼規格下的 USB 端口才敢開始充電。
但是就一般 DIY 電路板來說,如果是做信號類的東西,我們就只要在 Source 端 CC1 跟 CC2 分別接個 56K 上拉(即 CC1 / 2 經 56k 到 VBUS (5V))就可以了。如果你在做的 source 是一個 5V 的充電器,能提供到 1.5A / 3A 的話,也可以按上表中改用 22k 或是 10k 的上拉電阻。例如說 Github 上這個開源的 type C USB hub 就是如此設計。