CH340を炙って削って解析してみた。
見出し画像

CH340を炙って削って解析してみた。

マイコンをPCにつなぐときによく使う「USB-シリアル変換器」というものがあります。Arduinoあたりをよく使う方なら、FTDI Basic(またはその互換品)を使うことが多いかと思います。これらにのっている、USBとシリアル(いわゆるUART)をつなぐICには、いろいろなメーカーがいろいろな製品を出しています。有名どころだとFTDI社のFT232シリーズというのがあったり、そのピン互換のPL2303シリーズというのがあったり、そのニセモノがあったり、みんな大好きM5StackシリーズだとCP210xシリーズが使われていたりと、いろいろとにぎやかな世界なのですが、そんな中に、WCHというマークがついたCH340シリーズと言う製品名の激安なUSB-シリアル変換ICがあります。これは、南京沁恒微电子股份有限公司(Nanjing Qinheng Microelectronics)というメーカーの製品です。一昔前だと、激安Arduino互換機で使われていたり、メーカーのWebサイトで配布されているドライバのインストーラがウイルスチェッカーにひっかかることがあったりと、なかなかアレな製品でした。それでも最近はいろいろと改善されていて、Macだとドライバーが標準で入っていたりするみたいです。そして最近、あの秋月電子でこのCHシリーズの扱いがはじまりました。

画像1

いくら秋月電子とはいえ、泣く子も黙る激安ぶりです。ピン数が少ないものなら55円って。

それにくわえて、最近のCH340シリーズは、外付け部品がほとんどいらないという便利さです。ほとんどのもので、こちらのようにUSBコネクタに直結し、電源にバイパスコンデンサをつなぐだけです。水晶振動子もダンピング抵抗もいりません。いやはやこれが55円とは、便利な世の中になったものです。

画像2

このCH340シリーズのデータシートをみると、7種類の製品がラインナップされています。シリアル通信のフロー制御などの制御信号線や通信状態を示す信号など、それぞれ用途にあわせて選べそうですね。特にArduinoで便利なDTR#信号や、ESP32シリーズの書き込みでよく使われるRTS#信号が出ているものもあり、なかなか便利そうです。またパッケージも何種類かあり、一番小さいCH340Eだと0.5mmピッチのTSSOP10ピンです。(ちなみにCH340Kを使った、ESP32書き込みに使うRTS#信号も引き出せるFTDI Basicピン互換なUSB-シリアル変換器もつくってみました)

画像3

とはいえ、半導体メーカーの立場からすると、中のチップの設計は、それなりに手間もお金もかかるので、あまり種類を増やしたくないところです。そこで、このCH340シリーズの中の半導体チップは、実はぜんぶ同じなのでは?という疑問を持ちました。

というわけで、いつもの方法で、バーナーで炙ってチップを取り出して、観察してみます。今回のターゲットは、秋月で売っている、CH340G/E/K/Nの4種類です。

画像4

チップを顕微鏡で観察してみると、どうもCH340N以外の3つは同じチップっぽいです。(計測されたチップサイズは計測誤差の範囲)

画像5

念のため、チップ上の何箇所かの特徴的なパターンを比べてみると、たしかに同じパターンで、やはり同じチップのようです。

画像6

ちなみにこの3つのうち、CH340Gだけ、外付け水晶振動子が必要ですが、同じチップですので、チップ上に内蔵発振回路があるものの、互換性のために無効にしていると思われます。なおCH340Nは明らかに別チップですが、これはリビジョンが古いものの可能性もありそうです(詳細は追って)。

ちなみにCH340Gを解析している途中で、たまたま、チップサイズが明らかにさきほどのCH340Gより大きい物を見つけました。これがCH340Gしかなかった頃の、水晶振動子が必要な初期版のCH340Gと思われます。

画像7

さて、CH340E/G/Kの中身は同じ半導体チップでしたが、3つの製品のパッケージは全く違い、ピン配置も異なります。そこで、(1)電源の位置は同じだろう、(2)USBに直接つながり高速な信号伝送をするUD+/UD-の2つの位置は同じだろう、という2つを仮定し、チップ上のパッド(配線をつなぐぐ端子)と信号・機能との対応を推測してみました。緑の位置がUD+/UD-、赤が電源です。

画像8

たぶんこれであってるだろうなー、と思うのですが、やはり実際に観察をして確認したいところです。

