書籍概要

ARMマイコンで電子工作 SAMファミリ活用ガイドブック

著者
発売日
更新日

概要

SAMファミリはARM Cortex M0+をコアとしたARMマイコンの1つで,Microchip Technology社が発売している32ビットマイコンです。PICマイコンの統合開発環境であるMPLAB X IDEがSAMファミリでも使えるようになり,8ビットマイコンのように手軽に開発できるようになりました。
本書では,MPLAB X IDEに組み込んで使えるフレームワーク「Harmony v3」を使って,できるだけ簡単に高機能なプログラムを作成する方法を解説しています。
Harmony v3を使えば,入出力ピンやタイマ,シリアル通信,ADコンバータなどの周辺モジュールはもちろん,USBゲスト/ホスト,ファイルシステムを使ったアプリケーションまで,GUIベースで簡単に作成できます。
掲載した作例は,各機能を試すためのトレーニングボードや,SDカードを使ったデータロガー,センサのデータをクラウドに送信するIoTセンサ,リチウムイオン電池充電マネージャ,蛍光表示管時計です。
SAMファミリを使って,高性能な32ビットマイコンを体感してみましょう!

こんな方におすすめ

  • ARMコアの32ビットマイコンでなにか作ってみたい方
  • 自作デバイスでSDカードやUSBホスト/ゲストを使いたい方

著者から一言

本書「はじめに」より

マイクロチップ社は2016年にアトメル社を買収したことで,SAMファミリというARMアーキテクチャの32ビットマイコンを手に入れました。これでマイクロチップ社も遂にARMアーキテクチャを手に入れたことになります。
32ビットマイコンとしては既存のPIC32ファミリと併存することになり,使い分け等多少混乱しています。開発環境もこれまでのSAMファミリ用と併存することになりました。
しかし,開発環境の整備はかなりの速さで進められ,既存のPICマイコン用の開発環境であるMPLAB X IDEという統合開発環境の中にSAMファミリも統合されました。それだけでなくCコンパイラも統合され,さらに周辺モジュール用のライブラリや多くのミドルウェアを統合したフレームワークとして「Harmony v3」も一緒にリリースされました。これらを使うとまるで8ビットマイコンと同じような手軽さで32ビットマイコンが使えるようになります。
本書では,このHarmony v3を使って,できるだけ簡単にしかも高機能なプログラムを作成する方法を解説しています。
Harmony v3を使うとマイコン内部のアーキテクチャなどの詳細を知る必要がなく,内蔵モジュールについても何ができるかさえ理解していれば使うことができます。もちろんレジスタなどは全く見る必要がなくなります。本書でもレジスタの解説はしていません。
SAMファミリの中でも最も使いやすいSAM Dファミリをベースにして,その内蔵周辺モジュールの使い方を網羅しました。さらにFATファイルシステムやUSBスタックなどのミドルウェアを使ったプログラムの作り方も解説しています。
SAMファミリはより高性能なファミリがたくさんあり,Linuxを動かせるレベルのものまで用意されています。このようなより高性能な機能を実現するための基礎として,本書が少しでも読者諸氏の役に立てば幸いです。
32ビットマイコンの演算能力や処理速度は8ビットマイコンに比べると圧倒的です。メモリも大容量ですから,これまでできないとあきらめていたことも,できるようになるかも知れません。ぜひ32ビットマイコンの高性能を読者ご自身で試してみてください。

目次

第1章 SAMファミリの概要

  • 1-1 SAMファミリとは
  • 1-2 ARMアーキテクチャの種類と特徴
  • 1-3 SAMファミリの種類と特徴

第2章 SAM D21ファミリのアーキテクチャ

  • 2-1 SAM D21ファミリの特徴
    • 2-1-1 SAM D21ファミリの特徴
    • 2-1-2 SAM D21ファミリのデバイスの種類
  • 2-2 全体構成とバスマトリクス
    • 2-2-1 全体構成
    • 2-2-2 プロセッサコア部
    • 2-2-3 バスマトリクス(Bus Matrix)
  • 2-3 メモリ構成と書き込みインターフェース
    • 2-3-1 メモリ構成
    • 2-3-2 書き込みインターフェース
  • 2-4 電源供給方法
  • 2-5 クロックシステムとSYSCTRL
    • 2-5-1 クロックシステム
    • 2-5-2 PM(Power Manager)
    • 2-5-3 SYSCTRL(System Controller)
    • 2-5-4 動作クロック周波数
  • 2-6 割り込みシステム
    • 2-6-1 ベクタ割り込み
    • 2-6-2 割り込み優先順位
  • 2-7 WDT
  • 2-8 DMAモジュール
    • 2-8-1 DMAモジュールの概要
    • 2-8-2 DMAモジュールの内部構成と動作
    • 2-8-3 データ転送方法
    • 2-8-4 DMAデスクリプタ
  • 2-9 入出力ピン(GPIO)の構成
    • 2-9-1 入出力ピンとは
    • 2-9-2 入出力モジュールの内部構成
  • 2-10 イベントシステム
    • 2-10-1 イベントシステム(EVSYS)とは
    • 2-10-2 イベントシステムの内部構成と設定
  • 2-11 周辺モジュールとピン割り付け

