前回に引き続き、テキサス・インスツルメンツ(TI)のMSP430™ LaunchPadバリュー・ライン開発キットを用いて、実際のマイコンのハードウェア、ソフトウェアの開発方法を体験しながら学びます。前回は、マイコンの省電力モードへの移行と復帰について説明しました。その中で、メインクロック(MCLK)は停止するがサブクロック(SMCLK、ACLK)は停止しない省電力モードがあると説明しました。MSP430に限らず、最近のマイコンは複数のクロックを目的に応じて使い分けるようになっています。今回は、クロックの種類と使い分けを説明します。
周波数や精度が異なるクロックが必要な場合
まず、システムではCPUクロックの他に、周波数が異なるクロックが必要な場合があります。代表的なのは、時計用のクロックや通信用のクロックです。
クロックの周波数を1/2、1/4、1/8、…、1/2n、…と下げていくのは、簡単な分周回路を使ってできます。また、タイマ/カウンタを用いれば、任意の1/Nを作るのも簡単です。また、最近のマイコンでは、クロックの周波数を2n倍やN倍に上げることができるPLL回路を内蔵するものも多くなってきました。
図 異なる周波数のクロックを作る例
UART(パソコンのシリアルポートと同じ調歩同期式通信)やSPI、I2Cといった低速のシリアル通信では、通信用のクロックはあまり高い精度が必要ないので、CPUクロックから簡単に生成できます。マイコン内蔵の通信機能を使う場合、通信モード設定レジスタで通信速度を設定すれば、必要なクロックを内部で生成してくれることが多いでしょう。
通信用クロックでも、USBになると、48MHzで許容誤差±0.05%(±500ppm)というような高精度のクロックが必要になってきます。水晶振動子を使ってUSBに合わせた周波数と精度のCPUクロックを生成するか、高精度の外部USBクロックを供給します。
時計の場合は、長期間にわたって遅れや進みを生じないように水晶振動子を使うことが多いでしょう。簡単な分周でちょうど1秒(1Hz)を作れる、32.768kHzの水晶振動子が安価に入手できます。
省電力モードとクロック
省電力モードを持つマイコンでは、一般に
- CPU回路の動作(命令実行)を停止する
- 動作していないCPU回路へのクロック供給を停止する
- 必要のない周辺回路の動作を停止する
- 動作していない周辺回路へのクロック供給を停止する
- 誰も使用していないクロックは発振器を停止する
などの方法で、システムの消費電力を削減していきます。CMOS LSIはL→H、H→Lのスイッチング時に大きな電力を消費するので、回路の動作停止やクロック供給停止は省電力の効果が大きいのです。
MSP430の場合、CPUに供給するためのメインクロック(MCLK)、周辺回路に供給するためのサブクロック(SMCLK)と補助クロック(ACLK)に分けて整理してあります。周辺回路用が2つあるのは、1つずつ段階的に停止できるようにするためです。
また、内蔵クロック源として、DCO(デジタル制御高速発振器)、VLO(低速発振器)、LFXT1(低速水晶発振器)の3つがあります。
DCOは高速クロック用発振器で、省電力のために発振停止/再開の制御ができます。発振停止状態から1μs以下で高速にウェイクアップできます。MCLKとSMCLKはDCOをクロック源として選べます。
VCOは低消費電力で低速の発振器です。LFXT1は、時計用の水晶振動子を使用できる低速で高精度の発振器です。MCLK、SMCLK、ACLKは、いずれもVCOとLFTX1をクロック源として選べます。
MSP430は、3つのクロックと3つの発振器をうまく組み合わせて段階的に省電力できるように、Active(動作)モードとLPM0〜LPM4の5段階の省電力モードを持っています。
モード | MCLK | SMCLK | ACLK | DCO | VLO | LFTX1 |
---|---|---|---|---|---|---|
Active | ○ | ○ | ○ | ○ | ○ | ○ |
LPM0 | ○ | ○ | ○ | ○ | ○ | |
LPM1 | ○ | ○ | ○ | ○ | ||
LPM2 | ○ | ○ | ○ | |||
LPM3 | ○ | ○ | ○ | |||
LPM4 | ○ | ○ | ||||
表 MSP430の省電力モードとクロック供給/停止 |
Activeモードでは、すべてのクロックが供給され、CPUも動作しています。
LPM0では、CPUが動作停止し、MCLKの供給も停止します。しかし、それ以外のクロックはすべて供給され、DCOも発振を継続しています。
LPM1では、MCLKの停止に加えて、DCOも発振停止します。SMCLKは供給を継続しますが、この場合はDCOをクロック源に選べません。
LPM2では、MCLKとSMCLKは供給を停止し、DCOも発振停止します。
LPM3では、MCLKとSMCLKは供給を停止し、DCOは完全に動作停止します。
LPM4では、MCLK、SMCLKに加えてACLKも供給を停止します。すべてのクロックは停止して、ポートI/OとRAMデータの保持だけを行います。
例えば、CPUの動作中だけタイマを使い、CPUの停止中はタイマも停止するなら、タイマにはMCLKを供給します。
CPUの停止中もタイマを動作させておきたい場合、タイマにはSMCLKを供給して、省電力モードはLPM0かLPM1にします。ただし、LPM1の場合はDCOも停止するので、SMCLKのクロック源にDCOを用いる場合はLPM0にします。
さらに、省電力モード中も時計だけは動作させておきたいなら、時計にはACLKを供給します。ACLKのクロック源はVLOでもLFTX1でも良いのですが、精度を上げるには水晶振動子を使ってLFTX1で発振させます。
※MSP430はTexas Instruments Incorporatedの商標です。その他すべての商標および登録商標はそれぞれの所有者に帰属します。
MSP430™ LaunchPadバリュー・ライン開発キットはこちらから購入できます。
TIのマイコン製品の詳細はこちら
提供:日本テキサス・インスツルメンツ株式会社
アイティメディア営業企画/制作:EDN Japan 編集部/掲載内容有効期限:2014年3月31日
Copyright © ITmedia, Inc. All Rights Reserved.