技術者見習いのメモ書き

電子工作や神社めぐりなどの趣味の話を中心に書いていきます。 Twitter:@hakura_riku

ARM Cortex-M0搭載 PIC32CMでLチカ

はじめに

PIC32CMはマイクロチップ・テクノロジー社が販売しているARM Cortex-M0搭載のマイコンです[1]. このマイコンの特徴は2016年に買収されたAtmel社のSAMファミリをベースに開発されているためSAM C2xシリーズとピン配置などで互換性がある事です. また, 機能面はSAM C2xシリーズとほぼ同等ですがモータ制御機能などが追加されています[2].

開発環境

開発に使用するソフトウェアは下記のとおりです。導入方法については参考文献の[3], [4]をご参照ください.

・MPLAB X IDE統合開発環境

・MPLAB XC32:32bit用C言語コンパイラ

・MPLAB Harmony v3:ソースコード ジェネレータ

開発に使用するハードウェアは下記のとおりです. 今回はマイコン単品を購入してPIC KIT4で書き込みをおこなう方法で開発を行いましたが, PIC32CMの評価用ボードを使用すればPIC KIT4は必要ありません[5].

・PIC32CM1216MC00048:マイコン本体

・PIC KIT4:デバッガ/プログラマー

PIC KIT4とPIC32CMの接続

PIC KIT4とPIC32CMの通信はCORTEX SWD方式でおこなわれます[6]. SWDで使用するポートは下記の通りです[7].

f:id:hakura03:20210725124111p:plain
PIC KIT4の配線

f:id:hakura03:20210725135530j:plain
接続表

プロジェクトファイル作成

MPLAB X IDE, MPLAB XC32, MPLAB Harmony V3が導入されている事を前提に説明をします. File→New Project...を選択するとプロジェクト選択画面が出るので「32-bit MPLAB Harmony 3 Project」を選択します.

f:id:hakura03:20210725134219j:plain
プロジェクトファイル作成1

「Framework Selection」については変更の必要がないので次へを選択し, 「Project Settings」でプロジェクトファイルの名前を記入して次へを選択します.

f:id:hakura03:20210725134554j:plain
プロジェクトファイル作成2

「Configuration Settings」で「Target Device」を選択します. 使用するデバイスは「PIC32CM1216MC00048」なのでそれを選択します.

f:id:hakura03:20210725135134j:plain
プロジェクトファイル作成3

プロジェクトファイルの作成は以上で完了です。

次にPIC KIT4を使用するために設定の変更をおこないます. PCにPIC KIT4を接続した状態でProduction → Set Project Configuration → Customize...を選択します. 「Connected Hardware Tool」の設定が標準では「Simulator」になっているので「PICkit 4-SN:BURxxxxxxx」に変更します.

f:id:hakura03:20210725140612j:plain
プロジェクトファイル作成4

Harmony v3を使用したコード生成とプログラムの作成

Tools→ Embedded → MPLAB Harmony 3 Configuratorを選択します. 「MPLAB Harmony Launcher」,「Configuration Database Setup」の画面が表示されるのでどちらも「Launch」を選択します. するとMPLAB Harmony Configuratorのウィンドウが表示されます.

f:id:hakura03:20210725142339j:plain
Harmony v3 設定1

f:id:hakura03:20210725142402j:plain
Harmony v3 設定2

f:id:hakura03:20210725143945j:plain
Harmony v3 設定3

MPLAB Harmony ConfiguratorのTools→Pin Configurationを選択すると「Pin Settings」の画面が表示されるので, 今回はPA00を使用する設定をおこないます. 「Function」をGPIO, 「Direction」をOUT, 「Custom Name」をGPIO_PA00_LEDに設定します. 「Custom Name」については必ずしも変更する必要はありません.

編集が完了したら×ボタンで「Pin Settings」の画面を消してください. 「Pin Settings」の画面を消すと「Pin Table」と「Pin Diagram」の画面が表示されるので設定した内容が正しく反映されていることを確認して×ボタンで消してください.

f:id:hakura03:20210725144638j:plain
出力ピンの設定

f:id:hakura03:20210725145258j:plain
出力ピンの設定2

f:id:hakura03:20210725145322j:plain
出力ピンの設定3

次にLEDを点滅させるため, タイマ割り込みの設定をおこないます.

「Available Components」のPeripherais → TC → TC0を選択し, Project Graphに表示されるTC0を選択します.

「Select Prescaler」をGCLK_TC/1024, 「Time」を1,000に設定し, 「Enable Timer Period Interrupt」にチェックを入れます.

f:id:hakura03:20210725180031j:plain
タイマ割り込み設定

以上でHarmony v3を使用した設定は完了です.

「Generate Code」をクリックしプログラムを生成します.

f:id:hakura03:20210725180552j:plain
プログラム生成

次にプログラムの作成をおこないます.

「main.c」のファイルに赤枠で囲った部分のコードを追加します. プログラムの詳細は参考文献[8]で解説されているので, 詳細を知りたい方はそちらをご確認ください.

以上でプログラムの作成は完了したのでマイコンに書き込みLEDが点滅することを確認できれば完成です.

f:id:hakura03:20210725181024j:plain
プログラム

f:id:hakura03:20210725200626g:plain
動作確認結果

おわりに

PIC32CMを使ってみて「Harmony v3」に慣れれば効率的なプログラミングが可能だと感じました.

しかし, 「Harmony v3」を使用せずに「Standalone Project」で作成しようとすると, レジスタ関連を定義するヘッダファイルをすべて自分で探して参照する必要があり非常に面倒です. 従来のPICマイコンのように「xc.h」を読み込めばプログラムを作成できるような手軽さはなく「Harmony v3」の使用が前提となっている部分は改善してほしいと感じました.

参考文献

[1] MICROCHIP, ‘‘PIC32CM1216MC00048, ” https://www.microchip.com/wwwproducts/en/PIC32CM1216MC00048.

[2]CQ出版社, ‘‘トランジスタ技術2021年6月号, ” https://toragi.cqpub.co.jp/magazine/magazine-577/.

[3]サヌキテックネット, ‘‘MPLAB X IDEのインストール(Windows編), ” https://sanuki-tech.net/pic/development/install-mplab-x-ide/section/1/.

[4]MPLAB X IDE, XC16,XC8 コンパイラの使い方, ‘‘MPLAB Harmony v3 (1) ダウンロード, ” http://blog.livedoor.jp/mplab/archives/1076133535.html.

[5] MICROCHIP, ‘‘PIC32CM MC00 Curiosity Nano Evaluation Kit, ” https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/EV10N93A#additional-summary.

[6] MICROCHIP, ‘‘PIC32CM MC00 Family Data Sheet, ” https://ww1.microchip.com/downloads/en/DeviceDoc/PIC32CM-MC00-Family-Datasheet-DS60001638B.pdf.

[7] MICROCHIP, ‘‘MPLAB® PICkit™ 4 インサーキット デバッガ ユーザガイド, ” http://ww1.microchip.com/downloads/jp/DeviceDoc/50002751C_JP.pdf.

[8]MPLAB X IDE, XC16,XC8 コンパイラの使い方, ‘‘MPLAB Harmony v3 (9) 割り込み関数の記述(コールバック関数), ” http://blog.livedoor.jp/mplab/archives/1077465285.html.