第3章 トレーニングボードの製作

  • 3-1 トレーニングボードの全体構成と仕様
    • 3-1-1 全体構成
    • 3-1-2 トレーニングボードの仕様
  • 3-2 主要部品の概要
    • 3-2-1 キャラクタ液晶表示器の概要
    • 3-2-2 カラーグラフィック液晶表示器の概要
    • 3-2-3 日本語フォントIC の概要
    • 3-2-4 複合センサ
    • 3-2-5 マイクロSDカード
    • 3-2-6 Wi-Fi モジュール
  • 3-3 回路設計組み立て
    • 3-3-1 回路設計
    • 3-3-2 部品表
    • 3-3-3 組み立て

第4章 プログラム開発環境とインストール方法

  • 4-1 プログラム開発環境概要
    • 4-1-1 基本のプログラム開発環境
    • 4-1-2 開発用ソフトウェアの概要
  • 4-2 MPLAB X IDEとMPLAB XC32の入手とインストール
    • 4-2-1 ファイルのダウンロード
    • 4-2-2 MPLAB X IDEのインストール
    • 4-2-3 MPLAB XC32コンパイラのインストール
    • 4-2-4 MPLAB X IDEの外観
  • 4-3 MPLAB Harmony v3のインストール
    • 4-3-1 MPLAB HarmonyとMPLAB Harmony Configurator 3の関係
    • 4-3-2 MHCのインストール
    • 4-3-3 Harmony v3本体のダウンロード

第5章 MHCを使ったプログラム開発方法

  • 5-1 Harmonyを使ったプログラムの構成
    • 5-1-1 基本のプログラム構成
    • 5-1-2 RTOSを使った場合の構成
  • 5-2 例題プログラムの機能
  • 5-3 MPLAB X IDEによるプロジェクトの作成
    • 5-3-1 MPLAB X IDEでプロジェクトの作成
    • 5-3-2 Harmony v3の更新手順
    • 5-3-3 既存プロジェクトの開き方
    • 5-3-4 プロジェクトの終了の仕方
  • 5-4 MHCによる周辺モジュールの設定
    • 5-4-1 クロックの設定
    • 5-4-2 タイマTC3の設定
    • 5-4-3 ADコンバータの設定
    • 5-4-4 SERCOM3の設定
    • 5-4-5 GPIOの設定
    • 5-4-6 コード生成
  • 5-5 ユーザーアプリ部の作成
    • 5-5-1 ユーザーアプリ部の作成
    • 5-5-2 コンパイルと書き込み
  • 5-6 PICkit 4 による実機デバッグ
    • 5-6-1 デバッグの開始
    • 5-6-2 デバッグオプション機能
    • 5-6-3 デバッグ時のナビゲーション機能

