説明

情報処理装置、情報処理方法及び情報処理プログラム

【課題】少なくとも1つのデータ線を用いて互いに半二重通信を行う2つのデバイスを含む情報処理装置において、当該データ線に予期せぬ波形変動が発生したとしても、デバイス選択のための制御信号線の追加を必要とすることなくデバイスが誤動作する可能性を抑制できる情報処理装置、情報処理方法及び情報処理プログラムを提供する。
【解決手段】本発明にかかる情報処理装置は、第1の制御部101と、第1の制御部101との間で、少なくとも1つのデータ線を用いて半二重通信を行う第2の制御部201とを有する。第2の制御部201は、通信が中断される場合に、第1の制御部101からの制御に応答して、データ線へのデータの送信を行うが受信を行わない出力モードで停止する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関し、特にデータ線に予期せぬ波形変動が発生してもデバイスが誤動作する可能性を抑制できる情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【0002】
情報処理装置に実装されている2つの電子回路(デバイス)間の通信方式として、少なくとも1本のデータ線を通信路とする半二重通信方式が多く利用されている。デバイス間通信は、例えば、マイクロプロセッサ等のコントローラが周辺デバイスを制御する際に利用される。例えば、I2Cは、Philips Semiconductorsにより発明された、シリアルクロック線SCL及びシリアルデータ線SDAからなる2線インタフェースによる半二重双方向通信方式である。I2Cにおいては、SCL及びSDAにより接続されたマスタデバイス及び1以上のスレーブデバイスが、SDAに対し交互にデータを出力することによって半二重双方向通信を実現している。すなわち、マスタデバイスがSDA上にデータを出力しているときはスレーブデバイスがその信号を入力として取込み、スレーブデバイスがSDA上にデータを出力しているときはマスタデバイスがその信号を入力として取込む。I2Cでは、常にマスタデバイスがデータ伝送を開始する。マスタデバイスは、スレーブデバイスに対し、SCL及びSDAを介して、I2Cのデータ伝送開始通知信号であるスタートコンディションを送出する。スレーブデバイスは、SCL及びSDAを介してスタートコンディションを受信すると、それに続いてマスタデバイスから送信される命令を受信し、その命令に応じた動作を行う。このように、IC2におけるスレーブデバイスは、動作を行う際にまずスタートコンディションを受信する必要がある。そこで、スレーブデバイスは、データ伝送を行っていない待機状態にあるときは、SCL及びSDAにより伝送されるスタートコンディションを受信できるよう、SCL及びSDAに流れる電気信号を常に内部に取込み監視している。
【0003】
本件の発明者は、以下に述べるように、SCL及びSDAを伝搬する信号に対する予期せぬ波形変動が発生した場合の誤動作の防止について検討を行った。予期せぬ波形変動とは、例えば外来ノイズや部分的な電気故障によるSCL及びSDAを伝搬する信号に対する電気的変動である。また、波形変動は、装置電源において瞬間的な停電(瞬停)を含む停電が発生し内部のデバイス電源電圧が低下した場合の過渡現象によるマスタデバイスの挙動、及び電源変動によっても生じ得る。
【0004】
例えば、瞬停を含む停電などによりシステムの電源電圧が低下し、電源電圧がマスタデバイスの正常動作が保証される範囲を下回るレベルに至ると、マスタデバイスは予測不能な挙動を示すことがある。このような状況下では、マスタデバイスがSCL及びSDAに予期せぬ波形変動を生じさせる可能性がある。具体例として、マイクロコンピュータをマスタデバイスとするシステムのシステム電源が停止した場合を想定する。電源電圧は時間と共に低下してゆき、やがてマスタデバイスの動作が保証される電源電圧レベルの下限Aに到達する。その後さらに電源電圧が低下しつづけ、電圧レベルBまで達すると、マスタデバイスの機能は完全に失われる。この電圧レベルAと電圧レベルBの間において、マスタデバイスは予測不能な挙動をとり得る。そのとき、マスタデバイスは、SCL及びSDAの電気信号に何らかの変動を発生させてしまう可能性がある。
【0005】
一方、スレーブデバイスは、一般に高い汎用性が求められるため、マスタデバイスに比べて低い電源電圧でも動作するよう設計されているものが多い。そのため、上述のようにマスタデバイスが予測不能な挙動を示し得る電源電圧の範囲であっても、スレーブデバイスは正常に動作しつづけることが多い。スレーブデバイスは、通常、SCL及びSDAの電気的状態を常に内部へ取込み、これを監視している。そのため、SCL及びSDAに発生した波形変動が偶然にも、例えば上述のスタートコンディションのような、I2Cの制御信号のパターンと合致してしまった場合は、スレーブデバイスが誤動作する可能性がある。特に、スレーブデバイスがライト(書込み)を意味する制御信号を誤検出した場合には、そのスレーブデバイスはSDAの波形変動をデータとして内部回路に取込み、その誤ったデータを内部に書込むため、システム上、深刻な問題が発生する可能性がある。一例として、スレーブデバイスとしてのRTCが制御信号を誤検出する場面を示す。RTCとは、内部にカレンダ情報をもつスレーブデバイスである。典型的には、RTCは、マスタデバイスとしてのマイクロコンピュータがカレンダ情報の書込み及び読出しを行うために用いられる。RTCは一般に、幅広い電源電圧で動作できる。また、RTCは、専用のバックアップ電源を備えていれば、システム電源の停止後もカレンダ情報を保持したまま長時間稼働することができる。よって、たとえシステム電源電圧が低下しても、RTCは正常に動作し、SCL及びSDAを監視しつづけることが多い。このようなRTCと上述のマイクロコンピュータとを含むシステムにおいて、システム電源電圧が低下した場合、マイクロコンピュータが上述のようにSCL及びSDA上に何らかの波形変動を発生させる可能性があり、RTCはその波形の入力信号をI2Cの制御信号と誤解釈し、RTCが誤動作する恐れがある。
【0006】
SCL及びSDAに予期せぬ波形変動が発生する別の原因として、外部からのノイズがある。スレーブデバイスは、データ伝送を行わない状態すなわち待機状態では、SCL及びSDAからの信号が入力されている状態にある。このとき、デバイスのSCL、SDAピンは電気的には高インピーダンス状態にある。(一般に、デバイス外部回路において数キロΩの抵抗を介してシステム電源へ接続することにより、高電圧状態を保っている)。この状態においては、スレーブデバイスはSCL及びSDAの外部からの微小な電流印加に影響を受けやすい。すなわち、I2Cインタフェースはノイズ耐力の低いデータ伝送インタフェースといえる。したがって、このシステムを含む装置の内部の電気部品から発生するノイズや、電源から装置内部へ伝播するノイズ、及び静電気や雷など外部からの高電気エネルギーの入力によるノイズなど、さまざまなノイズにより、SCL及びSDAの波形変動は容易に発生し得る。このようなノイズによるランダムな波形変動が、I2Cの制御信号に合致してしまう可能性がある。
【0007】
かかる問題に対して、特開2004−258879号公報では、ライトイプロテクト信号及びチップセレクト信号などの制御信号をデータ伝送インタフェースに追加することにより、誤書込みを保護する方法が提案されている。例えば、データ伝送インタフェース上はライトシーケンスを検出したとしても、チップセレクト信号や、ライトプロテクト信号がデータ書込み条件に合致する信号レベルでなければ、データ伝送インタフェースのライトシーケンスは誤検出とみなし、データ書き込みは行わないといった方法である。しかし、チップセレクト信号やライトプロテクト信号などのデバイス選択のための制御信号を追加すると、デバイスのピン数が増加し、デバイス形状及びそのデバイスを使用する装置の小型化を阻害する。またデバイス自体のコストもあがってしまう。さらに、このような方法を採用するには、マスタデバイス及びスレーブデバイスの双方に同様の機能を実装する必要がある。
【0008】
また、特開2003−308257号公報では、停電や瞬停を検出すると、マスタデバイスがスレーブデバイスに対してSTOPコンディションを送出することで、スレーブデバイスを確実に待機状態とし、電源異常復旧時にスレーブデバイスを安定動作できるようにした構成が提案されている。しかしながら、この場合もスレーブデバイスは待機状態であるため、この間にI2CのSCL及びSDAに波形変動が発生した場合、スレーブデバイスはその波形変動をSCL及びSDAの信号変化と解釈してしまう。したがって、波形変動がI2C制御信号に合致してしまった場合には、それに応じた誤動作を起こしてしまう可能性がある。例えば、I2Cのライトシーケンスを誤検出したならば、SCL及びSDAの状態がスレーブデバイスの内部へデータとして取込まれてしまい、誤書込みが発生する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2004−258879号公報
【特許文献2】特開2003−308257号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
上述のように、背景技術にかかる、マスタデバイス及びスレーブデバイスが半二重通信を用いる方法においては、これらデバイスを接続するデータ線に予期せぬ波形変動が発生した場合、デバイスが誤動作する可能性があるという問題点があった。
【0011】
本発明は、このような問題点を解決するためになされたものであり、少なくとも1つのデータ線を用いて互いに半二重通信を行う2つのデバイスを含む情報処理装置において、当該データ線に予期せぬ波形変動が発生したとしても、デバイス選択のための制御信号線の追加を必要とすることなくデバイスが誤動作する可能性を抑制できる情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明にかかる情報処理装置は、第1の制御部と、前記第1の制御部との間で、少なくとも1つのデータ線を用いて半二重通信を行う第2の制御部とを有し、前記第2の制御部は、前記通信が中断される場合に、前記第1の制御部からの制御に応答して、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するものである。
【0013】
本発明にかかる情報処理方法は、通信先制御部との間で少なくとも1つのデータ線を用いて行われる半二重通信が中断される場合に、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するよう前記通信先制御部を制御するものである。
【0014】
また、本発明にかかる情報処理プログラムは、所定の動作をコンピュータに実行させるためのプログラムであって、通信先制御部との間で少なくとも1つのデータ線を用いて行われる半二重通信が中断される場合に、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するよう前記通信先制御部を制御する処理をコンピュータに実行させるものである。
【発明の効果】
【0015】
本発明により、少なくとも1つのデータ線を用いて互いに半二重通信を行う2つのデバイスを含む情報処理装置において、当該データ線に予期せぬ波形変動が発生したとしても、デバイス選択のための制御信号線の追加を必要とすることなくデバイスが誤動作する可能性を抑制できる情報処理装置、情報処理方法及び情報処理プログラムを提供することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施の形態1にかかる情報処理装置の構成を示す図である。
【図2】本発明の実施の形態2にかかる情報処理装置の構成を示す図である。
【図3】本発明の実施の形態2にかかる情報処理装置の動作を示す図である。
【図4】本発明の実施の形態2にかかる情報処理装置の動作を示す図である。
【図5】本発明の実施の形態2にかかる情報処理装置の処理フローを示す図である。
【図6】本発明の実施の形態2にかかる情報処理装置の処理フローを示す図である。
【図7】本発明の実施の形態3にかかる情報処理装置の処理フローを示す図である。
【図8】本発明の実施の形態3にかかる情報処理装置の処理フローを示す図である。
【発明を実施するための形態】
【0017】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【0018】
実施の形態1
まず、図1を用いて、本発明の実施の形態1にかかる情報処理装置1000の基本的構成について説明する。
【0019】
第1の制御部101及び第2の制御部201は、データ線300を介して相互に接続されている。第1の制御部101及び第2の制御部201は、データ線300を用いて半二重通信を行う。第1の制御部101は、データ線300を用いた半二重通信を中断する場合に、第2の制御部201を制御する。第2の制御部201は、データ線300を用いた半二重通信が第1の制御部101によって中断される場合に、第1の制御部101からの制御に応答して、データ線301へのデータの送信を行うが受信を行わない出力モードで停止する。データ線301へのデータの送信を行うが受信を行わない出力モードは、つまり、半二重通信における送信を行う動作モードである。
【0020】
上述したように、本実施の形態は、第1の制御部101及び第2の制御部201の間の半二重通信が中断する場合に、第2の制御部201が出力モード(半二重通信における送信を行う動作モード)に維持される。これにより、半二重通信が中断されているときに、システム設計上意図しないデータ線300の波形変動が生じた場合にも、第2の制御部201は送信モードであるから、第2の制御部201がデータ線300から誤ってデータを取込むことがない。
【0021】
また、本実施の形態においては、デバイス選択のための制御信号線(e.g. ライトイプロテクト信号及びチップセレクト信号など)を第1の制御部101と第2の制御部201の間に追加することを必要としない。従って、本実施の形態は、第2の制御部201に対しては特別の改造や機能変更を必要としない。
【0022】
実施の形態2
本実施の形態では、上述した実施の形態1をI2Cインタフェースによって半二重通信を行う情報処理装置に適用する場合について詳細に説明する。図2を用いて、本発明の実施の形態2にかかる情報処理装置の具体的な構成例について説明する。
【0023】
第1の制御部としてのマスタデバイス100及び第2の制御部としてのスレーブデバイス200は、いずれもI2Cインタフェースを備えた電子デバイスである。マスタデバイス100及びスレーブデバイス200は、データ線300により相互に接続されている。データ線300は、シリアルクロック線SCL301及びシリアルデータ線SDA302を含んでおり、I2Cによるデータ伝送を行うことができる。
【0024】
I2Cとは、シリアルクロック線SCL301及びシリアルデータ線SDA302を用いる半二重双方向通信方式である。SCL301はクロック信号を伝送するバスである。マスタデバイス100及びスレーブデバイス200は、このクロック信号が示すタイミングに従ってデータ通信を行う。SDA302はデータ信号及び制御信号を伝送するためのバスである。マスタデバイス100及びスレーブデバイス200は、SDA302に対し交互にデータを出力することによって半二重双方向通信を行う。
【0025】
マスタデバイス100は、I2C制御部101、メモリ部102及びCPU103を有している。典型的には、I2C制御部101、メモリ部102及びCPU103はいずれもハードウェアによって構成される。I2C制御部101は、SCL301及びSDA302を制御することでI2Cによるデータ伝送を行う装置である。CPU103は、制御プログラムに基づいて各種処理を実行する中央制御装置であり、I2C制御部101に対してI2C開始命令を送出することにより、I2C制御部101にI2Cによるデータ伝送を開始させることができる。メモリ部102は、I2Cによるデータ伝送で使用するデータを格納する記憶装置である。データ送信の際、I2C制御部101はメモリ部102より伝送データを取出しSDA302を用いて伝送する。データ受信の際は、I2C制御部101はスレーブデバイスからの伝送データをSDA302より受信しメモリ部103へ格納する。
【0026】
スレーブデバイス200は、I2C制御部201、メモリ部102及びデバイス機能部203を有している。I2C制御部201及びメモリ部102は、マスタデバイス100と同様のものである。デバイス機能部203はI2Cとは独立して動作し、デバイス特有の機能を実現することができる装置である。なお、スレーブデバイス200においては、I2C制御部201に対して命令を出す機能ブロック(マスタデバイス100のCPU103に相当)は存在しない。したがって、I2C制御部201が能動的にI2Cによるデータ伝送を開始することはない。I2C制御部201は、マスタデバイス100のI2C制御部101から、SCL301及びSDA302を介してI2Cデータ伝送を開始すべき旨の制御信号を受信したときに、データ伝送を開始する。
【0027】
ここで、I2C制御部101及び201間でデータ伝送を行う方法ついて説明する。
I2C制御部101及び201は、SDA302を用いて半二重方式によるデータ伝送を行う。半二重方式とは、同時に双方からデータを送信することはできず、送信側と受信側とが所定の方法で送信順序を決定し、交互にデータを送信することにより半二重双方向通信を行う方式である。I2C制御部101及び201は、SDA302へ交互にデータを出力することによって、半二重双方向通信を行う。SDA302へデータ出力を行わないとき、I2C制御部101及び201は、SDA302を監視して信号の入力に備える。一方、SDA302へデータ出力を行っているとき、I2C制御部101及び201は、SDA302の監視を行わない。すなわち、I2Cインタフェースを備えるデバイスは、データ出力中であれば、たとえSDA302に波形変動が生じたとしても、SDA302上の信号を内部へデータとして取込むことはない。
【0028】
また、I2C制御部101及び201は常に、SCL301上を流れるクロック信号が示すタイミングに従ってデータ伝送を行う。マスタデバイス100のI2C制御部101が、クロック信号を生成してSCL301に送出する。スレーブデバイス200のI2C制御部201は、クロック信号を生成することはなく、SCL301を介してマスタデバイス100のクロック信号を受信するのみである。もしI2C制御部101がクロック信号の送出を停止した場合、データ通信は中断することになる。すなわち、I2C制御部101及び102は、SDA302に対するデータの入出力制御を停止する。もしクロック信号が再開すれば、I2C制御部101及び102は、中断された個所からデータ伝送を再開する。一般に、I2Cにおいてデータ伝送が中断される事態は考えにくいが、本発明においては、CPU103がI2C制御部101に中断命令を出すことにより、I2C制御部101がデータ伝送を中断することを可能としている。
【0029】
つづいて、図3を用いて、I2C制御部101及び201が、I2Cの通信方式に従ってデータ伝送を行う手順について具体的に説明する。図3は、SCL301及びSDA302上の信号の状態を示したチャートである。
【0030】
I2C制御部101又は201は、SCL301及びSDA302の電圧状態をHigh又はLowのいずれかの状態に変化させることにより、通信相手に1ビットの情報を伝送することができる。SCL301及びSDA302は、どのデバイスからも制御されていないときは、High状態に保たれる(待機状態)。
【0031】
マスタデバイス100のI2C制御部101は、データ伝送を開始する際、START CONDITION(STAT)信号をSDA302に送出する。具体的には、I2C制御部101は、SCL301にクロック信号が送出されている状態のもとで、SDA302の電圧をHighからLowへ変化させる(STAT)。続いて、I2C制御部101は、ADDRESS及びCOMMANDをSDA302に送出する。ここでADDRESSとは、通信相手となるスレーブデバイス200を識別するために使用されるビット列である。COMMANDとは、スレーブデバイス200のI2C制御部201に対し、この通信がリードアクセス(読込み)又はライトアクセス(書込み)のいずれを要求するものであるかを通知するためのビットである。具体的には、Highの場合はリード、Lowの場合はライトであることを示す。
【0032】
スレーブデバイス200のI2C制御部201は、SCL301及びSDA302を監視し、STATを検出すると、マスタデバイス100のI2C制御部101がI2Cデータ伝送を開始したことを認識する。また、スレーブデバイス200は、STATに続けて伝送されてくるADDRESSが自身のアドレスと一致するか判定し、一致した場合は、それ以降に伝送されてくるCOMMANDに従って動作する。スレーブデバイス200のI2C制御部201は、COMMANDを受信したならば、所定のタイミングで、承認を示すACK信号をマスタデバイス100のI2C制御部101へ伝送する。具体的には、SDA302をLowへ制御する。この後、COMMANDがライトであった場合には、マスタデバイス100がスレーブデバイス200に対して書込みデータを伝送する。COMMANDがリードであった場合は、スレーブデバイス200がマスタデバイス100に対して読出しデータを伝送する。データの伝送が終了すると、データを取込む側のデバイス(ライトの場合はスレーブデバイス200、リードの場合はマスタデバイス100)が、データ受信確認を意味するACKをSDA302に送出する。
【0033】
マスタデバイス100のI2C制御部101は、データの伝送が終了すると、STOP CONDITION(STOP)信号をSDA302に送出する。具体的には、I2C制御部101は、SCL301をHighに設定したうえで、SDA302をLowからHighへ変化させる(STOP)。
【0034】
スレーブデバイス200のI2C制御部201は、STOPを検出すると、待機状態となり、マスタデバイス100が次のI2Cデータ伝送を開始するのを待つ。
【0035】
なお、図3においてスレーブデバイス出力期間Aとして示した期間は、スレーブデバイス200がSDA302にデータを出力している期間を示す。また、スレーブデバイス出力期間Bは、COMMANDがリードであった場合において、スレーブデバイス200がSDA302にデータを出力している期間を示す。スレーブデバイス出力期間A及びBで示した期間以外は、すべてスレーブデバイス200がSDA302のデータを内部に取込んでいる期間である。
【0036】
また、I2Cによるデータ伝送においては、マスタデバイス100が常にデータ伝送の開始及び終了を制御する。また、データ伝送は常にマスタデバイス100が制御するクロックバスSCL301が示すタイミングにより行われる。このように、スレーブデバイス200は、SCL301及びSDA302からの入力信号に依存して動作している。
【0037】
このように、スレーブデバイス200は、SCL301及びSDA302からの入力信号により挙動が影響されやすいという性質を持つ。そこで、本実施の形態では、SCL301及びSDA302に予期しない波形変動が生じた場合であっても、それに影響されないスレーブデバイス200の制御方法を提案する。
【0038】
図4を用いて、本実施の形態にかかるスレーブデバイス200の制御方法を説明する。図4は、一般的なライトシーケンス及びリードシーケンスと、本実施の形態にかかるリードシーケンスとを模式化し、比較したものである。(1)は、マスタデバイス100がスレーブデバイス200にデータを書込む、一般的なライトシーケンスである。(2)は、マスタデバイス100がスレーブデバイス200からデータを読出す、一般的なリードシーケンスである。そして(3)は、本実施の形態にかかるリードシーケンスである。各シーケンスとも、スレーブデバイス200がSDA302にデータを出力している期間を、網掛けで示している。
【0039】
(1)のライトシーケンスでは、スレーブデバイス200は、ライトコマンド受付け後のACK応答期間及びライトデータ受付け後のACK応答期間に、SDA302にデータを出力する。
【0040】
また、(2)のリードシーケンスにおいては、スレーブデバイス200は、リードコマンド受付け後のACK応答期間及びその後のリードデータ伝送期間に、SDA302にデータを出力する。
【0041】
一方、(3)の本実施の形態にかかるリードシーケンスにおいては、I2C制御部101は、I2C制御部201がリードコマンドを受付けた後、SCL301の制御を停止する。先に説明したように、I2Cでのデータ伝送は、すべてマスタデバイス100がSCL301を制御することにより進行している。よって、SCL301の制御が停止している期間、I2C制御部201によるリードデータ伝送は停止する。図中の破線部は、リードデータ伝送が進行せず停止状態であることを示している。このとき、I2C制御部201はリードデータ伝送中の状態、すなわち、SDA302に対するデータ出力中の状態に保たれている。この状態のもとでは、I2C制御部201はSDA302を監視しない。すなわち、I2C制御部201は、SDA302へデータ出力を行っている間は、たとえSDA302に波形変動が生じたとしても、SDA302上の信号を内部へデータとして取込むことはない。また、SCL301に波形変動が生じ、スレーブデバイス200がそれをクロックとして誤検出した場合であっても、スレーブデバイス200はそのクロックタイミングに合わせてSDA302上にデータを出力するだけであり、デバイス内部へ誤ってデータを取込むという事態は生じない。
【0042】
ここで、本実施の形態にかかるリードシーケンス(3)が利用される場面について説明する。通常、データ伝送を行っていないマスタデバイス100のI2C制御部101及びスレーブデバイス200のI2C制御部201は、入力信号の待機状態にある。すなわち、I2C制御部201は、SCL301及びSDA302の電気信号を内部に取込み監視しつづける。しかしながら、この状態ではSCL301及びSDA302の予期しない波形変動に対応できないことは、上述したとおりである。そこで、本実施の形態においては、データ伝送を行わない待機状態に入る際に、マスタデバイス100のI2C制御部101が上述のリードシーケンス(3)を実行する。これにより、スレーブデバイス200のI2C制御部201は、データ出力中の状態のまま停止する。I2C制御部201は、データ出力中は、SDA302上の信号を内部へデータとして取込まない。したがって、たとえ待機中にSCL301及びSDA302に波形変動が生じたとしても、I2C制御部201は、誤ったデータを書込むなどの誤動作を行うことがない。
【0043】
加えて、本実施の形態にかかるリードシーケンス(3)の効果が得られる期間について説明する。図4(2)によれば、スレーブデバイス200はリードシーケンスにおいて、8bitのデータを出力した後に、マスタデバイス100からのACK応答の待機状態に遷移する。例えばリードシーケンスの中断中、SCL301に8bit分(クロック8サイクル分)の変動が生じると、この状態が発生し得る。このとき、スレーブデバイス200のI2C制御部201は、SDA302の信号を内部に取込み、入力信号を監視する。そのため、この時間において、スレーブデバイス200は誤書込み防止の効果を失うようにみえる。しかし、このような場合であっても、本発明による効果は失われない。マスタデバイス100が、ACK応答として、リード継続を示す1(SDA=High)を伝送した場合には、スレーブデバイス200は再度リードシーケンスを実行することになるからである。リードシーケンスを中断する際、マスタデバイスのSCL301及びSDA302は非制御状態となり、SCL301及びSDA302はHighに保たれる。そのため、たとえリードシーケンスの中断中にSCL301に波形変動が発生してリードシーケンスが進行し、ACK応答待ちの時間に至ったとしても、スレーブデバイス200には、SDA=Highが入力される。すなわち、スレーブデバイス200は、ACK応答としてSDA=Highが入力されたときと同じ状態となる。このため、スレーブデバイス200は、リードシーケンスの継続命令がなされたものと認識し、再びリードシーケンスを実行する。したがって、SCLに波形変動が生じたケースでも、本発明による効果は継続して得られることとなる。
【0044】
つづいて、図5のフローチャートを用い、本実施の形態にかかるリードシーケンスの動作についてさらに説明する。図5は、本実施の形態におけるマスタデバイス100の動作を示すフローチャートである。
【0045】
はじめに、マスタデバイス100は待機状態にあるものとする(ステップS101)。マスタデバイス100は、デバイス内部でI2C開始命令を生成し、I2Cデータ伝送を開始する(ステップS102)。具体的には、CPU103が、I2C制御部101に対しI2C開始命令を出力する。I2C開始命令を受けたI2C制御部101は、SCL301及びSDA302にSTART CONDITIONを出力する(ステップS103)。つづいて、I2C制御部101は、本発明の目的である誤書き込み防止を行いたい対象となるスレーブデバイス200を指定したADDRESSをSDA302に伝送する(ステップS104)。また、I2C制御部101は、COMMANDとしてリード(SDA=High)をSDA302に伝送する(ステップS105)。これにより、マスタデバイス100はスレーブデバイス200に対してリードシーケンスの実施を指示したこととなる。
【0046】
スレーブデバイス200のI2C制御部201は、リードコマンドを受付けた応答としてACK(SDA=Low)をSDA302に伝送する。マスタデバイス100のI2C制御部101は、ACK応答が正常に返送されたか否かを確認する(ステップS106)。スレーブデバイス200からのACK応答が確認できた場合には、マスタデバイス100は内部でI2C中断命令を生成する(ステップS108)。具体的には、CPU103が、I2C制御部101に対しI2C中断命令を出力する。I2C中断命令を受けたI2C制御部101は、SCL301及びSDA302の制御を停止する(ステップS109)。
【0047】
このとき、スレーブデバイス200はマスタデバイス100からのリードコマンドに応じデータ伝送を行っている最中であるから、スレーブデバイス200のI2C制御部201は出力状態で停止する。この状態においては、外部要因によってSCL301及びSDA302に波形変動が生じたとしても、スレーブデバイス200がそれを伝送データとして誤検出する可能性はない。例えば、SCL301に波形変動が生じ、スレーブデバイス200がそれをクロックとして誤検出した場合であっても、スレーブデバイス200はそのクロックタイミングに合わせてSDA302上にデータを出力するだけであり、デバイス内部へ誤ってデータを取込むことはない。またSDA302に変動が生じた場合であっても、この状態のもとではI2C制御部201はSDA302を監視しないので、スレーブデバイス200には影響がない。この結果、SCL301及びSDA302のいずれに意図しない波形変動が生じたケースであっても、スレーブデバイスに対する誤書込みを防止することができる。
【0048】
つぎに、図6のフローチャートを用いて、本実施の形態にかかるリードシーケンスの実施後に、再びスレーブデバイス200を通常の待機状態(SDA302を監視する状態)に戻す方法を説明する。図6は、マスタデバイス100の動作を示すフローチャートである。
【0049】
はじめに、SCL301及びSDA302は停止した状態にあるとする(ステップS201)。ここで、マスタデバイス100のI2C制御部101は、SDA301をLowとし、かつSCL302において連続的にHigh、Lowを切替えるトグル制御を行う。この制御により、I2C制御部101は、SCL302に9回以上のクロックを供給する(ステップS202)。ここで、SCL302に9回以上のクロックを供給するのは、本実施の形態では、スレーブデバイス200が8bitのリードデータをSDA302に出力した後、マスタデバイス100が1bitのACK応答をSDA302に送出することにより、リードシーケンスが終了するからである(図4(2)参照)。マスタデバイス100は、少なくとも9回のクロックを生成すれば、このACK応答までリードシーケンスを進行させることができる。その後、マスタデバイス100がSCL301及びSDA302によりSTOP CONDITIONを伝送する(ステップS203)。これにより、スレーブデバイス200及びマスタデバイス100は共に待機状態へ戻る(ステップS204)。このように、マスタデバイス100がSCL301の制御を再開することにより、スレーブデバイス200のリードシーケンスを進行させ、スレーブデバイス200のデータ伝送を終了させることが可能となる。
【0050】
本実施の形態においては、マスタデバイス100とスレーブデバイス200の間の半二重通信が中断する場合に、スレーブデバイス200のI2C制御部201が出力状態で状態維持される。これにより、システム設計上意図しないSCL301及びSDA302の波形変動を、スレーブデバイス200が誤ってデータとして取込むこと、すなわち誤書き込みを防止できる。
【0051】
また、本実施の形態においては、デバイス選択のための制御信号線(e.g. ライトイプロテクト信号及びチップセレクト信号など)をマスタデバイス100とスレーブデバイス200の間に追加することを必要としない。従って、本実施の形態は、スレーブデバイス200に対しては特別の改造や機能変更を必要とせずに、既知のI2Cインタフェースを利用して、誤書込み防止という効果を与えることができる。
【0052】
さらに、本実施の形態においては、データ出力状態で停止したスレーブデバイス200に対する、通常状態(データ入力待ち状態)への復旧手段を備えたことにより、必要な期間だけ誤書込みを防止し、スレーブデバイス200の他の機能への影響を最小限にすることができる。
【0053】
実施の形態3
本発明の実施の形態では、上述した発明の実施の形態2の変形3について説明する。具体的には、本発明の実施の形態では、上述したスレーブデバイス200がタイムアウト機能を有する場合に適応した改良について説明する。
【0054】
実施の形態3の基本的構成は、実施の形態2と同様である。ただし、本実施の形態のスレーブデバイス200は、タイムアウト機能を具備している。タイムアウト機能とは、典型的には、スレーブデバイス200が、I2Cデータ伝送シーケンスが一定時間以上状態遷移がないことを検出し、自動的にI2C制御部を初期化し、待機状態へ戻る機能である。I2Cインタフェースを備えたスレーブデバイスには、このようなタイムアウト機能を備えるものが少なくない。
【0055】
スレーブデバイス200がこのようなタイムアウト機能を有している場合、マスタデバイス100がリードシーケンスの途中でSCL301及びSDA302を停止し、スレーブデバイス200のI2C制御部201を出力状態で維持したとしても、スレーブデバイス200がタイムアウトを検出してしまい、I2C制御部201を自動的に入力待ち状態に戻してしまうことがあり得る。
【0056】
このような場合には、マスタデバイス100内に定周期タイマを備え、実施の形態2で説明したリードシーケンス(中断あり)(図5参照)を定周期的に実行することで、スレーブデバイス200においてタイムアウトが発生しても、その後再びI2C制御部201を出力状態に維持することが可能である。
【0057】
図7に、実施の形態3にかかるリードシーケンスを実行する場合のフローチャートを示す。図7は、マスタデバイス100の動作を示すフローチャートである。
【0058】
マスタデバイス100は定周期タイマを監視し、タイマ満了を検出すると、実施の形態2に示したリードシーケンスを開始する(ステップS110)。以降、マスタデバイス100は、図5に示した実施の形態2にかかるフローと同様の処理を行う。
【0059】
このとき、マスタデバイス内の定周期タイマの満了時間は、スレーブデバイス200のタイムアウト検出時間よりも長い時間で任意に決めてよい。ただし、スレーブデバイス200のタイムアウト検出時間よりもわずかに長い時間とすることで、I2C制御部201を出力状態に保つ時間をより長くする効果を得ることができる。図8に、マスタデバイス100の定周期タイマの満了時間と、スレーブデバイス200が出力状態に保たれる時間との関係を示す。図8において、(1)は定周期タイマの満了時間がスレーブデバイス200のタイムアウト時間よりも十分に長いケースを示している。この場合は、スレーブデバイス200がタイムアウトにより入力待ち状態へ遷移してから、再び本実施の形態にかかる方法により出力状態が保たれるようになるまでの時間が長い。すなわち、スレーブデバイス200が入力待ち状態にある時間が長くなる。一方、(2)は定周期タイマの満了時間とスレーブデバイス200のタイムアウト時間とがほぼ等しいケースである。この場合、スレーブデバイス200が出力状態に保たれる時間が長くなる。このため、本発明の目的である、外部からの波形変動による誤書込みの防止効果を、より効果的に享受することができる。
【0060】
本実施の形態では、スレーブデバイス200を通常状態へ復旧させるために、実施の形態2で説明した方法(図6参照)を取る必要はない。マスタデバイス100が定周期タイマを停止し、本発明のリードシーケンス(中断あり)の実行を行わなければ、スレーブデバイス200は自動的に通常状態に復旧する。
【0061】
なお、マスタデバイス100は、スレーブデバイス200のタイムアウトを待たずに、自らスレーブデバイス200のI2C制御部201を通常状態に復旧させた後、再度I2C制御部201を出力状態にして停止させることとしてもよい。具体的には、マスタデバイス100は、定周期的に、実施の形態2で説明したスレーブデバイス200を通常の待機状態(SDA302を監視する状態)に戻す手順(図6参照)を実行し、つづけて、実施の形態2で説明したリードシーケンス(中断あり)(図5参照)を実行する。このとき、マスタデバイス100は、定周期タイマの満了時間をスレーブデバイス200のタイムアウト検出時間よりも短い時間に設定し、タイマ満了を検出して上述の処理を実行することが望ましい。
【0062】
本実施の形態においては、定周期でのリードシーケンスを実施することで、スレーブデバイス200がタイムアウト機能を有しているケースにおいても、誤書込みの防止という効果が得ることができる。
【0063】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【0064】
例えば、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0065】
また、本発明にかかる情報処理装置は、必ずしも1つの筐体に実装されたものである必要はない。例えば、第1の制御部と第2の制御部とは離隔した装置に実装され、データバスやネットワーク回線等のデータ線を介して相互に接続されたものであってよい。
【0066】
上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0067】
(付記1)
第1の制御部と、
前記第1の制御部との間で、少なくとも1つのデータ線を用いて半二重通信を行う第2の制御部とを有し、
前記第2の制御部は、前記通信が中断される場合に、前記第1の制御部からの制御に応答して、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止する
情報処理装置。
【0068】
(付記2)
前記第1の制御部は、前記通信を中断する場合に、前記第2の制御部を前記出力モードとした後、前記第2の制御部に供給される動作クロックを停止することにより、前記第2の制御部を停止させる
付記1記載の情報処理装置。
【0069】
(付記3)
前記第2の制御部は、前記通信が再開される場合に、前記第1の制御部からの制御に応答して、前記データの受信を行うが送信を行わない待機モードに遷移する
付記1乃至2いずれか1項記載の情報処理装置。
【0070】
(付記4)
前記第1の制御部は、前記通信を再開する場合に、前記第2の制御部への動作クロックの供給を再開すると共に、前記第2の制御部を前記待機モードに遷移させる
付記1乃至3いずれか1項記載の情報処理装置。
【0071】
(付記5)
前記第2の制御部は、前記データ線によるデータの送受信が所定の時間中断した場合、前記待機モードに遷移するタイムアウト機能を有し、
前記第1の制御部は、一定時間毎に、前記第2の制御部を前記出力モードで停止させる処理を行う
付記1乃至4いずれか一項記載の情報処理装置。
【0072】
(付記6)
前記第1の制御部は、前記タイムアウトが発生する毎に、前記第2の制御部を前記出力モードで停止させる処理を行う
付記5記載の情報処理装置。
【0073】
(付記7)
前記第1の制御部は、前記タイムアウトが発生する前に、前記第2の制御部を前記待機モードに遷移させる処理と、前記第2の制御部を前記出力モードで停止させる処理とを行う
付記5記載の情報処理装置。
【0074】
(付記8)
通信先制御部との間で少なくとも1つのデータ線を用いて行われる半二重通信が中断される場合に、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するよう前記通信先制御部を制御する
情報処理方法。
【0075】
(付記9)
前記通信を中断する場合に、前記通信先制御部を前記出力モードとした後、前記通信先制御部に供給される動作クロックを停止することにより、前記通信先制御部を停止させる
付記8記載の情報処理方法。
【0076】
(付記10)
前記通信が再開される場合に、前記データの受信を行うが送信を行わない待機モードに遷移するよう前記通信先制御部を制御する
付記8乃至9いずれか1項記載の情報処理方法。
【0077】
(付記11)
前記通信を再開する場合に、前記通信先制御部への動作クロックの供給を再開すると共に、前記通信先制御部を前記待機モードに遷移させる
付記8乃至10いずれか1項記載の情報処理方法。
【0078】
(付記12)
前記通信先制御部が、前記データ線によるデータの送受信が所定の時間中断した場合、前記待機モードに遷移するタイムアウト機能を有する場合は、
前記前記通信先制御部を一定時間毎に前記出力モードで停止させる
付記8乃至11いずれか一項記載の情報処理方法。
【0079】
(付記13)
前記タイムアウトが発生する毎に、前記通信先制御部を前記出力モードで停止させる
付記12記載の情報処理方法。
【0080】
(付記14)
前記タイムアウトが発生する前に、前記通信先制御部を前記待機モードに遷移させ、前記通信先制御部を前記出力モードで停止させる
付記12記載の情報処理方法。
【0081】
(付記15)
所定の動作をコンピュータに実行させるためのプログラムであって、
通信先制御部との間で少なくとも1つのデータ線を用いて行われる半二重通信が中断される場合に、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するよう前記通信先制御部を制御する処理をコンピュータに実行させる
情報処理プログラム。
【0082】
(付記16)
前記通信を中断する場合に、前記通信先制御部を前記出力モードとした後、前記通信先制御部に供給される動作クロックを停止することにより、前記通信先制御部を停止させる処理をコンピュータに実行させる
付記15記載の情報処理プログラム。
【0083】
(付記17)
前記通信が再開される場合に、前記データの受信を行うが送信を行わない待機モードに遷移するよう前記通信先制御部を制御する処理をコンピュータに実行させる
付記15乃至16いずれか1項記載の情報処理プログラム。
【0084】
(付記18)
前記通信を再開する場合に、前記通信先制御部への動作クロックの供給を再開すると共に、前記通信先制御部を前記待機モードに遷移させる処理をコンピュータに実行させる
付記15乃至17いずれか1項記載の情報処理プログラム。
【0085】
(付記19)
前記通信先制御部が、前記データ線によるデータの送受信が所定の時間中断した場合、前記待機モードに遷移するタイムアウト機能を有する場合は、
前記前記通信先制御部を一定時間毎に前記出力モードで停止させる処理をコンピュータに実行させる
付記15乃至18いずれか一項記載の情報処理プログラム。
【0086】
(付記20)
前記タイムアウトが発生する毎に、前記通信先制御部を前記出力モードで停止させる処理をコンピュータに実行させる
付記19記載の情報処理プログラム。
【0087】
(付記21)
前記タイムアウトが発生する前に、前記通信先制御部を前記待機モードに遷移させ、前記通信先制御部を前記出力モードで停止させる処理をコンピュータに実行させる
付記19記載の情報処理プログラム。
【符号の説明】
【0088】
1000 情報処理装置
100 マスタデバイス
101 I2C制御部
102 メモリ部
103 CPU
200 スレーブデバイス
201 I2C制御部
202 メモリ部
203 デバイス機能部
300 データ線
301 SCL
302 SDA