ICのパッケージの中では、半導体チップとICパッケージの足につながる端子(リードフレーム)を、ボンディングワイヤという細い金属線(多くは金銭)でで接続されています。物理構造上、チップから出るところで少し盛り上がり、そこからリードフレームへ下りていく、という構造になるので、上から少しずつ削っていき、その断面を観察すると、どのようにボンディングワイヤがつながっているか、わかりそうです。

画像9

そこで、ICパッケージをヤスリで少しずつ削っていくと、たしかに途中から、ボンディングワイヤの断面が観察できるようです。(ちなみに細目のヤスリを使うと、削った面がなめらかになって観察しやすいです)

画像10

しっかりICを固定して、少しずつ削りずつ写真をとっていけば、チップ上パッドとリードフレーム間のボンディングワイヤの接続の様子(ボンディング・ダイアグラムと呼ぶ)がわかりそうです。そこで、顕微鏡に銅板を固定し、そこにICをはんだ付けして固定します。

画像11

少しずつ削っていきながら撮影し、終わってからフリーウエアの動画操作ツールffmpegを使って1つの動画ファイルにまとめると、こんな感じになりました。ちなみにCH340E/Kでは、チップは斜めに載っているようです。

ちなみに、上記の固定方法を試す前に、だいたい同じ位置にあわせながらCH340Gを削りながら撮影した動画だと、フレームごとにすこずつブレてしまいました(とはいえ、これはこれでいい味がある気がする)。

これでもボンディングワイヤの様子はわかりそうですが、各断面の画像を比較明合成という方法で合成するときれいにできるよ、と、写真に詳しい、高校のころの物理部時代からの友人から教えてもらいました。調べてみると、天体写真で星が流れる写真の作成などで使われる方法で、フリーウエアのImageMagick(に付属のconvertコマンド)でもできるようです。

そこで早速、撮影してあった画像を、この比較明合成で合成してみました。

画像15

予想以上にきれいに、「ほぼボンディング・ダイアグラムそのまんま」ができてしまいました。これにパッケージのピン配置を重ね、チップ上のパッドの位置との対応関係を調べると、このようになります。ちなみにVDDとGNDは2本ずつのボンディングワイヤがつながっているようです。(ちなみにチップ写真をみると、ボンディングワイヤがつながっているパッドは、ワイヤの接続痕があるので、使用されているパッドと未使用パッドが区別できます:下の写真の赤丸がボンディング痕があるパッド、青丸が未使用パッド)

画像15

画像14

これから、さきほどのチップ写真でのパッドとの対応を整理すると、以下のようになりました。

画像15

予想通り、電源とUD+/UD-は共通でしたが、それに加えてシリアル通信のデータ線であるTXD/RXDも共通でした。それ以外のDTR#やRTS#等のシリアル通信の制御線は、中のファームウエアで自由に切り替えができるようで、規則性はよくわかりませんでした。

ちなみに、唯一外付け水晶振動子が必要なCH340Gの水晶振動子をつなぐ端子(XIとXO)のパッドは、水晶が不要なCH340E/Kでは、RTS#やDTR#とつながっていました。この理由は、以上の分析からはわかりませんが、内部ファームウエアでXI端子(発振回路の入力端子)の接続状態で、内蔵発振器の有効・無効を切り替えているんではないかと思われます。

ちなみに、「CH340Gでも、中のチップはE/Kと同じなのだから、実は水晶振動子を外しても動作するのでは?」と考えて試してみたのですが、さすがに動作しませんでした。内部のファームウエアで、内蔵発振回路を無効としているのでしょうね。

今回解析しなかったCH340B/C/Tと、今回唯一別チップだったCH340Nを別ルートでの購入を現在手配中で、届き次第、同じように分析したいと思います。

ところでUSB-シリアル変換ICは、中身はUSB機能付きマイコンなんじゃ?という説があって、実際、USB-シリアル変換のMCP2221は、PICマイコンのPIC16F1445と同じチップということを確認したこともあります。CH340シリーズの製造元のWCH社で、それっぽいマイコンを探すと、激安USB機能つきマイコンとしてCH551CH552という製品があって、もしや・・・と思われるのですが、これについては、もうちょっと奥が深い世界だったので、もう少し詳しく調べているところです。これについては、また改めて。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!