茱萸note

電子工作の備忘録と旅行の記録

ARM マイコン 電子工作

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

投稿日:2017年9月9日 更新日:

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


目次


Atmel SAM D21 とは?

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

akizukidenshi.com

Specの比較

AtmelATSAMD21G18AATMEGA1284PATMEGA328P
Package・ピンTQFP48DIP40・TQFP48DIP28・TQFP32(0.8)
CPU32bit ARM Cortex-M0+8bit AVR8bit AVR
Maximum Clock48MHz20MHz20MHz
Voltage1.62~3.63V1.8~5.5V1.8~5.5V
Flash256KB128KB32KB
SRAM32KB16KB2KB
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アダプタとして使うことができます。

http://toragi.cqpub.co.jp/tabid/707/Default.aspxtoragi.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をクリックするだけでできます。

-電子工作
-, ,

関連記事

【Ubuntu】【上級者向け】EFIシステムパーティションを作成する

「空っぽのSSD・HDD・USBメモリにUbuntuをインストールしたい!」といった人に向けて、空っぽのSSD・HDD・USBメモリにEFIシステムパーティションを作成する方法を説明します。

Online Storageの画像を貼る

Online Storage上にアップロードした画像をBlog等に貼る方法を考察します。

権限のない環境でvirtualenvを入れる

sudoが使えない、root権限のない環境でvirtualenvを入れます。

Arduinoもどき

Arduinoは普通に買うと高いので、互換品を作ってしまいます。

【上級者向け】Ubuntuをデュアルブートする《その1:既にWindowsが入っているSSD・HDDにUbuntuを入れる》

既にWindowsがインストールされているSSD・HDDに追加でUbuntuをインストールする方法です。上級者向け。