マイコンのハードウェア設計全体の留意点はすでに説明しましたが、今回はハードウェア設計で特に注意しなければならないポイントについてさらに詳細に説明します。
1.電源とクロックとリセット
マイコンで最も多いトラブルに関係する要素が、電源とクロックとリセットです。マイコンとしての基本の動作は、電源がオンとなったときに正常にクロックが発振し、プログラム実行が開始され、電源がオフになったら正常に停止するということです。この正常にプログラムが開始し停止するという基本がなかなか難しい課題となります。どのマイコンメーカも苦労している課題で多くの工夫が組み込まれています。
例えばマイクロチップ社の PIC マイコンでは、電源のオン、オフ時には次のような機能が組み込まれています。
1)Power Up シーケンス
電源がオンとなったときの開始シーケンスが図-1のようになっています。
① 電源がオンとなり 1.6V を超えたとき電源オンと認識し、内部をリセット状態とする
このときの電源の立ち上がり速度に条件があり、0.05V/msec 以上の速度で立ち上がることを条件としています。3.3V の電源の場合は、3.3V/0.05 = 66msec 以内に 3.3V に上昇する電源であることが条件です。つまりあまりにも立ち上がりの遅い電源では正常に起動しないようになっています。
また、必ず 0V から電源が立ち上がることが条件になっていて、中途半端な電圧から電源が入った場合には正常に起動しないようになっています。
② 電源オン認識後一定時間(65msec)待ってからリセットを解除し、内蔵クロックの発振を開始する
これによりプログラムの実行を開始する。
③ クリスタル発振子やセラミック発振子を使った外部発振クロックの場合
リセットを解除してからさらに10ビットのカウンタをクロックでカウントアップし、フルカウントになったらプログラムの実行を開始する。これで確かに外部発振器が動作していることを確認する。
このように結構厳しい条件で電源がオンになったことを確認した後、プログラムの実行を開始するようになっていて、これで安定な起動ができるようにしています。
図1 電源オン時のシーケンス

2)Power Down シーケンス(ブラウンアウトリセット)
電源がオフになった場合のシーケンスは図2パターンAのようになっています。元の電源がオフとなっても、マイコンの電源はバイパスコンデンサにより直ぐには電圧低下せず、徐々に下がります。そのままの場合、この低下途中でプログラムが異常動作となり多くの問題を引き起こします。
この問題を回避するために用意された機能がブラウンアウトリセットと呼ばれる機能です。この機能を有効にすると、設定した電圧より電圧が下がった場合、内部をリセット状態としてプログラム実行を停止させます。これで中途半端な電圧状態で異常な動作をしないようにしています。
さらにこの設定電圧には 60mV のヒステリシスが設けられており、いったん低下を検出したら、その後60mV以上電圧が上がらなければオンとは検出しないので、設定電圧付近でバタつくことが無いようになっています。
さらに図2パターンBの場合は、瞬時電圧低下の場合で、いったん設定電圧より下がってリセット状態となったら、電圧が元に戻ってもその後 65msec はリセットを解除しないようになっています。
これで例えば図2パターンCのように瞬時電圧低下が連続的に発生した場合でも、65msec 以内の現象であれば無視され、最後に電圧が戻ってから 65msec 後に初めてリセットが解除されてプログラム実行を開始するようになります
このように電源オフの場合にも、確実に停止するように工夫されています。
しかし、これらのシーケンスを組み込んでもなお避けられない問題があります。
電源オフ後すぐにオンするような場合、設定電圧以下で 65msec 以上後になったあと、電圧が 0V になる前に電源がオンとなると Power Up シーケンスが働きませんから、起動しないという状態になります。バイパスコンデンサの容量が大きく電圧低下に時間がかかるような場合に起きることがあります。
図2 Power Down シーケンス(ブラウンアウトリセット)

