秋月で売っているAtmelのARMマイコンATSAMD21G18AをWindows環境で使いたいと思います。
目次
Atmel SAM D21 とは?
Atmelから発売されてるARM Cortex-M0+マイコン,ATSAMD21G18Aは,Arduino Zero,M0,M0+にも搭載されており,TQFP48ピンのものが秋月で530円で入手できます。
Specの比較
Atmel | ATSAMD21G18A | ATMEGA1284P | ATMEGA328P |
---|---|---|---|
Package・ピン | TQFP48 | DIP40・TQFP48 | DIP28・TQFP32(0.8) |
CPU | 32bit ARM Cortex-M0+ | 8bit AVR | 8bit AVR |
Maximum Clock | 48MHz | 20MHz | 20MHz |
Voltage | 1.62~3.63V | 1.8~5.5V | 1.8~5.5V |
Flash | 256KB | 128KB | 32KB |
SRAM | 32KB | 16KB | 2KB |
SPI・I2C・UART | あわせて×6 | ×1・×1・×2 | それぞれ×1 |
USB | ×1 | なし | なし |
PWM | ×20 | ×6 | ×6 |
ADC | ×14 | ×8 | ×6(DIP)・×8(TQFP) |
Price | ¥530 | ¥750(DIP)・¥780(TQFP) | ¥250(DIP)・¥280(TQFP) |
開発環境
今回はWindows上でAtmel SAMの開発環境を整えていきたいと思います。
プログラムの書き込みについて
ATSAMD21のチップは,SWD/JTAGでのプログラミング・デバッグに対応しています。工場出荷状態はブートローダは書き込まれていないため,ArduinoのようにUART・USB経由のプログラムの書き込みはできません。
本来はAtmel純正のデバッガAtmel-ICE
を使うべきですが,¥7,000前後するので敷居が高いです。幸運にも,ATSAMD21はARMマイコンであるので,Atmel純正でなくても汎用のデバッガがあれば事足ります。今回はLPC11U35をCMSIS-DAPアダプタ化したもの(お値段¥850)を使います。
LPC11U35 マイコンボードキット をCMSIS-DAPアダプタ化する
秋月で発売されているこのボードは,三端子レギュレータやUSBコネクタが実装済みなのですぐにCMSIS-DAPアダプタとして使うことができます。
上のリンクの中段に『●トラ技ARMライタのファーム・ウェア』という項目があるので,そこからダウンロードしたファームウェアを11U35ボードに書き込んでください。
デバッガ(11U35ボード)とターゲット(ATSAMD21G18A)の接続は以下に倣ってください。
Debugger(11U35 Board) | Target(ATSAMD21G18A) |
---|---|
+3.3V(29Pin) | VDD |
GND(1Pin・30Pin) | GND |
PIO0_7(3Pin) | SWCLK(45Pin) |
PIO0_8(4Pin) | SWDIO(46Pin) |
PIO0_2(23Pin) | Reset(40Pin) |
ファームウェアを書き込めたら,11U35 BoardのResetボタンを押すとHID入力デバイスとしてPCに認識されます。HIDデバイスなのでドライバのインストールが不要です。
必要なソフトのインストール
Atmel Studio 7
インストール方法については省略します。インストールの際,下のような画面が出ると思います。この時,SMART ARM MPU
にチェックを入れて居ない場合,次の作業が必要になります。
メニュー > Tools > Device Pack Manager
を選ぶと,下のようなウィンドウが出てくると思います。ATSAMD21G18Aを使うためには,最低限,CMSIS
とSAMD21_DFP
はインストールしておく必要があります。
OpenOCD
Atmel純正のデバッガ以外はAtmel Studioで用いる事ができないので,プログラムの書き込みのためにOpenOCDをインストールします。
OpenOCDは,ソースコードを自分でビルド・コンパイルするのが一般的ですが,Windows環境下ではそれが容易ではないので,ビルド済みのものを拝借するのが簡単だと思います。
以下のサイトからインストーラをダウンロードしてインストールしてください。
ATSAMD21 の配線
電源周りの配線は,データシートのP.1017にしたがいましょう。ピンの配置はP.25にあります。
https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Atmel-42181-SAM-D21_Datasheet.pdfcdn.sparkfun.com
Debuggerとの接続は先に示したとおりです。
プロジェクトの作成とコンパイル・プログラムの書き込み
プロジェクトの作成
Atmel Studioでプロジェクトを作成する際の注意点は,Deviceの選択をミスるなって事くらいです。
コンパイル
F7
キーを押せばBuild All
されます。
プログラムの書き込み
OpenOCDで以下のコマンドを†コマンドプロンプト†で実行すれば,プログラムを書き込めます。
> cd "C:\Program Files\GNU MCU Eclipse\OpenOCD\0.10.0-3-20170826-1813-dev\scripts" > "..\bin\openocd.exe" -f "interface\cmsis-dap.cfg" -f "target\at91samdXX.cfg" -c "program ファイル名.bin verify reset; shutdown"
しかし,書き込みのたびに†コマンドプロンプト†を立ち上げていてはストレスがすぐ限界値に達してしまうため,.bat ファイルを作成してAtmel Studioに登録します。
以下の内容のProgram-ATSAMD.bat
を適当なフォルダ(ドキュメント\Atmel Studio\7.0
あたりが良いだろう)に作成してください。なお,OpenOCDのバージョンによってパス名が変わってくるので適宜変更してください。
"C:\Program Files\GNU MCU Eclipse\OpenOCD\0.10.0-3-20170826-1813-dev\bin\openocd.exe" -f "C:\Program Files\GNU MCU Eclipse\OpenOCD\0.10.0-3-20170826-1813-dev\scripts\interface\cmsis-dap.cfg" -f "C:\Program Files\GNU MCU Eclipse\OpenOCD\0.10.0-3-20170826-1813-dev\scripts\target\at91samdXX.cfg" -c "program %1 verify reset; shutdown"
次に,Atmel Studioを開いてメニュー > Tools > External Tools...
を開いて,以下のように設定しましょう。
- Title ……
Program ATSAMD
とでもしておきましょう。 - Command …… 右端の
...
をクリックして,先ほど作成したProgram-ATSAMD.bat
を選びます。 - Arguments ……
$(TargetName).bin
- Initial directory ……
$(TargetDir)
これで,以後プログラムを書き込みたい時はメニュー > Tools > Program ATSAMD
をクリックするだけでできます。