【特許請求の範囲】
【請求項1】
第1の制御部と、
前記第1の制御部との間で、少なくとも1つのデータ線を用いて半二重通信を行う第2の制御部とを有し、
前記第2の制御部は、前記通信が中断される場合に、前記第1の制御部からの制御に応答して、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止する
情報処理装置。
【請求項2】
前記第1の制御部は、前記通信を中断する場合に、前記第2の制御部を前記出力モードとした後、前記第2の制御部に供給される動作クロックを停止することにより、前記第2の制御部を停止させる
請求項1記載の情報処理装置。
【請求項3】
前記第2の制御部は、前記通信が再開される場合に、前記第1の制御部からの制御に応答して、前記データの受信を行うが送信を行わない待機モードに遷移する
請求項1乃至2いずれか1項記載の情報処理装置。
【請求項4】
前記第1の制御部は、前記通信を再開する場合に、前記第2の制御部への動作クロックの供給を再開すると共に、前記第2の制御部を前記待機モードに遷移させる
請求項3記載の情報処理装置。
【請求項5】
前記第2の制御部は、前記データ線によるデータの送受信が所定の時間中断した場合、前記待機モードに遷移するタイムアウト機能を有し、
前記第1の制御部は、一定時間毎に、前記第2の制御部を前記出力モードで停止させる処理を行う
請求項1乃至4いずれか一項記載の情報処理装置。
【請求項6】
前記第1の制御部は、前記タイムアウトが発生する毎に、前記第2の制御部を前記出力モードで停止させる処理を行う
請求項5記載の情報処理装置。
【請求項7】
前記第1の制御部は、前記タイムアウトが発生する前に、前記第2の制御部を前記待機モードに遷移させる処理と、前記第2の制御部を前記出力モードで停止させる処理とを行う
請求項5記載の情報処理装置。
【請求項8】
通信先制御部との間で少なくとも1つのデータ線を用いて行われる半二重通信が中断される場合に、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するよう前記通信先制御部を制御する
情報処理方法。
【請求項9】
前記通信を中断する場合に、前記通信先制御部を前記出力モードとした後、前記通信先制御部に供給される動作クロックを停止することにより、前記通信先制御部を停止させる
請求項8記載の情報処理方法。
【請求項10】
所定の動作をコンピュータに実行させるためのプログラムであって、
通信先制御部との間で少なくとも1つのデータ線を用いて行われる半二重通信が中断される場合に、前記データ線へのデータの送信を行うが受信を行わない出力モードで停止するよう前記通信先制御部を制御する処理をコンピュータに実行させる
情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate