2016/10/20

PIC32MMGPLを試す

追記 後発のGPMシリーズが発表された。上位互換になっていて、DMA,I2Cなどが追加されている。 https://www.microchip.com/design-centers/32-bit/architecture/pic32mm-family

PIC32MM0064GPL028を入手してみた。 32ビットシリーズとしては、アナログが強化され、独立した周辺モジュールが多数実装されていて、低消費電力設計になっている。
ラインナップが省ピン構成のみなのと、低価格なところはとっつきやすくて良さそう。
(エラッタリストも少なくていいね!)

 ROM/RAMの容量が控えめだが、CPUコアはmicroAptiv M14k UCコア(FPUなし)を搭載し、命令セットがmicroMIPSになった。 一応メモリ消費は抑えられている模様。
M14kコアなので、製造プロセスはMZと同じなのかな・・・?

足回りはアナログが強化された8ビットシリーズに似ている。 モーター制御向けの波形生成回路、プログラマブルロジックセル(CLC)や、12ビットADC、電圧リファレンスが内蔵された。

 その他、FlashがECC対応だったり、個別にUDID(ユニークデバイスID)を持っていたりと、スマート機器や産業向けの機能が盛り込まれている。

個人的に、HLVDというプログラマブルな電圧検出モジュールが気になっている。 18Fシリーズなどから搭載されていた機能で、バッテリの等の非安定化電圧のスレッショルド検知にADCを使わずに済む。

早速、SSOP28なものをサンプル購入したので、下駄基板を設計してelecrowに発注した。
プロトタイプ用なので、最小限の電源まわりの実装と、水晶発振子のパターンを実装した。

書き込み出来ないんだぜこれ
 基板はきれいに仕上がったけれど、MCLR端子を外に引き出し忘れるという重大な設計ミスが発覚。  仕事疲れでMPが減っているときに趣味設計に走る場合、根本設計のポカミスに注意が必要だ((泣)。
とはいえ小規模試作にしか使わないので、UEWを一本延ばす必要が生じるだけではある・・・。


早速MPLAB Code Configurator(MCC)でピン設定を行い、レジスタをセットしてみた。
Lチカしようとおもい、うっかり、8ビット版での癖で__delay_ms()を呼び出すコードを書いてコンパイラに怒られてしまった。 PIC32ではコアタイマーを利用して実装する必要がある。 これもMCCで設定して関数を生成しておく。
INTOSCを8MHzで動作させ、GPIOをH/Lしてるときの平均消費電流は3mAほどだった。

追記: 最初気が付かなかったが、PIC32MMでは周辺機能にI2Cが載っていない。I2C接続の機器をつなごうとする場合は気を付ける必要がありそうだ。 一応、32MMのリソース一覧の中にはBitbangのためのコードが公開されている。
 http://www.microchip.com/wwwproducts/en/PIC32MM0064GPL028    "Code Examples" 

 最近はお仕事でもμAレベルの回路を実装する機会がでてきて、中古で校正済み34401Aを入手して、電流値デバッグをしている。 省エネトレンドの、高クロックでタスクを短時間に終わらせる、みたいな設計思想を試行錯誤していきたい。