USB PD はなぜ5Vから始めるのか

差した瞬間に20Vが出ていたら、5V専用の機器は一発で壊れます。USB PD は、抵抗だけで決まる段階と、通信してから電圧を動かす段階に分けて、それを避けています。

最終更新: 2026-10-28 USB PDType-C電源シーケンスプロトコル

いきなり20Vを出さない理由

USB Type-C のコネクタは、5V 0.5A しか受け取らない機器にも、20V 5A のノートPCにも、表裏どちらの向きでも刺さります。そのためソースは、差された瞬間には相手が何ボルトまで耐えるか分かりません。

そこで USB PD は順番を固定しています。まず 5V(vSafe5V、4.75〜5.5V)だけを出し、相手と話がついて明示的に要求されたときだけ電圧を動かします。電圧が上がるのは常に、シンクが自分から要求したあとです。

USB-Cの接続先と電源が給電条件を確認する様子
USB-Cの接続先と電源が給電条件を確認する様子。概念を表すAI生成イラストです。実際の回路・条件は本文の図と説明を参照してください。

通信の前に、抵抗だけで決まること

最初の段階に通信はありません。CC1 / CC2 の抵抗の分圧だけで、接続の有無、ケーブルの向き、5Vで流していい電流が決まります。

ソースは CC を Rp でプルアップし、シンクは Rd = 5.1kΩ でプルダウンします。CC が引き下げられたほうが結線されている側で、これで向きが決まり、CC の電圧がそのまま「5Vで何アンペアまで取っていいか」の広告になります。

Rp と、CC 電圧と、5Vで許される電流
ソースの Rp(5Vプルアップ)等価な電流源シンクが見る CC 電圧許される電流
56kΩ80µA0.20〜0.66VUSB既定(0.5A / 0.9A)
22kΩ180µA0.66〜1.23V1.5A
10kΩ330µA1.23V 以上3.0A

このため、PDのICを載せなくても5V 3Aまでなら取れます。

eMarker 入りのケーブルは Ra(800Ω〜1.2kΩ)でもう1本の CC を引き下げ、ソースはそこを VCONN として給電してチップと話します。5A には eMarker が必須です。

USB Type-C の CC まわりソース側はCC1を抵抗Rpで5Vにプルアップし、シンク側は5.1キロオームのRdでプルダウンする。その分圧で決まるCCの電圧が、5Vで許される電流の広告になる。もう一方のCCはケーブル内のeMarkerが約1キロオームのRaで引き下げており、ソースはそれを見つけるとVCONNとして給電する。右の表は、Rpが56キロオームなら0.20から0.66ボルトでUSB既定、22キロオームなら0.66から1.23ボルトで1.5アンペア、10キロオームなら1.23ボルト以上で3アンペア。 通信の前に、抵抗の分圧だけで決まること 接続の有無・ケーブルの向き・5Vで許される電流は、ここで決まる ソース(給電側) シンク(受電側) ケーブル 5V Rp CC1 Rd 5.1k この電圧が広告になる CC2 / VCONN Ra 1k Rp と広告される電流 56k(80µA) CC 0.20〜0.66V USB既定 0.5A / 0.9A 22k(180µA) CC 0.66〜1.23V 5V 1.5A 10k(330µA) CC 1.23V 以上 5V 3.0A ここまではPDのICが要らない。5Vより上を使うときだけ、CC上での通信に進む CC1 と CC2 は別のピン。ソースは Ra を見つけた側を VCONN に切り替えて、ケーブル内のチップに給電する(5A を流すには必須)
図1:CC1 は Rp と Rd の分圧、CC2 はケーブルの Ra と VCONN。

交渉の順番

5Vが出たあとは、CC 上のメッセージで進みます。

  1. Source_Capabilities:ソースが出せる電圧と電流の一覧(5V/3A、9V/3A、20V/5A…)を送る
  2. Request:シンクが一覧から1つ選んで要求する
  3. Accept:ソースが受理する。この時点では電圧はまだ動いていません
  4. PS_RDY:電圧が新しい値に落ち着いたあとで、ソースが「準備できた」と送る

時間の制約もあります。返事を待つ tSenderResponse は 24〜30ms(PD 2.0)/27〜33ms(PD 3.0)、Accept を送ってから電圧を動かしはじめるまでの tSrcTransition は 25〜35ms、電圧遷移を終えるまでの tPSTransition は最大 550ms です。

電圧が動くのは Accept と PS_RDY のあいだで、この区間シンクは「古い契約と新しい契約の、電流の小さいほう」まで負荷を落とさなければなりません。20Vを要求した直後に全力で電流を引くと、ソースは電圧を持ち上げられません。

USB PD の交渉シーケンス横軸を時間、縦軸をVBUSの電圧としたグラフ。未接続の0ボルトから、接続検出で5ボルトに上がり、そのままの電圧でSource_Capabilities、Request、Acceptのメッセージがやり取りされる。Acceptのあとソースは25から35ミリ秒待ってから電圧を上げはじめ、最大550ミリ秒で20ボルトに達し、そこでPS_RDYを送る。 5Vから目的の電圧まで、何がどの順で起きるか 電圧が動くのは Accept のあと。合図は PS_RDY 0 5V 20V VBUS 接続検出 → 5V Source_Capabilities Request(20V) Accept PS_RDY tSrcTransition 25〜35ms 電圧遷移 tPSTransition 最大550ms 青:ソースが送るもの 緑:シンクが送るもの 時間軸は等間隔ではない。実時間の比で描くと、ほとんどが5Vの区間になってしまうため
図2:VBUS の電圧と、CC上のメッセージの順番。時間軸は等間隔ではない。