第6章 周辺モジュールの使い方

  • 6-1 入出力ピン(GPIO)と外部割り込み(EIC)の使い方
    • 6-1-1 MHCによる入出力ピンの使い方
    • 6-1-2 例題による入出力ピンの使い方
    • 6-1-3 グループ制御の使い方
    • 6-1-4 外部割り込み(EIC)の構成と設定項目
    • 6-1-5 例題による外部割り込み(EIC)の使い方
  • 6-2 タイマ(TCx)の使い方
    • 6-2-1 TCxタイマの特徴
    • 6-2-2 タイマ/カウンタモードの構成と設定項目
    • 6-2-3 例題によるタイマモードの使い方
    • 6-2-4 コンペアモードの構成と設定項目
    • 6-2-5 例題によるコンペアモードの使い方
    • 6-2-6 キャプチャモードの構成と設定項目
  • 6-3 制御用タイマ(TCCx)の使い方
    • 6-3-1 制御用タイマ(TCCx)の特徴
    • 6-3-2 TCCxの内部構成と設定項目
    • 6-3-3 パルス出力モードの詳細
    • 6-3-4 設定項目と生成される関数
    • 6-3-5 例題によるTCCxの使い方
  • 6-4 RTCの使い方
    • 6-4-1 RTCの概要
    • 6-4-2 32ビットタイマモードの構成と設定項目
    • 6-4-3 16ビットタイマモードの構成と設定項目
    • 6-4-4 例題によるRTCカウンタモードの使い方
    • 6-4-5 クロックカレンダモードの構成と設定項目
    • 6-4-6 例題によるRTCクロックカレンダモードの使い方
  • 6-5 SERCOMの機能と特徴
    • 6-5-1 SERCOMの機能と特徴
    • 6-5-2 SERCOMのピン割り付け
  • 6-6 SERCOM USARTの使い方
    • 6-6-1 内部構成と設定
    • 6-6-2 自動生成される関数の使い方
    • 6-6-3 例題によるSERCOM USARTの使い方
  • 6-7 SERCOM I2Cの使い方
    • 6-7-1 SERCOMのI2Cモードの機能と特徴
    • 6-7-2 I2Cマスタモード時の内部構成と設定項目
    • 6-7-3 例題によるI2Cの使い方
  • 6-8 SERCOM SPIの使い方
    • 6-8-1 SERCOMのSPI モードの機能と特徴
    • 6-8-2 SPI マスタモードの内部構成と設定項目
    • 6-8-3 例題によるSPI の使い方
  • 6-9 ADコンバータの使い方
    • 6-9-1 ADコンバータの概要
    • 6-9-2 ADコンバータの内部構成と設定項目
    • 6-9-3 例題によるADコンバータの使い方
  • 6-10 アナログコンパレータの使い方
    • 6-10-1 アナログコンパレータの概要
    • 6-10-2 アナログコンパレータの内部構成と設定項目
  • 6-11 DAコンバータの使い方
    • 6-11-1 DAコンバータの概要
    • 6-11-2 DAコンバータの内部構成と設定項目
    • 6-11-3 例題によるDAコンバータの使い方
  • 6-12 DMAとイベントの使い方
    • 6-12-1 Direct Memory Access(DMA)とイベント
    • 6-12-2 例題によるDMAとイベントの使い方
    • 6-12-3 例題によるDMAのリンク転送の使い方

第7章 ミドルウェアとドライバの使い方

  • 7-1 ミドルウェアとドライバ
    • 7-1-1 ミドルウェアの種類
    • 7-1-2 Harmonyのパッケージ
    • 7-1-3 ドライバの種類と構成
  • 7-2 Timeライブラリの使い方
    • 7-2-1 Timeライブラリとは
    • 7-2-2 タイマサービス用API関数
    • 7-2-3 例題によるTIMEライブラリの使い方
  • 7-3 ファイルシステムの使い方
    • 7-3-1 ファイルシステムの概要
    • 7-3-2 提供されるAPI関数の使い方
    • 7-3-3 例題によるファイルシステムの使い方
  • 7-4 USBライブラリの使い方(CDCスレーブ)
    • 7-4-1 USB(Universal Serial Bus)ライブラリの概要
    • 7-4-2 例題によるCDCデバイスクラスの使い方
  • 7-5 USBライブラリの使い方(MSDホスト)
    • 7-5-1 例題によるUSBホストライブラリの使い方

第8章 実際の製作例

  • 8-1 データロガーの製作
    • 8-1-1 データロガーの全体構成と仕様
    • 8-1-2 プログラムの製作
    • 8-1-3 動作確認
  • 8-2 IoT センサの製作
    • 8-2-1 IFTTTと製作する機能仕様
    • 8-2-2 IFTTTのアプレットの作成
    • 8-2-3 プログラムの製作
    • 8-2-4 動作確認
  • 8-3 充電マネージャの製作
    • 8-3-1 充電マネージャの全体構成と仕様
    • 8-3-2 充電制御ICの概要
    • 8-3-3 回路設計
    • 8-3-4 基板製作
    • 8-3-5 基板単体のテスト
    • 8-3-6 プログラムの製作
    • 8-3-7 動作確認
  • 8-4 蛍光表示管時計の製作
    • 8-4-1 蛍光表示管時計の全体構成と仕様
    • 8-4-2 蛍光表示管とは
    • 8-4-3 回路設計
    • 8-4-4 基板製作
    • 8-4-5 基板単体のテスト
    • 8-4-6 プログラムの製作
    • 8-4-7 動作確認

付録A マイコンのはんだ付け方法

索 引

参考文献

サポート

ダウンロード

本書で作成したデバイスのプログラムや演習ボードの回路図・パターン図・実装図を以下のリンクからダウンロードできます。ファイルの内容については,本書P.383をご覧ください。

ダウンロード
SAMFamily.zip

なおそれぞれのファイルは,ご自身の責任において使用してください。使用した如何なる結果についても,著者および技術評論社は一切の責任を負いません。
本データは著作権法上の保護を受けています。収録されているファイルの一部あるいは全部について,いかなる方法においても無断で複写,複製,再配布することは禁じられています。 以上のことをご確認,ご了承の上,データをご利用下さい。

商品一覧