皆さんこんにちは。えいたです(^^)/
この記事では「シリアル通信におけるプログラム書き込み回路の設計法」に言及します。
この記事はUSBモードにおいての失敗談として記してます(>_<)
usbコード(typeB)でプログラム書き込みをしますが
自作マウスを製作する際
USB書き込み回路のデザインに困る方もいらっしゃると思います。
そんな方にまずこの記事を通して
その分野の簡単な説明と実際に書き込み回路の設計法と注意点をここに記していきます。
結論を申し上げると
「USBモードよりUARTモードが最適」というかんじです(笑)
マイコンにおける通信

まずこの分野において大きく”シリアル通信”と”パラレル通信”があります。
シリアル通信は細いコードで
D+とD-の二つの線がbitの伝送を行います。
パラレル通信はただ線が多いので一度にたくさんbitを送れます。
昔はパラレルが主流でした。シリアルよりbitを大量に伝えれたんです。
しかし今は通信速度が上がりシリアルで対応可能な社会になりました。
あとパラレルは線の数の分だけbitの読み込みタイミングがずれることにより処理が大変です。
結果としてシリアル通信が現代では主に使われてます。
簡単な用語説明
そのシリアル通信ですが、種類があります。
- UARTモード
- I2Cモード
- SPIモード
- USBモード
UARTモードは非同期式のものです。この四つの中では一番通信速度が遅いですが回路設計では簡単です。
I2Cモードは高速通信を可能にするもので、モニタと接続する際に用います。
SPIモードも高速通信ができるもので, 機器間通信の際に使用します。
USBモードも高速通信をするんですが, 電力供給(VbusやGND)もできるものです。
プログラム書き込みにはUARTモードが確実です。
プログラム書き込み回路の設計法(USBモード)

この章ではUSBモード用の設計法を紹介します。
私の失敗作のマイコンを用いて説明します。(結論は認識エラーでプログラム書き込みはできませんでした。)
大体はUARTモードで設計をしてらっしゃる方が多いようです。
UARTはこれといった設計法はありません。(ちょっと誤解を招く発言です。)
SPI通信もraspberry piとArudino間は導線でつなげるだけだったりです。
I2C通信はプルアップ抵抗をSDAとSCLにつけてモニタなどと通信します。
USBモードにおいては以下のようになります。
ここでVbusですが、5V電源なので3.3Vと通電させるのはまずいです。
ですのでレギュレーターで5Vから3.3Vに降圧させればつなげれます。
あの×した部分に以下のような設計を加えました。
このようにするとVbusをうまく降圧させて機器の3.3Vとつなげることができます。
設計における注意点【配線長】

皆さん!
シリアル通信においてUSBモードは慎重になるべき点があります。
私の失敗作のマイコンで説明します。
D+(上の写真では緑の線)とD-(上では青の線)の配線長差は2.5mm以下にさせましょう!
そして極力ビアやスルーホールを通さずに目標するピン場所や半導体に送り届けてください(>_<)
なぜなら, この二つの信号は互いのデータの伝送をクロックとして高速で行き来しているので
少しでも波長のずれが生じるとデータ送信に支障をきたします。
上の写真は20mmほど差があるように見えます(笑)
詳しくはRenesasnのHigh-Speed USB2.0 基板設計ガイドラインで
注意点などが他にも記載されています。
ちなみになんとかして2.5mm以下にしようと導線を別で配線させようとしてました(笑)
しかしすでにスルーホールの2つに介してるので
正しい信号が出てるか怪しいところです。
実際にUSBコードでつなげても認識エラーが出るので難しいですね。
上の写真の下にあるのは市販のUSB-UART変換器です。
結論はUARTモードを採用するほうがプログラム書き込みには最適そうです。
ちなみにこの基板はエッチング技術で作りました。
作り方は【エッチングによるプリント基板の自作】で紹介しています。
まとめ
この記事では「シリアル通信におけるプログラム書き込み回路の設計法」に言及しました。
この記事はUSBモードにおいての失敗談として記してます(>_<)
usbコード(typeB)でプログラム書き込みをしますが
自作マウスを製作する際
USB書き込み回路のデザインに困る方もいらっしゃると思います。
そんな方にまずこの記事を通して
その分野の簡単な説明と実際に書き込み回路の設計法と注意点をここに記しました。
結論を申し上げると
「USBモードよりUARTモードが最適」というかんじです(笑)