USB PDコントローラICのCC信号電圧浮き耐性調査

# はじめに
特定条件下でUSB充電時の停止再開ループが発生する事象があり、発生要因を調べていったのが下記記事。

https://qiita.com/tzyk/items/f1b60a999e32314dcf12

上記事象の要因の一つと考えられる、充電器側のPDコントローラICの性能差について軽く深追いしてみたので、ここにまとめる。

# USB PD規格のおさらい
実際に何が起きているかは先の記事を参照してもらうとして、理解の前提となるUSB PD規格をおさらいしてみる。
まず一般論として、すべての電子機器のGND(アース、0V)レベルは同一電圧であるのが理想だが、USB充電の場合はケーブルに相応の充電電流が流れるため、ケーブルの配線抵抗によって充電器(Source)とスマホ等(Sink)にGND電圧レベルの差ができてしまう。つまり、USB PDの通信に使用されるCC信号をスマホが送って充電器が受ける場合、スマホが0Vを出力しているつもりでもその基準となるGND電位が違う(充電器から見ると浮き上がっている)ため、充電器で受け取るCC信号の電圧もそのGND電位差分だけ浮き上がって見える。
PD規格としてもこの現象は考慮されており、スマホ側のGND電位は充電器側のGND電位より最大250mV浮き上がってOKとされている。以上のことから、信号受信側で見るCC信号の電圧レベルは、以下のように規格で定められている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981018/9de17b6b-4867-b4a4-eae4-b196a883a980.png)
充電器は"Sourcing Power"なので、数値としては以下のように読み取れる。
* Y4Rx(VIH): 0.8925V … この電圧以上の入力は"1"と判定する
* Y2Rx(VIL): 0.4825V … この電圧以下の入力は"0"と判定する
* 上記範囲外(Y4RxとY2Rxの間、図のグレー枠内)については実装依存

GND電位差が発生している状況でもノイズマージンを極力確保して安定的にPD通信できるよう、充電器側で受信するCC信号レベルが高い側にシフトしても耐えられるように考えられた規格となっている。充電器側のPDコントローラは当然、この規格を守っている必要がある。図のグレー枠内の対応については規格では明示されていないが、規格の制定意図を汲み取れば、より電圧が上振れしていても通信可能となる設計としておいたほうが好ましい。

