(58)【調査した分野】(Int.Cl.,DB名)
前記AD変換部は、前記アナログ信号が所定の閾値に達すると、前記起動要求信号を出力し、前記第1のクロック信号が供給されると、前記第1のクロック信号を用いて前記アナログ信号をデジタルデータに変換する
請求項1に記載のマイクロコントローラ。
【背景技術】
【0002】
近年、機器の消費電力の低減化の要求が高まっている。例えば、UART通信機能を搭載したマイクロコントローラでは、
図22の動作タイミングチャートに示すように、任意のタイミングで来るUARTデータの受信のため、常時チップステートをRUNの状態にしなければならない。つまり、マイクロコントローラにおいて、データ受信のためのUARTデータ受信部及びその受信データの処理のためCPUへのクロック供給が常に必要であった。この結果、UARTデータ受信の有無に関わらず多くの電力を消費していた。
【0003】
このような問題を解決するため、特許文献1のような技術がある。
図23に特許文献1で開示されているUARTデータの受信システム1のブロック図を示す。
図23に示すように、受信システム1は、データ受信部2と、クロック信号供給制御手段3と、発振器4と、割込み制御部5と、CPU6とを有する。データ受信部2は、FIFOメモリ7を有する。
【0004】
データ受信部2は、HALT(節電期間)中に受信信号のスタートビットを検出するとUARTデータのデータ受信を開始する。また、スタートビットを検出したデータ受信部2は、起動要求信号をクロック信号供給制御手段3に、割込み信号を割込み制御部5に出力する。このことにより、割込み制御部5、CPU6にクロック信号が供給され、割込み制御部5、CPU6が動作を開始する。
【0005】
ここで、HALTであっても発振器4が停止していないことからデータ受信部2は、クロック信号供給制御手段3を経由したクロック信号に応じて動作している。このクロック信号を動作クロックとして、データ受信部2はFIFOメモリ7に、受信したUARTデータを格納する。
【0006】
クロック信号供給制御手段3は、データ受信部2から起動要求信号を受信すると、割り込み制御部5及びCPU6へクロック信号を供給する。
【0007】
割込み制御部5はデータ受信部2からの割込み信号を受信すると、他の周辺回路からの割込み信号との調停を行った後、CPU6へ割込み信号を出力する。
【0008】
CPU6は、クロック供給が再開されると、データ受信部2のFIFOメモリ7内の全データを読み出す。そして、CPU6は、その後データ受信部2の受信バッファにあるUARTデータを直接読み出す。このような動作により、CPU6は、受信システム1が受信したUARTデータを漏らさず処理することが可能となる。
【0009】
受信システム1の動作を説明するフローチャートを
図24に示す。まず、HALT(節電期間)である場合(S1YES)、データ受信部2へクロック信号が供給され、CPU6へのクロック信号供給を停止している(S2)。データ受信部2がUARTデータの受信を開始すると起動要求信号がクロック信号供給制御手段3に送信され(S3YES)、CPU6へクロック信号が供給される(S4)。
【0010】
図25に受信システム1の動作タイミングチャートを示す。
図25に示すように、時刻t1以前では、受信システム1が構成されているチップのチップステートがHALTになっている。この状態では、割込み制御部5、CPU6にクロック信号が供給されておらず、
図22のように常時動作している場合に比べ、消費電流が低減される。
【0011】
時刻t1で、UARTデータを受信すると、割込み制御部5、CPU6にクロック信号が供給され、割込み制御部5、CPU6が動作を開始する。このため、チップステートもRUN状態となる。
【0012】
UARTデータが送信されない時刻t2以降では、チップステートがHALTとなる。この状態では、時刻t1以前と同様、割込み制御部5、CPU6にクロック信号が供給されなくなるため消費電流が低減される。
【0013】
また、関連技術として、その他にも特許文献2〜4のようなものがある。特許文献2には、発振制御部が発振イネーブル信号で水晶発振器を制御し、その発振イネーブル信号がロウレベルとなると水晶発振器が停止する技術が開示されている。また、特許文献3には、パリティエラーが検出されるとUARTが再送信要求信号を送信し、その後、UARTが動作を停止し、UART信号がロウレベルとなり待機状態となる技術が開示されている。更に、特許文献4には、所要のビット数を計数して受信完了を検出するまに、いずれの基本パターンとも異なる受信入力信号が入力される場合、これを異常と判定する技術が開示されている。
【発明を実施するための形態】
【0020】
以下、実施の形態1について、図面を参照しながら詳細に説明する。この実施の形態1は、UARTの受信システムを有するマイクロコントローラに適用したものである。
図1に本実施の形態にかかるマイクロコントローラ100のブロック構成を示す。
【0021】
図1に示すように、マイクロコントローラ100は、データ受信部101と、クロック信号供給制御部102と、発振器103と、割込み制御部104と、CPU105とを有する。
【0022】
データ受信部101は、カウンタ111と、制御回路112と、受信バッファ113とを有する。データ受信部101は、UARTデータの受信を開始し、スタートビットを検出すると、起動要求信号をクロック信号供給制御部102へ出力する。また、正常にUARTデータの受信が完了すると受信完了割り込み信号を割込み制御部104へ出力する。但し、UARTデータの受信エラーが発生した場合は、クロック信号供給制御部102への起動要求信号の出力を停止する。
【0023】
また、データ受信部101は、カウンタ111を用いて、発振器103の発振安定時間によって発生するサンプリングタイミングの誤差を補正する。
【0024】
発振器103は、クロック信号供給制御部102からの起動要求信号を受信すると動作を開始し、クロック信号をクロック信号供給制御部102へ供給する。また、クロック信号供給制御部102からの起動要求信号が停止した場合、チップステートがSTOPならば動作を停止する。このため、クロック信号供給制御部102へのクロック信号の供給も停止する。
【0025】
なお、チップステートには、RUN、STOP、SNOOZEがあるものとする。チップステートがRUNの場合は、CPU105、データ受信部101、割込み制御部104にクロック信号が供給され、そのクロック信号に応じて、各々が動作している状態とする。また、チップステートがSTOPの場合は、発振器103が停止しており、データ受信部101、割込み制御部104、CPU105にクロック信号が供給されない状態とする。チップステートがSNOOZEの場合は、CPU105にクロック信号が供給されないが、クロック信号がデータ受信部101及び割り込み制御部104にはクロック信号が供給される状態とする。
【0026】
クロック信号供給制御部102は、制御回路121を有する。データ受信部101から起動要求信号を受信すると、クロック信号供給制御部102は、その起動要求信号を発振器103へ出力する。上述したように、起動要求信号に応じて発振器103が起動し、起動後に発振器103はクロック信号の供給を開始する。そして、クロック信号供給制御部102は、発振器103から供給されたクロック信号をデータ受信部101及び割込み制御部104へ、それぞれクロック信号CLK1、CLK2として供給する。更にその後、受信完了割込み信号を受信すると、CPU105へクロック信号CLK3の供給を開始する。これら起動要求信号、受信完了割込み信号、クロック信号の各信号の入出力制御は制御回路121により制御される。
【0027】
割込み制御部104は、データ受信部101から受信した受信完了割込み信号をクロック信号供給制御部102とCPU105へ出力する。なお、この割込み制御部104の機能は、データ受信部101の制御回路112が有するようにしてもよい。
【0028】
CPU105は、クロック信号供給制御部102からクロック信号が供給されると、データ受信部101の受信バッファ113の保持するデータを読み出し、UART受信データの処理を開始する。
【0029】
図2、
図3を用いて、マイクロコントローラ100の基本動作を説明する。まず、
図2に示すように、データ受信部101は、UARTデータを受信しデータのスタートビットを検出すると、例えばハイレベルの起動要求信号を出力する。クロック信号供給制御部102の制御回路121は、その起動要求信号を発振器103に出力し、発振器103がクロック信号の供給を開始する。なお、図中の実線の矢印は信号が入力されたことを、点線の矢印は信号が入力されていないことをそれぞれ意味する。
【0030】
クロック信号供給制御部102は、発振器103からのクロック信号を、クロック信号CLK1としてデータ受信部101に、クロック信号CLK2として割り込み制御部104に供給する。そして、データ受信部101がクロック信号CLK1を動作クロックとして、割り込み制御部104がクロック信号CLK2を動作クロックとして動作を開始する。
【0031】
なお、
図2に示すように、発振器103が動作を開始し、データ受信部101及び割り込み制御部104にクロック信号が供給されるが、CPU105にはクロック信号が供給されないためチップステートがSNOOZEとなる。
【0032】
次に、
図3に示すように、UARTデータの受信を完了すると、データ受信部101が受信完了割込み信号を割込み制御部104へ出力する。また、データ受信部101は、起動要求信号の出力を停止する。割込み制御部104は、データ受信部101からの受信完了割込み信号をCPU105及びクロック信号供給制御部102の制御回路121へ出力する。
【0033】
クロック信号供給制御部102は、クロック信号供給制御部102の制御回路121が受信完了割込み信号を受信すると発振器103からのクロック信号をクロック信号CLK3としてCPU105へ供給する。CPU105は割込み制御部104からの受信完了割込み信号で動作を開始し、クロック信号CLK3に応じてデータ受信部101の受信バッファ113から読み出したUARTデータを処理する。
【0034】
なお、データ受信部101が起動要求信号の出力を停止することから、発振器103が入力する起動要求信号も停止する。しかし、発振器103は、CPU105が動作しておりチップステートがRUNとなっていることからクロック信号の供給を停止しない。
【0035】
なお、CPU105が全ての処理を終了した場合、CPU105がチップステートをSTOPとする。この場合、発振器103が起動要求信号を入力していないため、発振器103は動作を停止する。このため、データ受信部101、割込み制御部104、CPU105も動作を停止し、データ受信部101がUARTデータを受信する前の状態に戻る。
【0036】
次に、このようなマイクロコントローラ100の動作を説明するフローチャートを
図4に示す。
図4に示すように、節電期間(チップステートがSTOP)である場合(S101YES)では、発振器103が停止しており、データ受信部101、CPU105、割込み制御部104へのクロック信号の供給が停止する(S102)。
【0037】
データ受信部101がUARTデータを受信し、起動要求信号が出力されると(S103YES)、データ受信部101、割込み制御部104へのクロック信号の供給が開始される(S104)。なお、この状態では、CPU105へクロック信号の供給がされていないため、チップステートはSNOOZEである。
【0038】
データ受信部101がUARTデータを正常に受信完了した場合(S105YES)、CPU105へクロック信号の供給を開始する(S106)。つまり、チップステートがRUNとなる。なお、ステップS105で、データ受信部101がUARTデータを正常に受信完了しなかった場合(S105NO)、CPU105へクロック信号の供給を開始せず、ステップS102へ戻る。
【0039】
次に、このようなマイクロコントローラ100の動作を説明するタイミングチャートを
図5、
図6に示す。
図5はマイクロコントローラ100が、UARTデータを正常に受信した場合のタイミングチャートである。
図6はマイクロコントローラ100が、UARTデータを正常に受信できず、受信エラーが発生した場合のタイミングチャートである。まず、
図5のタイミングチャートの動作を説明する。
【0040】
図5示すように、時刻t1以前は、データ受信部101がUARTデータを受信していない状態で、UARTデータの受信を待機している。このためチップステートはSTOPの状態であり、発振器103がクロック信号を供給していない。
【0041】
時刻t1で、データ受信部101がUARTデータを受信する。UARTデータのスタートビット(ロウレベル)を検出すると、データ受信部101が起動要求信号をロウレベルからハイレベルに立ち上げる。このハイレベルの起動要求信号が、発振器103に入力され、時刻t2に発振器103がクロック信号の供給を開始する。そして、クロック信号供給制御部102からクロック信号CLK1がデータ受信部101に供給される。また、クロック信号CLK2が割込み制御部104に供給される。
【0042】
時刻t2〜t3の間、データ受信部101がクロック信号CLK1の供給を受けて、UARTデータの受信動作を開始する。データ受信部101は、クロック信号CLK1のタイミングに応じて、UARTデータをサンプリングする。このサンプリングしたデータは、受信バッファ113に保持される。この時刻t2〜t3の間、チップステートはSNOOZEとなる。
【0043】
時刻t3で、データ受信部101が、UARTデータのストップビット(ハイレベル)を検出すると、受信完了割込み信号を出力する。この受信割込み信号に応じて、クロック信号供給制御部102がクロック信号CLK3をCPU105に供給する。CPU105は、このクロック信号CLK3に応じて動作を開始し、受信バッファ113のUARTデータに対する処理を行う。
【0044】
次に、
図6のタイミングチャートの動作を説明する。時刻t2以前の動作は、
図5で説明したのと同様であり、ここでの説明は省略する。
【0045】
時刻t2〜t3でUARTデータの受信エラーが発生した場合、時刻t3にデータ受信部101は起動要求信号の出力を停止する(ハイレベルからロウレベルに立ち下げる)。発振器103は、チップステートがRUNでないときに、起動要求信号が停止されるためクロック信号の供給を停止する。このため、クロック信号CLK1、CLK2のデータ受信部101及び割込み制御部104への供給が停止される。よって、時刻t3以降は、チップステートがSTOPとなる。
【0046】
なお、通常のマイクロコントローラではUARTデータの受信エラーが発生した場合、受信エラー割込み信号を出力し、その受信エラー割込み信号に応じてエラー処理を行う。しかし、本実施の形態1のマイクロコントローラ100では、受信エラー割込み信号を出力せず、起動要求信号を停止することでその後のエラー処理を行っている。
【0047】
また、本実施の形態1の発振器103は、マイクロコントローラ100に接続するCR発振器や水晶発振器、もしくは、マイクロコントローラ100が備える内蔵発振器が考えられる。これらの発振器の特徴をまとめた表を
図7に示す。
図7に示すように、CR発振器は発振安定時間が短いが、周波数精度が低い。周波数精度が低いと、データ受信部101が受信する受信データのサンプリングに影響し、ボーレート誤差が大きくなる欠点がある。
【0048】
また、
図7に示すように、水晶発振器では、周波数精度は高いが、発振安定時間が長い欠点がある。発振安定時間が長いと、データ受信部101が行う最初のデータサンプリングに間に合わない場合があり、データ受信エラーが発生する可能性がある。
【0049】
最後にマイクロコントローラ100が内蔵する内蔵発振器では、周波数精度も高く±2%程度以下でありボーレート誤差の悪化を低減できる。更に発振安定時間も短いため、データ受信部101の動作開始が、UARTデータのサンプリング開始限度期間内で収めることが可能となる。このため、本実施の形態1の発振器103は、内蔵発振器が最も好適であることがわかる。但し、UARTデータの送受信の規格によっては、CR発振器や水晶発振器を用いてもかまわない。
【0050】
更に、内蔵発振器により発振器103が実現される場合であっても、発振安定時間によるUARTデータのサンプリング誤差が発生する場合がある。正確なUARTデータのサンプリングには、この誤差が補正される必要がある。このため、
図8、
図9を用いてデータ受信部101が行う上記誤差の補正について説明する。但し、以下では、マイクロコントローラ100が送受信するUARTデータが8ビットである場合を想定する。
【0051】
まず、
図8にUARTデータのプロトコルを示す。
図8に示すように、データ受信部101が入力するUARTデータは、時間軸に対して、スタートビット(ST)、bit7〜bit0、パリティビット(P)、ストップビット(SP)の順で送信される。スタートビット(ST)は必ずロウレベルであり、ストップビット(SP)は必ずハイレベルである。
【0052】
例えば、
図8では、bit7〜bit0、パリティビット(P)が全てロウレベルである場合を示している。このように、UARTデータでは、スタートビット(ST)のロウレベルからハイレベルのストップビット(SP)までに、必ずロウレベルからハイレベルへの立ち上がる箇所があることになる。
【0053】
図9に、本実施の形態1のデータ受信部101の動作タイミングチャートを示す。この
図9では、データ受信部101に入力されるUARTデータ、データ受信部101内部で処理されるUARTデータ、カウンタ111がカウントするカウントデータ、受信バッファ113が有するシフトレジスタの記憶する値を示す。なお、データ受信部101に入力されるUARTデータのbit7〜bit1がロウレベル、bit0、パリティビット(P)がハイレベルであるとする。
【0054】
また、本例ではカウンタ111は、サンプリングカウンタと、ビットカウンタを有するものとする。ここで、サンプリングカウンタはUARTデータのサンプリングするタイミングを規定し、ビットカウンタはUARTデータの何ビット目のデータをサンプリングしたかを識別する。
【0055】
時刻t1にデータ受信部101にUARTデータが入力される。但し、上述したように、この時点でデータ受信部101にはクロック信号CLK1が入力されていない。このため、UARTデータのサンプリング動作を開始できない。
【0056】
時刻t2に、クロック信号CLK1が入力され、サンプリング動作が開始される。このため、時刻t2からサンプリングカウンタ及びビットカウンタが動作を開始する。この時刻t1〜t2の遅延期間Tdlyは、上述した発振器103の発振安定期間に影響される。そして、時刻t2からサンプリングカウンタが規定する所定の期間後の時刻t3にデータ受信部101がスタートビット(ST)をサンプリングする。なお、サンプリング時点からビットカウンタが規定する所定の期間後に何ビット目のデータをサンプリングしたかの識別が毎回行われる。
【0057】
時刻t4に、bit7のUARTデータがサンプリングされる。この場合、ロウレベルをサンプリングすることになるため、シフトレジスタが「xxxxxxx0」を記憶する。なお、上記「x」は不定の状態を示す。その後、時刻t5〜t10まで同様の動作を行い、ロウレベルのbit7〜bit1をサンプリングする。
【0058】
時刻t11にUARTデータがロウレベルからハイレベルに立ち上がる。このとき、データ受信部101は、立ち上がりエッジに応じてカウンタをリセットし、リセット後に再びサンプリングカウンタとビットカウンタを動作(リスタート)させる。このリスタート後のサンプリングタイミングは、上述した発振安定時間によるサンプリング誤差を含んでいない。このため、時刻t11後にデータ受信部101が行うbit0、パリティビット(P)、ストップビット(SP)のサンプリングは、遅延期間Tdlyに影響されない正常なサンプリングタイミング(時刻t12、t13、・・・)で行うことができる。
【0059】
このように、1つのUARTデータ中に必ず発生するロウからハイへの立ち上がりエッジを利用して発振器103の発振安定期間によるサンプリング誤差を補正する。なお、この補正は、発振器103が動作してから最初のUARTデータのみ実行される。これは、UARTデータを連続して入力する場合、CPU105が動作処理を続けチップステートがRUNのままとなり、発振器103が停止しないためである。
【0060】
ここで、従来のマイクロコントローラでは任意のタイミングで入力されるUARTデータに対応するため、常時RUN状態を維持しなければならなかった。このため、
図22に示すように、UARTデータの非受信の期間であっても常時消費電流が発生し低消費電力化が難しかった。また、
図23の受信システム1においても、発振器4は常時動作しなければならず、その分の消費電流が発生する。このため、
図25に示すように、
図22と比較して低消費電流化が可能であるが、よりいっそうの消費電力の低減化は困難であった。
【0061】
ここで本実施の形態1のマイクロコントローラ100は、チップステートがSTOPの場合、発振器103を停止させ、UARTデータを受信すると起動要求信号により発振器103を動作させ、チップステートをSNOOZEに移行させる。チップステートがSNOOZEの間は、動作クロック信号を供給せずCPU105の動作は停止しており、データ受信部101(及び割込み制御部104)に動作クロック信号を供給し動作させる。その後、UARTデータの受信が完了するとデータ受信部101が受信完了割込み信号を出力し、チップステートをRUNにする。チップステートがRUNの場合、動作クロック信号が供給されCPU105が動作を開始する。
【0062】
このことにより、本実施の形態1のマイクロコントローラ100は、
図10に示すように、チップステートがSTOPの場合(時刻t1以前)、動作クロック信号を供給する発振器103も停止しており、消費電流が極めて少ない状態とすることが可能である。
【0063】
そして、UARTデータを受信し、チップステートがSNOOZEとなった場合(時刻t1〜t2の期間)、データ受信部101(及び割込み制御部104)は動作するが、CPU105の動作は停止する。このため、時刻t1〜t2の期間、消費電流は最大にならず、CPU105の消費電流分を削減している。このように、従来の受信システム1と比較しても、本実施の形態1は更なる消費電流の低減化が可能となっている。
【0065】
以下、実施の形態2について、図面を参照しながら詳細に説明する。この実施の形態2は、AD変換機能を有するマイクロコントローラに適用したものである。
図11に本実施の形態2にかかるマイクロコントローラ200のブロック構成を示す。
【0066】
図11に示すように、マイクロコントローラ200は、AD変換部201と、クロック信号供給制御部102と、発振器103と、割込み制御部104と、CPU105とを有する。なお、
図11に示された符号のうち、
図1と同じ符号を付した構成は、
図1と同じか又は類似の構成を示している。実施の形態2が実施の形態1と異なるのは、入力データがUARTデータから特に制限のないアナログ信号となり、データ受信部101がAD変換部201に置き換わった点である。よって、本実施の形態2では、その実施の形態1との相違部分を重点的に説明し、その他の実施の形態1と同様の部分は必要でない限り説明を省略する。
【0067】
AD変換部201は、比較器211と、制御回路212と、バッファ213とを有する。AD変換部201は、クロック信号CLK1に応じて、アナログ入力信号をデジタルデータ信号に変換する。変換したデジタルデータは、バッファ213に記憶される。
【0068】
比較器211は、アナログ入力信号の電圧と、基準電圧等で決定される閾値を入力し比較する。その比較結果は、起動トリガ信号として制御回路212へ送信される。例えば、アナログ入力信号の電圧が上記閾値を規定する基準電圧を超えるもしくは下回った場合、起動トリガ信号が比較器から出力される。
【0069】
制御回路212は、実施の形態1の制御回路112とほぼ同様の動作を行うが、実施の形態1と異なり、起動要求信号の出力を、上記起動トリガ信号を基にして行う。また、アナログ入力信号からデジタルデータ信号へ変換を完了すると、実施の形態1の受信完了割込み信号の代わりに、変換完了割込み信号を出力する。
【0070】
但し、実施の形態1の受信完了割込み信号と、変換完了割込み信号は、動作完了に対する割込み信号であり、基本的に同様の信号とみなしてかまわない。また、実施の形態1と同様、発振器103がクロック信号を供給していない状態をチップステートがSTOPであるとし、CPU105にクロック信号が供給され動作している状態をチップステートがRUNであるとする。更に、AD変換部201、割込み制御部104にクロック信号が供給され動作しているが、CPU105にはクロック信号が供給されておらず動作を停止している状態をチップステートがSNOOZEとする。
【0071】
図12、
図13を用いて、マイクロコントローラ200の基本動作を説明する。なお、起動トリガ信号は、アナログ入力信号が閾値を超えた場合に出力されるものとする。まず、
図12に示すように、AD変換部201は、アナログ入力信号の電圧が上昇し閾値を超えると、例えばハイレベルの起動要求信号を出力する。クロック信号供給制御部102の制御回路121は、その起動要求信号を発振器103に出力し、発振器103がクロック信号の供給を開始する。
【0072】
クロック信号供給制御部102は、発振器103からのクロック信号を、クロック信号CLK1としてAD変換部201に、クロック信号CLK2として割り込み制御部104に供給する。そして、AD変換部201がクロック信号CLK1を動作クロックとして、割り込み制御部104がクロック信号CLK2を動作クロックとして動作を開始する。
【0073】
なお、
図12に示すように、発振器103が動作を開始し、AD変換部201及び割り込み制御部104にクロック信号が供給されるが、CPU105にはクロック信号が供給されないためチップステートがSNOOZEとなる。
【0074】
次に、
図13に示すように、AD変換部201がアナログ入力信号をデジタルデータに変換完了すると、AD変換部201が変換完了割込み信号を割込み制御部104へ出力する。また、AD変換部201は、起動要求信号の出力を停止する。割込み制御部104は、AD変換部201からの変換完了割込み信号をCPU105及びクロック信号供給制御部102の制御回路121へ出力する。
【0075】
クロック信号供給制御部102は、クロック信号供給制御部102の制御回路121が変換完了割込み信号を受信すると発振器103からのクロック信号をクロック信号CLK3としてCPU105へ供給する。CPU105は割込み制御部104からの変換完了割込み信号で動作を開始し、クロック信号CLK3に応じてAD変換部201のバッファ213から読み出したデジタルデータを処理する。
【0076】
なお、AD変換部201が起動要求信号の出力を停止することから、発振器103が入力する起動要求信号も停止する。しかし、発振器103は、CPU105が動作しておりチップステートがRUNとなっていることからクロック信号の供給を停止しない。
【0077】
なお、CPU105が全ての処理を終了した場合、CPU105がチップステートをSTOPとする。この場合、発振器103が起動要求信号を入力していないため、発振器103は動作を停止する。よって、AD変換部201、割込み制御部104、CPU105も動作を停止する。
【0078】
次に、このようなマイクロコントローラ200の動作を説明するフローチャートを
図14に示す。
図14に示すように、節電期間(チップステートがSTOP)である場合(S201YES)では、発振器103が停止しており、AD変換部201、CPU105、割込み制御部104へのクロック信号の供給が停止する(S202)。
【0079】
AD変換部201が入力するアナログ入力信号が閾値を超え、起動要求信号が出力されると(S203YES)、AD変換部201、割込み制御部104へのクロック信号の供給が開始される(S204)。なお、この状態では、CPU105へクロック信号の供給がされていないため、チップステートはSNOOZEである。
【0080】
AD変換部201がアナログ入力信号をデジタルデータに変換完了した場合(S205YES)、CPU105へクロック信号の供給を開始する(S206)。つまり、チップステートがRUNとなる。
【0081】
次に、このようなマイクロコントローラ200の動作を説明するタイミングチャートを
図15に示す。
図15に示すように、時刻t1以前は、AD変換部201に入力するアナログ入力信号が閾値を超えていない状態で、AD変換部201はAD変換動作を行わず、変換待機状態である。このためチップステートはSTOPの状態であり、発振器103がクロック信号を供給していない。
【0082】
時刻t1で、AD変換部201に入力するアナログ入力信号が閾値を超えると、比較器211が起動トリガを出力し、制御回路212が起動要求信号をロウレベルからハイレベルに立ち上げる。このハイレベルの起動要求信号が、発振器103に入力され、時刻t2に発振器103がクロック信号の供給を開始する。そして、クロック信号供給制御部102からクロック信号CLK1がAD変換部201に供給される。また、クロック信号CLK2が割込み制御部104に供給される。
【0083】
時刻t2〜t3の間、AD変換部201がクロック信号CLK1の供給を受けて、アナログ入力信号をデジタルデータにAD変換する。このデジタルデータは、バッファ213に保持される。この時刻t2〜t3の間、チップステートはSNOOZEとなる。
【0084】
時刻t3で、AD変換部201が、AD変換動作を完了すると、変換完了割込み信号を出力する。この、変換完了割込み信号に応じて、クロック信号供給制御部102がクロック信号CLK3をCPU105に供給する。CPU105は、このクロック信号CLK3に応じて動作を開始し、バッファ213のデジタルデータに対する処理を行う。
【0085】
また、実施の形態1と同様、発振器103の発振安定時間をAD変換部201の動作開始時間よりも短くすることで、時刻t1に入力したアナログ入力信号のAD変換も可能となる。
【0086】
このように本実施の形態2のマイクロコントローラ200は、アナログ信号変換待機時、つまりチップステートがSTOPの期間において発振器103を停止させることで、消費電流の低減化を可能としている。更に、AD変換完了後、つまりチップステートがRUNの期間にCPU105を起動させている。これはSTOPからRUNまでのSNOOZEの期間、CPU105を動作させておらず、消費電流を低減させることが可能である。以上のように、本実施の形態2のマイクロコントローラ200のように、実施の形態1で記載したUARTシステム以外にも適用することができ、従来と比較して消費電流の低減が可能である。
【0088】
以下、実施の形態3について、図面を参照しながら詳細に説明する。この実施の形態3は、実施の形態1と同様、UARTの受信システムを有するマイクロコントローラに適用したものである。
図16に本実施の形態3にかかるマイクロコントローラ300のブロック構成を示す。
【0089】
図16に示すように、マイクロコントローラ300は、データ受信部301と、クロック信号供給制御部102と、発振器103と、割込み制御部104と、CPU105とを有する。
【0090】
データ受信部301は、カウンタ111と、制御回路112と、受信バッファ113と、ノイズ検出回路314とを有する。
【0091】
なお、
図16に示された符号のうち、
図1と同じ符号を付した構成は、
図1と同じか又は類似の構成を示している。
【0092】
本実施の形態3が実施の形態1と異なるのは、データ受信部301の構成であり、データ受信部301がノイズ検出回路314を有する点である。よって、本実施の形態3では、その実施の形態1との相違部分を重点的に説明し、その他の実施の形態1と同様の部分は必要でない限り説明を省略する。
【0093】
ノイズ検出回路314は、データ受信部301がUARTデータではなく、ノイズを受信した場合に、それを検出してクロック信号供給制御部102へ検出信号を送信し、制御回路112からの起動要求信号の出力を停止する。データ受信部301への入力がUARTデータかノイズかの判断は、例えば、データ受信部301が入力する最初のクロック信号CLK1の立ち上がりエッジのときに、UARTデータの値がハイレベルであるかロウレベルであるかにより行う。
【0094】
例えば、最初のクロック信号CLK1の立ち上がりエッジ時に、UARTデータの値がロウレベルであれば通常のUARTデータをUART受信端子が受信したと判断する。逆に、最初のクロック信号CLK1の立ち上がりエッジ時に、UARTデータの値がハイレベルである場合、UARTデータのスタートビットとしては短すぎるため、ノイズであると判断する。
【0095】
図17に、ノイズ検出回路314の構成と、そのノイズ検出回路314と制御回路112を含む周辺回路との関係の一例を示す。なお、本例は一例であり、同様の機能を備える場合では他の構成であってもかまわない。
【0096】
図17に示すように、ノイズ検出回路314は、フリップフロップFF31と、インバータ回路IV32とAND回路AND33とを有する。
【0097】
フリップフロップFF31は、データ入力端子Dがデータ受信部301のUART受信端子と接続され、クロック入力端子がAND回路AND33の出力端子と接続される。また、データ出力端子Qが、インバータ回路IV32の入力端子と接続される。このため、フリップフロップFF31は、AND回路AND33からの出力信号の立ち上がりエッジに応じて、データ入力端子Dに印加されているデータの値をラッチし、データ出力端子Qから出力する。
【0098】
インバータ回路IV32は、フリップフロップFF31のデータ出力端子Qからの信号を入力し、その反転信号を検知信号として出力する。
【0099】
AND回路AND33は、一方の入力端子にクロック信号CLK1を入力し、他方の入力端子に制御回路112からのステータス信号を入力する。そして、その演算結果をフリップフロップFF31のクロック入力端子に出力する。このため、AND回路AND33は、フリップフロップFF31のクロック入力端子に対して、ステータス信号がハイレベルの場合、クロック信号CLK1を出力し、ロウレベルの場合、ロウレベルの固定値を出力する。
【0100】
本例において制御回路112は起動要求信号を、AND回路AND34を経由してクロック信号供給制御部102へ出力する。AND回路AND34は、一方の入力端子にインバータ回路IV32が出力する検出信号を入力し、他方の入力端子に制御回路112からの起動要求信号を入力する。このため、AND回路AND34は、検出信号がハイレベルの場合、制御回路112からの起動要求信号をそのまま出力し、検出信号がロウレベルの場合、ロウレベルの値に固定した起動要求信号を出力する。
【0101】
制御回路112は、本例においてクロック信号CLK1が所定の回数(例えば、1クロック)より多く入力された場合、ステータス信号をハイレベルからロウレベルに立ち下げる機能を有するものとする。
【0102】
図18、
図19を用いて、マイクロコントローラ300がUARTデータではなく、ノイズを受信した場合の動作を説明する。まず、
図18に示すように、データ受信部301は、ノイズを受信すると、UARTデータの受信時と同様、ハイレベルの起動要求信号を出力する。クロック信号供給制御部102の制御回路121は、その起動要求信号を発振器103に出力し、発振器103がクロック信号の供給を開始する。そして、実施の形態1と同様、クロック信号供給制御部102は、発振器103からのクロック信号を、クロック信号CLK1としてデータ受信部301に、クロック信号CLK2として割り込み制御部104に供給する。
【0103】
なお、この時点では、データ受信部101及び割り込み制御部104にクロック信号が供給されるが、CPU105にはクロック信号が供給されないためチップステートがSNOOZEとなる。
【0104】
次に、
図19に示すように、データ受信部301が受信したのがノイズのため、制御回路112からの起動要求信号が停止(ロウレベル出力)される。この時点で、チップステートがRUNではなくSNOOZEのため、発振器103がクロック信号の供給を停止する。このため、クロック信号CLK1、CLK2のデータ受信部101及び割込み制御部104への供給も停止され、チップステートがSTOPとなる。
【0105】
次に、このようなマイクロコントローラ300の動作を説明するフローチャートを
図20に示す。
図20に示すように、節電期間(チップステートがSTOP)である場合(S301YES)では、発振器103が停止しており、データ受信部301、CPU105、割込み制御部104へのクロック信号の供給が停止する(S302)。
【0106】
データ受信部301がUARTデータもしくはノイズを受信し、起動要求信号が出力されると(S303YES)、データ受信部301、割込み制御部104へのクロック信号の供給が開始される(S304)。なお、この状態では、CPU105へクロック信号の供給がされていないため、チップステートはSNOOZEである。
【0107】
データ受信部301がUARTデータではなく、ノイズを受信したと判断された場合(S305YES)、CPU105へクロック信号の供給を開始せず、ステップS302へ戻る。一方、データ受信部301がノイズではなくUARTデータを受信したと判断された場合(S305NO)、実施の形態1と同様、データ受信部301がUARTデータを開始する。
【0108】
データ受信部301がUARTデータを正常に受信完了した場合(S306YES)、CPU105へクロック信号の供給を開始する(S307)。つまり、チップステートがRUNとなる。なお、ステップS306で、データ受信部301がUARTデータを正常に受信完了しなかった場合(S306NO)、CPU105へクロック信号の供給を開始せず、ステップS302へ戻る。
【0109】
次に、このようなマイクロコントローラ300がUARTデータではなく、ノイズを受信した場合の動作を説明するタイミングチャートを
図21に示す。
【0110】
図21に示すように、時刻t1以前は、実施の形態1と同様、データ受信部301がUARTデータを受信していない状態で、UARTデータの受信を待機している。このためチップステートはSTOPの状態であり、発振器103がクロック信号を供給していない。
【0111】
時刻t1で、データ受信部301がUARTデータではなくノイズを受信する。ノイズにより引き起こされたロウレベルの信号を検出すると、データ受信部301が起動要求信号をロウレベルからハイレベルに立ち上げる。このハイレベルの起動要求信号が、発振器103に入力され、時刻t2に発振器103がクロック信号の供給を開始する。そして、クロック信号供給制御部102からクロック信号CLK1がデータ受信部101に供給される。また、クロック信号CLK2が割込み制御部104に供給される。
【0112】
但し、通常のUARTデータのスタートビットSTが規定されたT1の期間ロウレベルとなるのに、ノイズにより引き起こされた信号では、T1よりも短いT2でハイレベルとなる。
【0113】
このため、例えば、
図17の構成を例に説明すると、時刻t2にフリップフロップFF31がハイレベルのデータを、クロック信号CLK1の立ち上がりエッジでラッチし、インバータ回路IV32に出力する。そして、インバータ回路IV32により、反転されたロウレベルの検出信号がAND回路AND34に入力される。このため、制御回路112からAND回路AND34を経由して出力されるハイレベルの起動要求信号が、ロウレベルに立ち下げられ、データ受信部301が起動要求信号の出力を停止する。このことにより、発振器103がクロック信号の供給を停止し、クロック信号CLK1、CLK2のデータ受信部101及び割込み制御部104への供給も停止される。よって、時刻t3以降は、チップステートがSTOPとなる。このように、本実施の形態3のマイクロコントローラ300でも、実施の形態1と同様、受信エラー割込み信号を出力せず、起動要求信号を停止することでその後のエラー処理を行う。
【0114】
以上のような実施の形態3のマイクロコントローラ300は、データ受信部301に入力されるUARTデータが、ノイズであると判定した場合、クロック信号CLK1の最初の供給タイミングで、起動要求信号の出力を停止する。このことにより、ノイズをUARTデータのスタートビットSTであると誤判定して、発振器103がクロック信号の供給を続ける状態を防止することが可能となる。このため、実施の形態1と比較して、より確実に消費電流の低減化が可能となる。
【0115】
なお、本発明は上記実施の形態に限られたものでなく、趣旨を逸脱しない範囲で適宜変更することが可能である。