2chシリアル変換ICFT2232Hの回路構成
UART2つを1つのUSB端子でまとめたいな~と思って調べましたがあんまり記事が出てこなかったので自分で書くことにしました。
FT2232Hについて
FT2232HはFTDI社から販売されているUSBコントローラです。
1つのUSB端子で2chのシリアル通信(UART)ができます。
また、それだけでなくMPSSE(Multi-Protocol Synchronous Serial Engine)
という機能が搭載されています。これはSPIやJATGなど、UART以外のプロトコルを変換して通信することができます。
今回は単純に2chシリアル変換ICとしての回路構成を主に書きます。
回路図
2chのシリアル変換として用いる場合、回路図は以上のようになりそこまで難しい構成にはなりません。
また、本回路図にはEEPROMがありますが設定等を保存しておく必要がある場合にのみ使用します。コンフィグを保持しない場合は実装する必要はありません。
各ピンについて
電源系統
電源はメインの電源として3.3Vの電源とICが生成する1.8Vの電源を使用します。
- VCCIO,VPHY, VPLL : 3.3V電源入力
- VCORE : I/Oの電源電圧(1.8V)
- REF : 電流の基準ピン?です。12KΩの抵抗をはさんでGNDに接続します。
GNDはGNDとAGNDがありますが、ロボコン用途ではそこまで考える必要性を感じないので共通にしています。 また、VPHYとVPLLにはインダクタを入れる必要があります。回路図には値が書いてありませんが、記憶が正しければ実装時は4.7uHのインダクタを入れました。
USB関連
- USBDP : USBデータ+(D+)
- USBDM : USBデータ-(D-)
UART ch1
- ADBUS0 : TX1
- ADBUS1 : RX1
- ADBUS2 : RTS#
- ADBUS3 : CST#
- ADBUS4 : DTR#
- ACBUS3 : RXLED#
- ACBUS4 : TXLED#
UART ch2
- BDBUS0 : TX2
- BDBUS1 : RX2
- BDBUS2 : RTS#
- BDBUS3 : CST#
- BDBUS4 : DTR#
- BCBUS3 : RXLED#
- BCBUS4 : TXLED#
UARTが2ch分あるので、それぞれのチャンネルを明確にしておかないと接続を間違えます。 Kicadで設計をしている場合はそれぞれのチャンネルをラベルで管理するとわかりやすいと思います。
その他
- RESET# : リセット端子(Lowでリセット)
- OSCI : 12MHz水晶発振器入力
- OSCO : 12MHz水晶発振器出力
- EECS : EEPROM チップセレクト
- EESK : EEPROM クロック
- EEDATA : EEPROMデータ
なんとなくデータシートに載ってた通りにEEPROMもつけましたが、これは必要ないと思います。 たぶんJTAGとかを使うときに必要なんだと思います(無知)
実装時の注意点
電源系統
インダクタについて
- VPHYとVPLLにはインダクタ(ノイズ対策)が必要
- できるだけICの近くに配置
- フェライトビーズでも代用可能だと思います
USB配線
- 配線長は揃える
- USB端子のシールドはなにが正解かわかりません。この間もTwitterで活発な議論()が行われていたので言及しません
クロック系
- 水晶発振器
- 12MHzの水晶発振器は必ずICの近くに配置
- 負荷容量は使用する水晶に合わせて選定(一般的に12pF程度)
- 発振器の下のGNDべタ銅は分断する
PCB設計時の注意点
- レイヤー構成
- 最低でも4層基板を推奨
- 電源層とGND層を内層に配置
- 信号線は表裏に配置
2層基板でもできないことはないと思いますがどうしてもベタが浮くので4層基板を推奨します。 JLCPCBでは4層基板の価格が2層基板とあまり変わらないのでおすすめです。
- グランドプレーン
- デジタルグランドとアナロググランドは1点で接続
- USB周りのグランドは重点的に配置
- ビアを多めに配置してインピーダンスを下げる
デメリット
単純に配線がめんどくさい
- UARTが2つ載ってるような回路はそもそもが大規模な回路なので、配線の難易度が高くなります。
- それぞれのチャンネルを明確にしておかないと接続を間違えます。
高い
まとめ
2chのシリアルを一つのUSB端子でまとめることができるので、2つのシリアル通信を使う場合はぜひ使ってみてください。