# 使用PDコントローラ調査
自分で分解して調査したいところだが難しいので、Webで情報を収集。公開していただいている先人に感謝。
### 手持ち品([前回記事](https://qiita.com/tzyk/items/f1b60a999e32314dcf12)登場品)
* [Anker Nano II 65W](https://www.ankerjapan.com/products/a2663)[^1]
→ [Weltrend](https://www.weltrend.com.tw/en) [WT6636F](https://www.weltrend.com.tw/en/products/detail/ehTVjzUdSl)
[^1]:https://xtech.nikkei.com/atcl/nxt/column/18/02119/042800011/
* [Anker PowerPort III 3-Port 65W Pod](https://www.ankerjapan.com/products/a2667)[^2]
→ [ISMARTWARE](https://www.ismartware.com/) [SW3516H](https://www.ismartware.com/details-4-60.html)(C1)+SW3518S(C2+A)
[^2]:https://www.chongdiantou.com/archives/120892.html
### その他の調査記事から
* [ChipSourceTek](https://www.chipsourcetek.com/) [XPD738](https://www.chipsourcetek.com/Charge-Chip/2577.html)
ダイソー700円充電器など[^3]
[^3]:https://note.com/tomorrow56/n/n581efba2ef01
* [Infenion(旧Cypress)](https://www.infineon.com/cms/en/) [EZ-PD CCG3PA](https://www.infineon.com/cms/en/product/universal-serial-bus/usb-c-ac-dc-and-dc-dc-charging-solutions/ez-pd-ccg3pa-usb-c-pd/)
旧Cypress社はUSB関連チップの老舗。とくに初期の製品に採用例が多いようだ。

# データシート読み解き
### Weltrend(偉詮電子) WT6636F
採用例は多数あるようだが、チップとしての情報がほぼ出てこない…。データシートもどこかから流出したような透かし入りのものしか見つからないし、そもそも記載されている情報量が少ない。
ということでCCライン(CC1,CC2)の電圧に関する詳細情報は得られず。

### ISMARTWARE(珠海智融) SW3516H/SW3518S
こちらも通常入手可能なデータシートに記載されている情報が少なく、CCライン(CC1,CC2)の電圧に関する詳細情報は得られず。

### ChipSourceTek(矽源特科技) XPD738
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981018/b31d8539-d425-059c-e9b1-77533e9f1540.png)
やっと欲しかった情報が出てきた。廉価品ということでソース(充電器側)決め打ちで作られているっぽい。
|(単位:mV) | 規格 | XPD738 | 判定 |
|:-:|:-:|:-:|:-:|
|VIH(VRXHI)| 892.5 | 800(min)～840(typ)～885(max) | OK |
|VIL(VTXHI)| 482.5 | 485(min)～525(typ)～570(max) | OK |

この解釈としては、VIL側を例にとると
* 規格: 482.5mV以下の信号は"0"と判定すること。それ以上は不問。
* XPD738: 485～570mV以下の信号であれば"0"と判定。チップ個体差を考慮して幅あり。

ということになる。つまりXPD738は、CC信号の受信について充電器としてのPD規格を満たしている。

### Infenion(旧Cypress) EZ-PD CCG3PA (CYPD3175など)
しっかりした印象のある老舗メーカーの割には公開されている情報が少なく、得られるのは下記記載くらいしかない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981018/12e1bc6e-1e3a-7359-a249-af124c0823b8.png)

このチップはソース・シンク両対応を謳っており、CC信号の浮き上がり(ソース＝充電器側の場合)と沈み込み(シンク＝スマホ側の場合)の両方が考慮された設計となっている。VIH/VILなどの具体的な電圧レベルの規定は見当たらなかったが、恐らく電位差(浮き上がり・沈み込み具合)を計測して追随する仕掛け[^4]を持っており、その許容範囲が-500～+500mVと言っているのだと思われる。この推測が本当だとすると、かなりユーザーフレンドリーな設計と言える[^5]。
[^4]:BMC変調の特性上、信号が"1"である時間と"0"である時間は長期的には等しくなるので、アナログ的に平均を取ってそれをスレッショルド電圧とすることは実現可能と考える。
[^5]:ただし規格に求められている以上の過剰スペック(＝コスト上昇要因)という見方もできるので、一概に「そう設計すべき」と言い切ってよいかは難しい。

### TI TPS25763
採用例から辿ったわけではなく、何となく検索して見付けたもの。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981018/fb5c25c3-b7d0-81cd-ce6f-4b9e60b22041.png)

こちらもソース・シンク両対応だが、Roleによって電圧レベルを使い分ける構造となっている。
|(単位:mV) | 規格 | XPD738 | 判定 |
|:-:|:-:|:-:|:-:|
|VIH(ソース)| 892.5 | 784(min)～825(typ)～866(max) | OK |
|VIL(ソース)| 482.5 | 523(min)～550(typ)～578(max) | OK |
|VIH(シンク)| 642.5 | 499(min)～525(typ)～551(max) | OK |
|VIL(シンク)| 232.5 | 230(min)～250(typ)～270(max) | 微妙 |

概ねPD規格を充足しているが、シンク時のVILがmin条件で微妙に割れている…。

# まとめ

* チップにより実装差異はあるが、仕様をオープンにしているチップについてはさすがにUSB PD規格に準拠した仕様となっている。
* 逆に仕様をオープンにしていないチップは、規格に準拠するのをサボっていることを悟られないようにあえて仕様を隠していると穿った見方をしてしまう。
* 結局一番知りたかった、WT6636FとSW3516H/SW3518Sの違いは分からないまま…

# 参照したデータシート

* WT6636F
(明らかに流出したようなファイルしか出てこない→[検索](https://www.google.com/search?q=wt6636f+datasheet))
* SW3516H
https://www.ismartware.com/upload/goods/20220829/202208291455122409.pdf
* SW3518S
https://www.ismartware.com/upload/goods/20220721/202207211743023009.pdf
* XPD738
https://www.chipsourcetek.com/Uploads/file/XPD738.pdf
* CCG3PA(CYPD3175など)
https://www.infineon.com/dgdl/?fileId=8ac78c8c7d0d8da4017d0ee432a16ab5
* TPS25763
https://www.ti.com/jp/lit/ds/symlink/tps25763-q1.pdf