パワー・マネージメントICの起動条件を簡単にカスタマイズする方法、最終製品の市場投入時間を短縮
要約
多くの最終アプリケーションでは、複雑さを緩和しつつ、サイズを縮小することが求められます。パワー・マネージメントIC(PMIC:Power Management Integrated Circuit)も、このニーズを満たすための重要な要素になります。実際、PMICを活用すれば大きな効果が得られます。但し、PMICのデフォルトのパワーアップ・シーケンスと出力電圧では、アプリケーションの要件に適合しないことが多いはずです。そのため、パワーアップに関する設定をカスタマイズしなければならなくなるでしょう。しかも、ほとんどの場合、その設定を保存するための手段として不揮発性メモリ(NVM:Nonvolatile Memory)を利用することはできないはずです。本稿では、この問題を解消するための手段として、低消費電力のマイクロコントローラ「MAX28200」を利用する方法を紹介します。同製品は、ファームウェアを一から開発することなく、PMICをパワーアップする際に制御レジスタをプログラムする能力を備えています。また、そのためのツールチェーンも提供されています。本稿では、そのツールチェーンを使用することにより、上述した課題を解決する例を示します。実際、そのツールチェーンを使用すれば、PMICのカスタマイズを簡単に実施できます。しかも、ファームウェアのコーディングが不要なので、開発期間を短縮することが可能になります。
はじめに
ハンドヘルド機器やスマート・カメラなどのポータブル機器では、サイズを抑えつつコスト低減することが非常に重要です。このことから、機器の構成要素としては集積度が高く性能に優れるICを選択しなければなりません。PMICについても、集積度の高い製品である「MAX77714」などが有望な選択肢となります。このICは、複数の降圧コンバータ、LDO(低ドロップアウト)レギュレータ、GPIO(General Purpose Input Output)、リアルタイム・クロック回路(RTC:Real-time Clock)を備えています。このRTCは、アプリケーションに必要なすべての電源電圧を起動するために利用できます。また、MAX77714は柔軟性の高いシーケンサも内蔵しています。それらを使用することにより、アプリケーションの要件に応じてパワーアップ/パワーダウンのシーケンスをカスタマイズすることができます。
MAX77714には、出力電圧やシーケンサに関するいくつかのオプションが用意されています(オプションの違いによって、品番には異なる枝番が付与されています)。それでも、アプリケーションの要件に合致するものが見つかるとは限らないでしょう。そこで、柔軟性の高い代替策が必要になります。本稿で紹介するのは、低消費電力のマイクロコントローラであるMAX28200を使用することで柔軟性を得る方法です。同マイクロコントローラは、電源が投入されるとウェイクアップし、レジスタのプログラムの処理を終えたら節電のためにスリープ状態に移行します。
また、高い集積度のICを必要とするものの、生産数量としては中程度に留まる最終製品も存在するでしょう。そのような製品にも、やはりシンプルなソリューションが必要です。つまり、既製のデバイスを使用し、ニーズに応じてその動作をカスタマイズできるようにする方法が有力な選択肢になるということです。
ハードウェアの設計者にとっては、ファームウェアのコードを自動生成するツールが提供されていることが理想です。その場合、開発の初期段階でソフトウェア・リソースの使用を避けたり、リソースの利用を最適化したりすることができます。
以下では、具体的なアプリケーションの例に基づき、主要なIC(マイクロコントローラ、PMIC)の概要や使い方を紹介していきます。
MAX28200:低消費電力のマイクロコントローラ
ここまでにも何度か触れましたが、本稿では低消費電力のマイクロコントローラとしてRISC(Reduced Instruction Set Computer)ベースのMAX28200を例にとります。同製品は複数のペリフェラルを内蔵していますが、サイズはわずか1.7mm×1.8mmに抑えられています。本稿で例にとるアプリケーションでは、同ICの2つのGPIOピンを、Bit BangモードのI2Cのメインとして使用します。
本稿で例にとるアプリケーションでは、MAX28200の電源電圧を最大3.6Vまでに制限します。そこで、入力電圧が3.6Vを上回る場合に備え、常時オンのLDOレギュレータを介してMAX28200に給電することにします。MAX28200は、I2Cのノードのインターフェースを使用してプログラムすることができます。
MAX77714:高集積化されたPMIC
図1は、MAX77714の内部ブロックを簡略化して示したものです。ご覧のように、このPMICは4つの降圧コンバータ、9つのLDOレギュレータ、8つのGPIO、RTC、柔軟性の高いパワー・シーケンサ(FPS:Flexible Power Sequencer)を備えています。そのため、非常に集積度の高い製品だと言えます。降圧コンバータとLDOレギュレータは、デフォルトのシーケンスと電圧(電源レールに依存)に基づいてパワーアップします。それらのシーケンスと電圧は、I2Cの組み込みインターフェースを使用して変更することも可能です。とはいえ、ほとんどの場合、そのデフォルトのシーケンスと電圧がPMICに接続されるデバイスの要件に適合していることが重要になります。最大定格を上回る電圧が加わると、そのデバイスが破損してしまうおそれがあるからです。
パワーアップ/パワーダウンのシーケンスも重要です。FPGAなどのデバイスを正しく動作させるためには、電源電圧を適切なシーケンスでイネーブル/ディスエーブルにする必要があるからです。図2に、MAX77714に用意されているデフォルトのパワーアップ・シーケンスを示しました。ご覧のように、8つのタイム・スロットが用意されています。どのタイム・スロットにおいても、電圧をイネーブルにすることが可能になっています。なお、MAX77714の最大入力電圧は最大5.5Vです。
図1. MAX77714のブロック図
図2. デフォルトのパワーアップ・シーケンス(MAX77714EWC+の場合)
デバイスのインターフェース
続いて図3をご覧ください。これが本稿で例にとるアプリケーションの中核部です。MAX28200のP0.0とP0.1は、PMICを対象とするI2Cのトランザクションを生成するために使用されます。また、MAX28200のP0.2は、MAX77714のGPIO4を監視します(ステータスの監視)。更に、同P0.3はアナログ・スイッチ(「MAX14689」を使用)を介してI2Cのメイン(MAX28200またはホストのマイクロコントローラ)を選択します。なお、このアナログ・スイッチはオプションであり、パワーアップした後にホストのマイクロコントローラによってPMICを制御しなければならない場合だけ必要になります。
図3. MAX28200/MAX77714/MAX14689/ADP166のインターフェー.
図4は、パワーオン・リセット(POR)の流れを示したものです。その概要は、以下のようになります。
- P0.3をローにアサートし、PMICに対するI2CのメインとしてMAX28200を選択します。
- データ用のレジスタのうち、必要なものに対する書き込みを実行します(レジスタの詳細については後述)。
- P0.3をハイにアサートし、ホストのマイクロコントローラをI2Cのメインとして選択します。このとき、MAX28200はスリープ・モードに移行します。
- GPIO4に接続されているP0.2はMAX28200のウェイクアップに使用します。パワーダウンの際には、レジスタの再プログラムに使用します。
設定が終了したら、GPIO4をハイにアサートしなければならないことに注意してください。
EN0またはEN1の信号を使用してPMICをイネーブルにすると、PMICは新たなシーケンス、電圧の設定に基づいてパワーアップします。
図4. MAX28200のプログラムのフロー
MAX77714のパワーアップ/パワーダウンのシーケンスは、こちらで提供されているソフトウェアを使用することによって定義できます。このソフトウェアは、MAX77714用のGUI(Graphical User Interface)アプリケーションとして実装されています。
レジスタの値は、GUIの「Import/Export」タブを使用することにより、Excelのファイルにエクスポートすることが可能です。
後ほど、GUIをベースとするMAX77714の評価用キットの使用方法を示します。その前に、スタートアップ機能をカスタマイズする上で、どのレジスタが重要なのかを把握しておく必要があります。そこで、以下では、それらのレジスタについて説明することにします。
MAX77714のレジスタ
ここからは、MAX77714の各ブロックに対応するレジスタの詳細について見ていきます。
降圧コンバータ
降圧コンバータに関連するレジスタとしては、SDx_CNFG1、SDx_CNFG2、SDx_CNFG3の3つが用意されています。これらは、各降圧コンバータのスタートアップ電圧、ランプ・レート、動作モードなどを定義するために使用します。
CNFG1は 7~8ビットのフィールドであり、以下のようにして出力電圧を設定することができます。
●VSD0=0.26V+((SD0VOUT[6:0]-1)×10mV)→範囲:0.26V~1.56V
●VSD1=0.26V+((SD1VOUT[6:0]-1)×10mV)→範囲:0.26V~1.56V
●VSD2=0.6V+(SD2VOUT[7:0]×6.25mV)→範囲:0.6V~2.194V
●VSD3=0.6V+(SD3VOUT[7:0]×12.5mV)→範囲:0.6V~3.7875V
CNFG2とCNFG3の両レジスタは、ランプ・レート(2.5mV/マイクロ秒または10mV/マイクロ秒)、アクティブ放電のイネーブル/ディスエーブル、スキップ・モードのイネーブル/ディスエーブル、応答時間、過電圧保護の閾値を選択するために使用します。
LDOレギュレータ
各LDOレギュレータに関連するレジスタとしては、LDO_CNFG1_LxとLDO_CNFG2_Lxの2つが用意されています。
CNFG1を使用すれば、出力電圧を以下のように設定することができます。
● LDO0 とLDO1 は 0.8V ~ 2.375V、VLDO = 0.8V +(VOUT_LDO[5:0]×25mV)
● LDO2、LDO3、LDO5、LDO6、LDO7、LDO8は 0.8V~3.95V、VLDO = 0.8V + (VOUT_LDO[5:0]×50mV)
● LDO4 は 0.4V ~1.275V、VLDO = 0.4V + (VOUT_LDO[5:0]×12.5mV)
CNFG2は、過電圧保護用のクランプ機能のイネーブル/ディスエーブル、自動低消費電力モードのイネーブル/ディスエーブル、アクティブ放電のイネーブル/ディスエーブル、高速/低速スタートアップの選択に使用します。
GPIO
各GPIOに対しては、関連するレジスタとしてCNFG_GPIOxが用意されています。これらにより、向き(GPO、GPI)、出力の種類(オープン・ドレイン、プッシュプル)を選択できます。またGPOについては出力駆動レベル、GPIについては入力駆動レベル/割り込み動作/デバウンスの設定を行うことが可能です。
FPS
シーケンス(FPS)に関する定義は、xxxFPSレジスタによって行います。リニア・レギュレータについてはLDO0FPS~LDO8FPS、降圧レギュレータについてはSD0FPS~SD3FPS、GPIOについてはGPIO0FPS/GPIO1FPS/GPIO2FPS/GPIO7FPS、リセットについてはRSTIOFPSを使用します。これらについては 以下の説明を参考にしてください。
● FPS[2:0]は、パワーダウン・スロット(SLOT0~SLOT7)の設定に使用します。
● FPS[5:3]は、パワーアップ・スロット(SLOT0~SLOT7)の設定に使用します。
● FPS[7:6]は、割り当てられたシーケンサ(FPS0、FPS1)の設定に使用します。
● FPS0は EN0からイネーブルに設定され、FPS1は EN1からイネーブルに設定されます。
パワーアップ/パワーダウンに対応するスロットのサイズは、MSTR_PU_PDレジスタを使用することでカスタマイズできます。
パワーダウン・スロットには MSTR_PU_PD[2:0]、パワーアップ・スロットには MSTR_PU_PD[6:4]を使用します。
設定可能な値は、31マイクロ秒、63マイクロ秒、127マイクロ秒、253マイクロ秒、508マイクロ秒、984マイクロ秒、1936マイクロ秒、3904マイクロ秒です。MAX77714EWC+のデフォルトの値は 3904マイクロ秒です。
GUIによる操作
続いて、図5をご覧ください。これは、GUIを使用してSD0の出力電圧を0.7Vに変更した様子を表したものです。
図5. GUIによるSD0の電圧の変更
また、SD0のパワーアップ/パワーダウンのシーケンスは、スロット2に変更しています(図6)。
図6. GUIによるSD0のスロット番号の変更
図7では、GPIO4をプッシュプル出力として設定しています。また、駆動レベルはハイに設定してあります。
図7. GUIによるGPIO4の設定
最後に、「Import/Export」タブを使用し、変更したレジスタの値をExcelファイルにエクスポートしています(図8)。
図8. GUIによるレジスタの値のエクスポート
上記の操作によって、図9のような.csvファイルが得られます。
図9. MAX77714の.csvファイルのフォーマット
I2Cに、電源の投入時にプログラムしなければならない他のデバイスが接続されていることもあるでしょう。その場合、同じフォーマットを使用して、.csvファイルにコマンドを追加することも可能です。
.csvファイルを基に、I2Cのメインのファームウェアを生成
MAX28200用のGUIベースのソフトウェアはこちらから入手できます。それを使用すれば、以下のような手順によってMAX28200をプログラムすることが可能です。
- .csvファイルを使用して.hexファイルをビルドします(図10)。
- デバイスをプログラムします(図11、図12)。
図10. .csvファイルを基にした.hexファイルのビルド
図11. 選択したスクリプトによるデバイスのプログラム
図12. データ・パターンによるデバイスのプログラム
ソリューションのテスト
MAX77714.hexによってパワーアップ時にプログラムを実行したとします。すると、P0.3がローにアサートされ、MAX77714のI2CのラインがMAX28200に接続されます。そして、SD0のレジスタとGPIO4のレジスタが新しい値によってプログラムされます(図13)。
図13. 新たな値でプログラムされたMAX77714のSD0レジスタとGPIO4レジスタ
この状態でEN0がハイにアサートされてMAX77714がイネーブルになると、SD0がスロット2でパワーアップされ、プログラムされたとおり0.7Vになります。図14(a)はレジスタの値の書き込み前、同(b)はレジスタの値の書き込み後のパワーアップの様子を示したものです。
図14. SD0のパワーアップ。(a)はレジスタの値の書き込み前、(b)はレジスタの値の書き込み後の様子を表しています。
まとめ
MAX28200(マイクロコントローラ)を使用すれば、PMICのパワーアップ時に使用する条件設定を簡単にカスタマイズすることができます。そのプロセスを自動化するためのツールも提供されているので、設計者はコードを一切記述する必要がありません。つまり、マイクロコントローラをブラック・ボックスとして扱うことができます。言い換えれば、その過程でファームウェア設計者の力を借りる必要がないということです。したがって、ソフトウェアに精通していないハードウェア設計者にとって、MAX28200は非常に魅力的なソリューションになります。既成のICを特定のアプリケーション向けにカスタマイズすることで、統合の対象となるデバイスに関する要件を満たすことが可能になるということです。
著者について
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}