Atmel SAM D21 を使ってみる(1)

秋月で売っているAtmelのARMマイコンATSAMD21G18AをWindows環境で使いたいと思います。



index


Atmel SAM D21 とは?

Atmelから発売されてるARM Cortex-M0+マイコン,ATSAMD21G18Aは,Arduino Zero,M0,M0+にも搭載されており,TQFP48ピンのものが秋月で530円で入手できます。

akizukidenshi.com

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アダプタ化する

akizukidenshi.com

秋月で発売されているこのボードは,三端子レギュレータやUSBコネクタが実装済みなのですぐにCMSIS-DAPアダプタとして使うことができます。

toragi.cqpub.co.jp

上のリンクの中段に『●トラ技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を使うためには,最低限,CMSISSAMD21_DFPはインストールしておく必要があります。

OpenOCD

Atmel純正のデバッガ以外はAtmel Studioで用いる事ができないので,プログラムの書き込みのためにOpenOCDをインストールします。

OpenOCDは,ソースコードを自分でビルド・コンパイルするのが一般的ですが,Windows環境下ではそれが容易ではないので,ビルド済みのものを拝借するのが簡単だと思います。

以下のサイトからインストーラをダウンロードしてインストールしてください。

gnu-mcu-eclipse.github.io

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をクリックするだけでできます。