上げるときと、下げるとき

上げるときはソースが VBUS と入力コンデンサを充電するので、時間はソースの設計で決まります。

下げるときが厄介です。ソースは電流を出せても吸い込めるとは限らず、20Vから5Vへ落ちる速さは VBUS の総容量と負荷が引いている電流で決まります。シンクが省電力に入って数mAしか引いていなければ、電圧はなかなか落ちません。

電圧を下げられるソースにはだいたい放電回路(VBUS を引き下げるFET)が入っていて、省くと軽負荷のときだけ tPSTransition に間に合わない、再現しにくい不具合になります。

検証では軽負荷での降圧を必ず見てください。重い負荷では勝手に落ちて問題が隠れます。

USB PD の電圧遷移と Hard Reset左は昇圧で、Acceptのあと25から35ミリ秒待ってから最大550ミリ秒で20ボルトへ上がる。右は降圧で、重い負荷なら速く落ちるが、軽い負荷では出力容量が放電されず落ちきらない様子を2本の曲線で比べている。下段はHard Resetで、VBUSがvSafe0Vまで650ミリ秒以内に落ち、660から1000ミリ秒待ってから5ボルトで再開する。 上げるときと下げるときで、難しさが違う 上げる(5V → 20V) 5V 20V 最大550msで到達 25〜35ms待つ 昇圧:ソースが能動的に充電するので、時間はソースの設計で決まる 下げる(20V → 5V) 5V 20V 重い負荷:早く落ちる 軽い負荷:落ちきらない 降圧:ソースは電流を吸えない。VBUSの容量を放電するのは負荷なので、軽負荷だと間に合わないことがある Hard Reset:5Vからやり直す 5V 20V Hard Reset vSafe0V まで 650ms以内 tSrcRecover 660〜1000ms vSafe5V から再開
図3:上げるときはソースが押し上げ、下げるときは負荷任せ。下段は Hard Reset。

交渉が壊れたときの Hard Reset

交渉がうまくいかなくなったときは、途中から復旧せず最初からやり直します。これが Hard Reset です。

ソースは VBUS を vSafe0V(0.8V以下)まで 650ms 以内(tSafe0V)に落とし、tSrcRecover(660〜1000ms)待ってから vSafe5V で再スタートします。電源が1秒近く切れるので、「PD対応の機器をつなぐと、ときどき再起動する」症状はたいていこれです。

入力コンデンサへの突入電流

5Vから20Vへ上がるとき、シンクの入力容量には ΔV ぶんの充電電流が流れます。100µF で 15V 上がると電荷は 1.5mC で、550ms かけて上げるなら平均 2.7mA、ソースのスルーレートが速ければ瞬間の電流はずっと大きくなります。

VBUS の上げ方と入力コンデンサの充電電流左は VBUS を5ボルトから20ボルトへ上げる2通りの立ち上がりで、550ミリ秒かけてゆっくり上げる場合と、もっと短い時間で速く上げる場合。右はそのときの入力コンデンサの充電電流で、ゆっくりなら平均2.7ミリアンペアの低く長い形、速ければ瞬間の電流がずっと大きい高く短い形になる。どちらも面積である電荷は同じ1.5ミリクーロン(100マイクロファラドで15ボルト上げた場合)。 5Vから20Vへ上げるときの、入力コンデンサの充電電流 VBUS の電圧 5V 20V 速く上げる 550ms かけて上げる 時間 充電電流 平均 2.7mA 瞬間はずっと大きい 時間 電流の面積が電荷。どちらも同じ 1.5mC(100µF で 15V 上げた場合)
図4:同じ電荷なら、短い時間で上げるほど充電電流は大きい。

設計で見落としやすい点

  • 5V用の回路には20Vを見せません。PDコントローラの PS_RDY 相当の出力で負荷スイッチを入れ、要求した電圧が来てから後段を投入します。
  • eMarker の無いケーブルは3Aまでです。20V 5A(100W)を想定した設計で、手元のケーブルが3Aだったという取り違えはよくあります。
  • PPS(Programmable Power Supply)では 20mV 刻みで電圧を指定でき、負荷側から見ると電圧が動く電源になります。
  • PD 3.1 の EPR は 28V / 36V / 48V を追加し(最大 240W)、SPR(20Vまで)とは入り口の手順から違います。

よくある質問

PDのICを載せずに、Type-Cから電源を取れますか?
5Vなら取れます。CC1 と CC2 にそれぞれ 5.1kΩ を落とし、CC の電圧で 0.5A / 1.5A / 3.0A のどれが許されているかを読みます。
Accept が返ってきたのに電圧が変わりません。
Accept は受理の返事で、電圧が動くのはそのあとです。電圧が来た合図は PS_RDY です。
降圧のときだけ、たまに落ちます。
軽負荷での降圧を疑ってください。ソースは電流を吸えないので、負荷が軽いと VBUS が放電されず tPSTransition に間に合わないことがあります。
100W を想定したのに 60W しか出ません。
ケーブルを疑ってください。eMarker が無いと 3A 止まりで、20V × 3A = 60W になります。

参考にした規格・資料

  • USB Power Delivery Specification(USB-IF) — メッセージの定義と、tSenderResponse / tSrcTransition / tPSTransition / tSrcRecover などのタイミング
  • USB Type-C Cable and Connector Specification(USB-IF) — Rp / Rd / Ra の値、CC の電圧しきい値、VCONN と eMarker
  • USB Power Delivery Compliance Test Specification(USB-IF) — 各タイミングの測定条件

← コラム一覧へ