ATMELのAVR32マイコンで遊んでみたくなりました。Arduinoなどに使われているAVRマイコンの32ビット版です。
AVR32
入手しやすい型番
手軽に手に入るのは、AT32UC3B064と、AT32UC3B0512で、秋月電子で買えます。この2つの違いはメモリのサイズです。
- AT32UC3B064 :フラッシュROM64kB RAM16kB
- AT32UC3B0512:フラッシュROM512kB RAM96kB
となっています。AT32UC3Bのラインナップとしては、この他に、AT32UC3B0128、AT32UC3B0256があります。
秋月電子では、一番メモリが少ないタイプと、一番多いタイプが売っているようですね。価格はAT32UC3B064が620円、AT32UC3B0512が1180円(2019年3月現在)でした。今回はとりあえず動かしてみたいだけなので、メモリの小さい方のAT32UC3B064を買ってみました。
マイコンボードを考える
変換基板の用意
AVR32は、0.5mmピッチの64ピンのICパッケージです。そのままでは実験できないので、変換基板も一緒に買いました。100円です。
必要な周辺回路を考える
AVR32のマイコンを動作させるにあたり、必要な周辺回路を考えます。AVR32はEVK1100やEVK1101といった評価ボードが過去に販売されていました。EVK1100は高機能版、EVK1101はシンプル版のようです。
EVK1101評価ボード
今回は、EVK1101の評価ボードの回路図を参考にします。さらにATMELのアプリケーションノート「Atmel AVR32837: AVR UC3 D Schematic Checklist」がとても参考になります。機能ごとに必要な回路が載っていて、すべて確認すれば正しく動作するというものです。
電源
AVR32のコアは1.8Vで動作しますが、AVR32に1.8Vのレギュレータが内蔵されているので、3.3Vの単一電源で動作させることができます。今回、USBから給電したいので、3.3Vのレギュレータでマイコンの電源を作ります。
USBの電源電圧は5Vですが、ハブを経由したり、電流をたくさん利用するような機器がつながっている場合、4V程度まで低下してしまいます。そこで、なるべく低い電圧まで動作する(低ドロップアウト)レギュレータを使いたいと思います。低ドロップアウトのレギュレータは数多くありますが、極端にすごいのがADP3338です。
最大電流1Aまで出力できるレギュレータなのですが、その時のドロップアウト電圧が190mAだけで済みます。要するに供給する電圧が3.49Vまで低下しても、出力電圧が3.3Vに保たれます。これも秋月電子で売っています。
ポリスイッチの保護も加えて電源回路をこのように設計しました。
パスコン
AVR32は電源ピンがたくさんあります。
- 1.8Vレギュレータの3.3V電源ピン(VDDIN)
- IOポートの3.3V電源ピン(VDDIO1〜3)
- ADコンバータの3.3V電源ピン(VDDANA)
- ADコンバータのリファレンス用3.3Vピン(ADREF)
- 1.8レギュレータの出力ピン(VDDOUT)
- コア用の1.8V電源ピン(VDDCORE1〜3)
- PLL回路用の1.8V電源ピン(VDDPLL)
全部で11ピン。これらすべてのピンに対して、コンデンサを2種類から3種類接続する必要があります。ピンによってつける容量も変わってきて、以下のようにつなぎます。
- 1.8Vレギュレータの3.3V電源ピン(VDDIN):33nF+100nF+4.7uF
- IOポートの3.3V電源ピン(VDDIO1〜3):33nF+100nF
- ADコンバータの3.3V電源ピン(VDDANA):33nF+100nF
- ADコンバータのリファレンス用3.3Vピン(ADREF):ADDANAに直結
- 1.8レギュレータの出力ピン(VDDOUT):470pF+2.2uF
- コア用の1.8V電源ピン(VDDCORE1〜3):2.7nF+33nF+100nF
- PLL回路用の1.8V電源ピン(VDDPLL):2.7nF+33nF+2.2uF
かなりの数が必要です。EVK1101の回路図ではこうなっています。
これは手配線では大変そうです。
クロック
発振回路が内蔵されているので、水晶発振子とコンデンサを取り付けます。アプリケーションノートによるとコンデンサは22pFです。
水晶は最大16MHz。評価ボードでは12MHzが付いていますが、高速に動作させたいので16MHzにしようと思っているのですが、12MHzでもPLLで最大クロックで動作できるのかな?これは後で考えることにします。
リセット回路
パワーオンリセットの回路です。これも10kΩと0.1uFを使った普通の回路になっています。
JTAG
AVRマイコンはISPを利用してプログラムを書き込みますが、AVR32はJTAGになっています。JTAGに必要な信号TCK,TDI,TDO,TMSのうち、TDI,TDO,TMSはPA0〜PA02のIOピンと共有になっています。
JTAGのTCKが、EVK1101の回路では10kΩでプルアップされています。
あと、4番のピンには3.3Vが供給されますが、0.1uFのコンデンサが付いていますね。JTAGピンの7番ピンと8番ピンはEVK1101の回路図とアプリケーションノートによると未接続のようです。
JTAGのコネクタは普通のサイズのボックスコネクタではなく、ハーフピッチの10ピンのボックスヘッダとなっています。
写真右のISPのコネクタに比べ、左のJTAGコネクタは半分のピッチでとても小さいです。1.27mmピッチのボックスコネクタが入手できなければ、1.27mmピッチのピンヘッダでも代用できます。方向を間違えると壊れる恐れがあるので、できればボックスヘッダがいいですね。
USB
AVR32はUSBポートがあります。データ線には39Ωの抵抗を入れます。
2019.3.3追記
39Ωの抵抗はピンにできるだけ近くに配置します。
追記終わり
USB DFU Bootloaderという機能を使ってUSB経由でプログラムが書き込めるっぽいのですが、いまいちよくわかっていないので、とりあえずアプリケーションノートに従って接続しておきます。
2019.3.3追記
最初にご紹介したアプリケーションノートのもう少し新しいドキュメントが見つかりました。
Atmel AVR32715: AVR UC3B 32-bit Microcontroller Schematic Checklist
これによると、USB DFU Bootloaderを利用するためには、リセット時にPA13ピンをLowにしておく必要があります。推奨回路はリセット回路と同じく、10kΩでプルアップと0.1uFのコンデンサとスイッチです。
コンデンサがついているということは、電源投入時は自動的にLowになってしまい、書き込んだプログラムが起動するのではなく、DFU Bootloaderが起動してしまいそうですが、これでいいのでしょうか?
EVK1101評価ボードの回路では、ジョイスティックの押し込みスイッチにつながっていて、プルアップ抵抗はありますが、コンデンサはついていません。
また、コンデンサがつながっていることで、プログラムでPA13を出力ピンとして設定して使う場合に問題が発生してしまいます。ポートがON,OFFと変化する時にポートとコンデンサ間に電流が多く流れてしまうので、ポートにダメージを与える可能性があります。
以上のことから、基板にはこのコンデンサを取り付けれられるように、パターンは用意しておきますが、実装しないでおきたいと思います。
追記終わり
結構複雑だった
マイコンを動かすための周辺回路を調べていたら、たくさんの部品を外付けしないといけないことがわかりました。arduinoのAVRマイコンのように、水晶1個とコンデンサ数個くらいだと思っていましたが、大量のパスコンが必要でした。ピッチ変換基板とユニバーサル基板の組み合わせで回路を作ったら、うまく動かないかもしれません。
KiCadで回路設計
もしかしたら、動かないかもしれない手配線をするくらいなら、専用の基板を作ってしまう方が、動く可能性が高く、しかも作るのが楽です。ホットプレートを使ったリフローも簡単にできるようになりました。
そこでKiCadで基板を設計することにしました。必要な部品と構成はリストアップできているので、回路図にするだけです。
大きな四角がAVR32マイコンです。その右側に大量のコンデンサがあります。
KiCadでアートワーク
部品の位置を決めて、重要度の高い電源線と水晶、USBの配線などを手動で配線します。残りの重要性の低い配線はオートルーターにお任せです。そして、オートルーターが配線してくれた結果を修正します。グランドプレーンをなるべく広く取れるよう配線をまとめたり、ビアの位置を変えたり。あと忘れがちなのが、ビアとシルクが重なりを修正することです。ビアにシルクが重なると、そこは印刷されないので、視認性が悪くなります。読めないことはないので、別に忘れてもいいのですが。
KiCadは3Dで完成イメージが見ることができていいですね。部品やシルクの位置関係の把握がとてもしやすいです。
割いているページ数は少ないですが、今のバージョンのKiCad5の使い方、基板の発注までがぎゅっと凝縮して書いてあります。
前のバージョンKiCad4ですが、2018年12月号よりもっと詳しく書いてあります。古いのでバックナンバーもないかもしれません。
最近KiCad5にバージョンアップしたので、まだKiCad5で書かれた本がほとんど無いですね。
SeeedStudioに発注
いつものSeeedStudio Fusion PCBに基板を発注します。他にも発注したい基板があるので、それとまとめて注文しようと思います。
2019.3.3追記
DFU BootLoarderのためのスイッチが追加になり、部品の配置が変わってしまったので、配線をし直しました。オートルーターのあるおかげでやり直しも手軽にできますね。
SeeedStudio FusionPCBの$4.9で作れる基板の最大サイズが10cm×10cmです。AVR32の基板を2枚面つけするとちょうど幅10cmだったので、面つけして発注しました。
リフローする時に使うステンシルも一緒に発注しました。
ステンシルがあればクリーム半田を印刷できるので、実装作業が格段に効率化できます。
ガーバーデータの確認はgerbvがおすすめです。複数のレイヤーをオーバレイで合成して確認ができます。KiCadのガーバービュアーだとベタグランドの裏の配線が見れなかったりするので、各レイヤーが透けて合成して見れるのは便利です。windowsだとインストールが簡単なのですが、macだと手間必要です。
届くのが待ちどうしいです。2,3週間くらいかかるので、しばらく待ちたいと思います。
追記終わり
2019.3.16 基板が届きました!つづきはこちら↓↓
コメント