SPIやUART、CAN等の様々な信号がありますが、USB PDの通信ロジックは1.2Vと信号レベルが低いため、上記のような低価格なロジックアナライザではそのまま取り込むことができません。これらのロジックアナライザは3.3Vや5Vの電圧レベルを想定しているため、USB PDの通信を取り込むためには何かしらの信号レベル変換が必要です。手持ちの双方向レベル変換IC、NTB0104GU12があったため、試しにレベル変換してみましたが、うまくレベル変換できませんでした。双方向レベル変換の場合、ロジックアナライザ側のプルアップやプルダウン等が邪魔してしまい、逆にPD信号を阻害してしまったようです。USB PDの通信ロジックの信号レベルを変換する際は片方向のレベル変換やバッファIC等を使用した方がよさそうです。
USB PDの電圧レベルは低く、信号レベル変換に苦労したため、専用のUSB PD Sniffer基板を作成してみました。レベル変換は汎用的なコンパレータを0.5V付近に閾値を設定しました。これにより1.2Vのロジックを3.3Vロジックに変換することが可能です。また、PD通信が完了後に5Vから指定した電圧に変化したタイミングを検出するため、VBUSが5.5Vを超えると信号がHighに変化する出力(ここではPD信号)も追加しました。この信号によって、リクエスト後に電圧が変化するタイミングや電圧変化後のReady信号までのタイミング等をロジックアナライザでCCの通信と同時に確認することが可能です。
VBUS電源を用いてコンパレータを動作させているため、追加で外部電源を供給する必要がありません。
実際に手持ちの65WクラスのUSB PDアダプタで20Vを出力させる際に本アダプタとnanoDLA+PulseViewで解析してみました。USB PDは300kHzで通信するため、ロジックアナライザのサンプリングレートは少なくとも500kHz以上を設定する必要があります。
接続後にVBUSに5Vが供給されるとPD通信を開始して、ソース側のUSB PDアダプタが出力可能なプロファイルを送信していることが確認できました。また、その後、シンク側のPDデバイスが20Vのリクエストしていることが確認できました。リクエストに対するアクセプト信号後、出力が20Vに変化し、Ready信号がソースからシンク側に送られていることも確認できました。
高性能なロジックアナライザであれば、信号電圧レベルの閾値を任意に変更できますが、入手が容易で安価なロジックアナライザは信号検出レベルが固定になっていることが多いです。そのような場合に本USB PD Sniffer基板は便利かと思います。
なお、本基板はPD通信の解析を目的としており、下記の注意点があります。
・USB3向けのTX、RXは未接続
・D+/D-、CC1/CC2、VBUS/GNDのみ接続
・CC1/CC2の信号が3.3Vレベルでピンヘッダから出力されます
・ピンヘッダから信号を入力してCC1/CC2にインジェクションすることはできません
・2つのType-Cコネクタの違いはありません(片方にシンク、もう片方にソースを接続してください)
・本基板のVBUSラインの定格は2Aです
・ネゴシエーション後、VBUSラインに大電流を流す場合は本基板外でVBUSラインパイパスさせてください
・挿入向きによって通信できない場合はどちらかのType-Cコネクタを裏返してください
・VBUS ON直後のPD、CC信号はコンパレータが不安定なため、出力が一瞬、ONする場合があります
・VBUSピンはPDネゴシエーション後に5Vを超える電圧が印加されます
・VBUSピンを直接、ロジックアナライザに接続した場合、ロジックアナライザが破損する可能性があります
・VBUSピンにロジックアナライザを接続せず、マルチメータやオシロスコープ等の電圧モニタピンとして使用してください
回路図やガーバー等はこちらで公開しています。USB PDデバイスを開発する際にぜひご活用ください。また、近日中にUSB PD Sniffer基板を販売開始を予定しています。

