ARM Cortex-M0搭載 PIC32CMでLチカ
はじめに
PIC32CMはマイクロチップ・テクノロジー社が販売しているARM Cortex-M0搭載のマイコンです[1]. このマイコンの特徴は2016年に買収されたAtmel社のSAMファミリをベースに開発されているためSAM C2xシリーズとピン配置などで互換性がある事です. また, 機能面はSAM C2xシリーズとほぼ同等ですがモータ制御機能などが追加されています[2].
開発環境
開発に使用するソフトウェアは下記のとおりです。導入方法については参考文献の[3], [4]をご参照ください.
・MPLAB Harmony v3:ソースコード ジェネレータ
開発に使用するハードウェアは下記のとおりです. 今回はマイコン単品を購入してPIC KIT4で書き込みをおこなう方法で開発を行いましたが, PIC32CMの評価用ボードを使用すればPIC KIT4は必要ありません[5].
・PIC32CM1216MC00048:マイコン本体
・PIC KIT4:デバッガ/プログラマー
PIC KIT4とPIC32CMの接続
PIC KIT4とPIC32CMの通信はCORTEX SWD方式でおこなわれます[6]. SWDで使用するポートは下記の通りです[7].
プロジェクトファイル作成
MPLAB X IDE, MPLAB XC32, MPLAB Harmony V3が導入されている事を前提に説明をします. File→New Project...を選択するとプロジェクト選択画面が出るので「32-bit MPLAB Harmony 3 Project」を選択します.
「Framework Selection」については変更の必要がないので次へを選択し, 「Project Settings」でプロジェクトファイルの名前を記入して次へを選択します.
「Configuration Settings」で「Target Device」を選択します. 使用するデバイスは「PIC32CM1216MC00048」なのでそれを選択します.
プロジェクトファイルの作成は以上で完了です。
次にPIC KIT4を使用するために設定の変更をおこないます. PCにPIC KIT4を接続した状態でProduction → Set Project Configuration → Customize...を選択します. 「Connected Hardware Tool」の設定が標準では「Simulator」になっているので「PICkit 4-SN:BURxxxxxxx」に変更します.
Harmony v3を使用したコード生成とプログラムの作成
Tools→ Embedded → MPLAB Harmony 3 Configuratorを選択します. 「MPLAB Harmony Launcher」,「Configuration Database Setup」の画面が表示されるのでどちらも「Launch」を選択します. するとMPLAB Harmony Configuratorのウィンドウが表示されます.
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」の画面が表示されるので設定した内容が正しく反映されていることを確認して×ボタンで消してください.
次にLEDを点滅させるため, タイマ割り込みの設定をおこないます.
「Available Components」のPeripherais → TC → TC0を選択し, Project Graphに表示されるTC0を選択します.
「Select Prescaler」をGCLK_TC/1024, 「Time」を1,000に設定し, 「Enable Timer Period Interrupt」にチェックを入れます.
以上でHarmony v3を使用した設定は完了です.
「Generate Code」をクリックしプログラムを生成します.
次にプログラムの作成をおこないます.
「main.c」のファイルに赤枠で囲った部分のコードを追加します. プログラムの詳細は参考文献[8]で解説されているので, 詳細を知りたい方はそちらをご確認ください.
以上でプログラムの作成は完了したのでマイコンに書き込みLEDが点滅することを確認できれば完成です.
おわりに
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.