これらの機能をさらに強化しようとする場合、「システムリセット IC」とか「システムマネージメント IC」とか呼ばれているICがありますから、これらを利用して強化することも可能です。
2.マイコンのクロック
現在のマイコンでは、どのマイコンでもクロック発振には表1のような種類が使えるようになっています。それぞれに周波数精度や温度変化などに差がありますから、これらを踏まえた上でシステムにどの方式が必要かを決める必要があります。
クリスタル発振子を使う場合、コンデンサが必要になりますが、この容量値により周波数がずれたり、発振が不安定になったりするので注意が必要です。かならず推奨値を使うようにします。
表1 クロック発振の方式と特徴
方式 | 精度と温度特性 | 用途など |
---|---|---|
内蔵発振器 |
PIC マイコンの場合 ±2%(0℃ ~ 60℃) ±5%(-40℃ ~ 125℃) |
汎用だが通信を使う場合精度に注意が必要 |
セラミック発振子 |
偏差 ±0.5% 温度特性 ±0.2%(-20℃ ~ 80℃) |
汎用 コンデンサ内蔵 |
クリスタル発振子 |
許容差 ±30ppm ~ ±50ppm 温度特性 ±20ppm ~ ±30ppm |
高精度通信、高精度タイマ用 外付けコンデンサが必須 |
外部発振器 |
±15ppm(-40℃ ~ 105℃) ±1.5ppm(-40℃ ~ 85℃)高精度品 |
高精度時計機能用 高精度通信用 |
意外と忘れられがちなのが、時計機能を組み込む場合で、月差10秒以下にするには、数ppm以下の高精度クロックが必要となります。
また、シリアル通信ではクロックが速度の精度を決めます。特にUARTの非同期通信を使う場合には、通信速度に対する精度が厳しい場合がありますから、システムの仕様に応じてどのクロックを使うかを決める必要があります。
マイコンにより電源電圧でクロックの最高周波数が制限される場合があります。これはデータシートで確認しておく必要があります。注意が必要なことは、これらの条件にはマージンが大きいことが多く、試作段階で規格外の周波数でも動作してしまうことがあります。量産段階になって規格外が発覚することがあるので要注意です。
3.低消費電力化
マイコンシステムをできる限り低消費電力で使えるようにするためには、次のような項目に留意が必要です。
① 消費電流はクロック周波数に比例して増える
例えば PIC マイコンの場合、消費電流はクロック周波数により表2のように変化します。このようにクロック周波数を低くすれば消費電流を少なくすることができます。
表2 PIC マイコンの消費電流(PIC16LF153xx ファミリ)
クロックモード | 電源電圧 | PIC16LF153xx (Typ) | PIC18FxxQ43 (Typ) |
---|---|---|---|
SLEEP モード | 3.0V | 0.06μA | 0.9μA |
IDLE モード | 0.92mA @16MHz | 1.4mA @16MHz | |
外部発振 | 3.0V | 350μA @4MHz | 640μA @4MHz |
2.6mA @32MHz | 6.7mA @64MHz | ||
内蔵発振 | 3.0V | 1.5mA @16MHz | 2.0mA @16MHz |
2.8mA @32MHz | 6.7mA @64MHz |
② 消費電流は電源電圧にも比例する
一般に電源電圧を下げれば消費電流は比例して少なくなります。したがって、電源電圧もシステムに応じて最適化する必要があります。多くのマイコンは 1.8V でも動作します。
③ 大幅に消費電流を下げるには SLEEP を使う
表2に示すように SLEEP モードではクロックが停止するため、極端に消費電流が少なくなります。したがって消費電流を大きく下げたい場合はこの SLEEP モードを使うことになります。しかし、SLEEP 中はクロックが停止しますからプログラムの実行も停止します。
そこで、通常は間欠動作をさせることになります。常時は SLEEP で停止させておき、割り込み等が発生したタイミングで Wake-Up させてクロックを供給して必要なプログラムを実行し、またすぐ SLEEP に戻るという動作をさせます。これで平均の消費電流を大幅に減らすことができます。
④ 使わない入出力ピンは出力モードにする
多くのマイコンはCMOS構造ですから、入出力ピンを入力モードにしてオープンの状態にすると、わずかですが内部リーク電流が流れます。マイコンのピン数が多い場合、このリーク電流も加算され消費電流に影響を与えるレベルになります。したがって、入力モードのままなら、プルダウンしておく必要があります。出力モードにしておけばリークは発生しません。
⑤ 未使用周辺モジュールは無効化する
使わない内蔵周辺モジュールは無効化することで余分な消費電流を減らすことができます。また、使う場合だけ有効化することもできますから、プログラムで工夫することが必要です、特にアナログを扱う周辺モジュールは一般的に消費電流が大きいですから使う時だけ有効化することで効果的に消費電流を減らすことができます。
4.マイコンのインターフェースの種類
マイコンの設計はインターフェースの設計だと前回説明しました。このインターフェースに使えるマイコン側のインターフェースは表3のように大きく4種類となります。
表3 マイコンのインターフェース
インターフェース種類 | 種類 | 用途 |
---|---|---|
デジタル入出力 | オンオフ | スイッチ入力、LED 制御 |
パルス | トリガ出力、カウンタ入力、計測 | |
PWM(パルス幅変調) | 調光制御、モータ回転数制御 | |
アナログ入出力 | アナログ入力 | センサ |
アナログ出力 | 音の出力、電圧制御 | |
シリアル通信 | UART | パソコン接続、センサ、Wi-Fi モジュール |
I2C | センサ、液晶表示器 | |
SPI | センサ、表示器、EEPROM、SD カード | |
高機能通信 | CAN | 車載用通信、ロボット |
USB | パソコンとの接続/デバイス接続 | |
LAN | インターネット | |
無線(Wi-Fi/BLE) | パソコン、スマホとの接続、インターネット |
これらのインターフェースを使う場合の留意点について次回以降で説明していきます。
PDF 資料請求
特別連載_MCU_4:マイコンのハードウェア設計留意点
著者プロフィール
後閑 哲也 Tetsuya Gokan
経歴 |
1971年 東北大学卒業後 大手通信機メーカにて各種の制御装置を開発 2003年 有限会社マイクロチップ・デザインラボ設立 |
---|---|
現在の活動 |
|
書籍 (技術評論社) |
|
特別連載「マイコン(MCU)システム開発入門編」リンク
- 第1回: 組み込みシステムのシステム設計とは
- 第2回: ハードウェア設計方法
- 第3回: ソフトウェア設計方法
- 第4回:マイコンのハードウェア設計留意点(10月公開予定)
- 第5回:デジタル入出力インターフェースの設計留意点(11月公開予定)
- 第6回:アナログ入出力インターフェースの設計留意点(12月公開予定)
- 第7回:シリアル通信概要と UART を使う場合の留意点(1月公開予定)