しかしながら、特許文献1及び特許文献2に開示の技術は、I2Cバスによってマスタデバイスとスレーブデバイスとを接続し、データ転送を行う際に発生するエラーを検出することはできるが、当該エラーに陥る危険性を低減することや当該エラーから復帰することはできないという問題がある。
即ち、特許文献1や特許文献2に開示された技術のように、スレーブデバイスがエラー検出手段を有する場合であっても、エラーに陥る危険性を低減するための動作、或いはエラーから復帰する動作ができなければ意味がない。例えば、スレーブデバイスのレジスタの予期しないアドレスにデータが書き込まれる場合、エラーに陥る危険性を低減するための動作、或いはエラーから復帰する動作ができなければ、スレーブデバイスにエラーが発生し、予期しない動作を起こす可能性がある。
さらに通信エラーによってマスタデバイスとスレーブデバイスとの間でデータ転送ができなくなってしまった場合には、当然ながら、エラーに関する詳細な情報を、スレーブデバイスのエラー状態の内容を記憶するレジスタ(ステータスレジスタ)から読み出すことができない。このとき、通信を復帰させるためには、スレーブデバイスに対してリセットをかけ、デバイス自体を初期化する必要があるが、この場合、通信エラーに関する情報も同時に消去されてしまう。そのため、結果的に、エラー状態を確認することができない。
特許文献1や特許文献2に開示された技術をエラー検出装置として採用した場合、通常であればエラー状態からの復帰はマスタデバイスに委ねられる。即ち、マスタデバイスがスレーブデバイスに対してリセットをかける、或いはデータ信号を再送することでしか、エラー状態からの復帰することができない。
そのため、上述のように、スレーブデバイスに対してリセットをかけると、エラー状態を確認することができなくなるし、データ信号を再送すると、スレーブデバイスに記憶された情報を読み出す動作が必要になるため、実質的なデータ転送レートが悪化する。
また、特許文献3は、I2Cバスによってマスタデバイスとスレーブデバイスとを接続し、データ転送を行う際に発生するエラーを検出し、さらにスレーブデバイスをエラーから復帰させることはできるが、データ転送時のデータ転送レートが悪いという問題がある。
即ち、特許文献3では、バスエラー検出手段と、エラーデータ処理手段と、エラー処理手段によってエラーの検出及びエラーからの復帰を行う構成であるが、これらの手段を備える制御部はCPUに接続されている。そして、CPUによるソフトウエア的な処理によってエラーの検出処理及びエラーからの復帰処理を実施している。言い換えれば、制御部はマスタデバイスに接続され、エラーの検出処理及びエラーからの復帰処理を全てマスタデバイスにて実施する構成であり、スレーブデバイスである制御デバイスにはエラー検出機能、復帰機能は存在しない。
そのためCPUから制御デバイスにデータを書き込む度に、CPUは必ず当該データを再度読み込み、さらに当該データに対しCPUがエラー検出処理を行うことでようやくエラーを検出する。結果として、スレーブデバイスに記憶された情報を読み出す動作が余分に必要になり、かつエラーを検出するための処理がCPUに偏ってしまうため、実質的なデータ転送レートが大幅に悪化する。
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、スレーブデバイスに記憶された情報を読み出す動作を行うことなく、通信不能状態に陥る危険性を低減することができるデータ通信誤動作防止装置を提供することにある。
また本発明の別の目的は、エラーを検出するための処理がマスタデバイスに偏ることなく、かつ、データ転送レートの低下を抑制することができるデータ通信誤動作防止装置を提供することにある。
また本発明の別の目的は、マスタデバイスがスレーブデバイスに発生したエラーの状態を確認することができ、かつスレーブデバイスに記憶された情報を読み出す動作を行うことなく、自律的に通信不能状態から復帰することができるデータ通信誤動作防止装置を提供することにある。
本発明に係るデータ通信誤動作防止装置は、上記課題を解決するために、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置であって、上記第1の装置は、上記信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始手段及び通信停止手段を備え、上記第2の装置は、上記信号線の信号状態に基づいて上記データ通信を開始及び停止するデータ通信手段を備え、上記通信開始手段がデータ通信を開始した場合、上記データ通信手段を動作状態とし、上記通信停止手段がデータ通信を停止した場合、上記データ通信手段を非動作状態とする切替手段を備えることを特徴としている。
上記の構成によれば、第1の装置は、信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始手段及び通信停止手段を備える。また、第2の装置は、信号線の信号状態に基づいてデータ通信を開始及び停止するデータ通信手段を備える。
信号線の信号状態に基づいてデータ通信を開始及び停止する構成では、信号線に混入する外来ノイズにより、偶発的にデータ通信を開始させる信号状態を生じさせ、データ通信の予期せぬ開始による誤動作を招来するおそれがある。
そこで、上記構成では、さらに、第2の装置に設けられるデータ通信手段が信号線の信号状態に基づいてデータ通信を行うことが可能である動作状態と、当該データ通信を行うことが不可能である非動作状態と、を切り替える切替手段を備える。
これにより、第1の装置と第2の装置との通信が確立している間、即ちデータ転送期間中は、データ通信手段は動作状態となり、第1の装置と第2の装置との通信が停止している間、即ちデータ転送停止期間中は、データ通信手段は非動作状態となるため、データ転送停止期間中に外来ノイズが混入した場合においても、第2の装置は誤動作を起こすことがない。
従って、第2の装置に記憶された情報を読み出す動作を行うことなく、通信不能状態に陥る危険性を低減することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、上記切替手段は、上記第1の装置に備えられ、上記通信開始手段が出力するデータ通信を開始する開始コマンド及び上記通信停止手段が出力するデータ通信を停止する停止コマンドが入力され、開始コマンドが入力された場合、上記データ通信手段を動作状態とし、停止コマンドが入力された場合、上記データ通信手段を非動作状態とする構成であってもよい。なお、データ通信手段の動作状態と非動作状態とを切り替えるための切替手段からデータ通信手段への指示は、データ通信手段の行うデータ通信とは別系統の信号によって行うようにすればよい。
本発明に係るデータ通信誤動作防止装置は、上記第2の装置は、上記データ通信手段によるデータ通信によって受信したデータを記憶する記憶手段を備え、上記切替手段は、上記データ通信手段による上記記憶手段への受信データの書き込みを禁止することによって、上記データ通信手段を非動作状態とすることを特徴としている。
上記の構成によれば、第2の装置は、データ通信手段によるデータ通信によって受信したデータを記憶する記憶手段を備える。そして、切替手段は、データ通信手段によって記憶手段へ受信データが書き込まれることを禁止する。切替手段が受信データの記憶手段への書き込みを禁止すると、第2の装置は、当該受信データを保持することができないし、第1の装置から、当該受信データを読み出すこともできない。即ち、第2の装置のデータ通信手段は非動作状態となる。
本発明に係るデータ通信誤動作防止装置は、上記課題を解決するために、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置であって、上記データ通信は、データ信号とクロック信号とによって行われ、上記第2の装置は、上記データ信号及びクロック信号の一方または両方にエラーが発生している場合、当該第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出するエラー検出通知手段を備えることを特徴としている。
上記の構成によれば、第2の装置は、エラー検出通知手段を備える。このエラー検出通知手段は、データ信号とクロック信号とによって行われるデータ通信時において、これらの信号の一方または両方にエラーが発生している場合、第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出する。
なお、このときエラー割り込み信号は、データ通信手段の行うデータ通信とは別系統の信号によって、第2の装置から第1の装置に通知することにより、データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができる。
従って、第1の装置が、データ転送期間中に発生するデータ転送時におけるエラーの状態を確認することができる。また、第2の装置に記憶された情報を読み出す動作を行うことなく、自律的に通信不能状態から復帰することができるという効果を奏する。さらに、データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができるため、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、上記データ信号及び上記クロック信号は、High及びLowの2値の状態を有する信号であり、上記エラー検出通知手段は、上記クロック信号及びデータ信号において想定されていない状態遷移を検出することにより、当該データ信号にエラーが発生していることを検出することを特徴としている。
例えば、I2Cバスのインターフェース仕様においては、クロック信号がHighの状態に保持されている場合において、データ信号がHighからLowへ状態遷移ことはない。従って、クロック信号がHighの状態でデータ信号がHighからLowへ状態遷移した場合はエラーであると考えられ、上記の構成によれば、エラー検出通知手段はこのようなデータ信号の状態遷移をエラーとして検出することができる。
また、本発明に係るデータ通信誤動作防止装置は、上記第1の装置は、上記信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始手段及び通信停止手段を備え、上記クロック信号は、High及びLowの2値の状態を有するパルス信号であり、上記エラー検出通知手段は、上記クロック信号のパルス数を計数するカウンタを有し、上記通信開始手段がデータ通信を開始してから、上記通信開始手段がデータ通信を停止するまでの間の、上記カウンタが計数したパルス数が所定の値以外の数値であった場合、当該クロック信号にエラーが発生していることを検出することを特徴としている。
上記の構成によれば、クロック信号は、High及びLowの2値の状態を有するパルス信号である。そして、エラー検出通知手段は、クロック信号のパルス数を計数するカウンタを有している。このカウンタは、通信開始手段がデータ通信を開始してから、通信開始手段がデータ通信を停止するまでの間において、自身が計数したパルス数が、所定の値以外の数値であった場合、上記クロック信号にエラーが発生していることを検出する。そして、それによって、データ転送期間中に発生するデータ転送時におけるエラーを検出することができる。
例えば、I2Cバスのインターフェース仕様においては、通信開始手段がデータ通信を開始してから、通信停止手段がデータ通信を停止する信号を出力するまでの間のカウンタ値は一定の値(例えばn個のライトデータを送信する場合、カウンタ値は(2+n)×9−1)となる。しかしながら、例えばクロック信号にノイズが混入した場合、クロック信号は一時的に状態遷移するため、パルスの数が増加(または減少)する。従って、カウンタ値が所定の値以外の数値をとる場合はエラーであると考えられ、エラー検出通知手段はこのような場合をエラーとして検出することができる。
また、本発明に係るデータ通信誤動作防止装置は、上記第2の装置におけるデータ通信誤動作を防止する信号は、上記データ通信手段を初期化させる信号であることを特徴としている。
上記の構成によれば、エラー検出通知手段は、データ通信手段を初期化することによって、データ通信手段の誤動作を防止することができる。
また、本発明に係るデータ通信誤動作防止装置は、上記第2の装置は、さらに、上記データ通信手段が受信したデータ信号に含まれるデータが書き込まれることで当該データを保持する設定記憶手段を備え、上記第2の装置におけるデータ通信誤動作を防止する信号は、上記データ通信手段が受信したデータを、上記設定記憶手段に書き込むことを禁止する信号であることを特徴としている。
上記の構成によれば、エラー検出通知手段は、第2の装置に備えられた設定記憶手段に対する書き込みを禁止することによって、データ通信手段の誤動作を防止する。
また、本発明に係るデータ通信誤動作防止装置は、上記エラー検出通知手段は、上記データ通信が所定の時間以上停止しない場合、上記データ通信手段を初期化させると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出するデータ通信手段リセットカウンタを備えることを特徴としている。
上記の構成によれば、エラー検出通知手段は、データ通信手段リセットカウンタを備える。このデータ通信手段リセットカウンタは、データ通信が所定の時間以上停止しない場合、データ通信手段を初期化させると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出する。
なお、このときエラー割り込み信号は、データ通信手段の行うデータ通信とは別系統の信号によって、第2の装置から第1の装置に通知される。そのため、データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができる。
本発明に係るデータ通信誤動作防止装置は、上記課題を解決するために、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置であって、上記第1の装置は、上記第2の装置に転送したデータを記憶する第1の記憶手段と、上記第1の記憶手段に記憶したデータの、不可逆な一方向性関数により生成される当該データよりもデータ容量が小さい要約値を計算する第1の要約値計算手段とを備え、上記第2の装置は、受信したデータが書き込まれることで、当該データを記憶する第2の記憶手段と、上記第2の記憶手段に記憶されたデータの要約値を計算する第2の要約値計算手段とを備え、上記第1の装置は、さらに、第2の要約値計算手段により計算され、上記第1の装置に転送された要約値と、上記第1の要約値計算手段により計算された要約値とを比較する比較手段を備えることを特徴としている。
上記の構成によれば、第1の装置には第1の記憶手段と第1の要約値計算手段とを備える。また、第2の装置には第2の要約値計算手段と第2の記憶手段とを備える。さらに、第1の装置は比較手段を備える。第2の要約値計算手段は、第2の記憶手段に記憶されるデータの要約値を計算し、計算結果を第1の装置に送信する。そして第1の装置は、第1の記憶手段に記憶した第2の装置に転送したデータから、当該データの要約値を計算する。そして、第1の要約値計算手段が計算した第1の記憶手段に記憶されるデータの要約値と第2の要約値計算手段が計算したデータ通信手段が受信したデータの要約値とを比較手段で比較する。
なお、「要約値」とは、第1及び第2の要約値計算手段にて要約値の計算が行われるデータの不可逆な一方向性関数により生成される、当該データよりも容量が小さい値であり、このような要約値としては例えば、チェックサムまたはハッシュ値等が挙げられる。また要約値は、上記定義に示される値に加え、その他様々なデータ(例えば、受信データの履歴)が含まれた値であってもよい。さらに、上記第1及び第2の要約値計算手段は、具体的には、チェックサム計算、ハッシュ値の計算、第1の装置による第2の記憶手段へのアクセス履歴の記憶、等の処理を行っている。要約値、及び第1及び第2の要約値計算手段の詳細な説明については後述する。
これにより、これらの値が異なっていた場合、第2の記憶手段に記憶されるデータ、即ち第2の装置に転送したデータにエラーが発生していると認識することができる。
従って、第2の装置に転送したデータに発生するエラーを検出することができるという効果を奏する。また、第2の装置にエラーが発生した場合において、エラーを検出するための処理が第1の装置に偏ることがないので、第1の装置に多大な負荷をかけずに済むという効果を奏する。さらに、第2の装置から第1の装置に対して送信するデータは、第2の装置が受信したデータそのものではなく、受信したデータの要約値であるので、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、上記第1及び第2の要約値計算手段は、それぞれ上記第1及び第2の記憶手段に記憶されるデータに対し、当該データに要約計算関数を付加し、当該データを固定長のビット列に変換することによって要約値を計算することを特徴としている。
上記の構成によれば、第1及び第2の要約値計算手段は、自身が要約値計算を行うデータに対し、当該データに要約計算関数を付加し、当該データを固定長のビット列に変換することによって要約値を計算する。このような要約計算関数としては例えば、ハッシュ関数やチェックサム関数等が考えられる。第1及び第2の要約値計算手段は、このような要約計算関数を用いて要約値の計算を行うことができる。
また、本発明に係るデータ通信誤動作防止装置は、上記第2の要約値計算手段は、上記第2の記憶手段に記憶されたデータの要約値の計算を開始する以後の、上記第1の装置による上記第2の記憶手段へのアクセス履歴を記憶する要約値記憶手段を備えることを特徴としている。
上記の構成によれば、第2の要約値計算手段は、要約値記憶手段を備える。この要約値記憶手段は、第2の記憶手段に記憶されるデータの履歴、即ち、第2の装置に転送されたデータや当該データが保存される第2の記憶手段の領域等が記憶される。つまり、要約値記憶部は、第1の装置による、第2の記憶手段へのアクセス履歴を記憶する。
従って、第1の装置が第2の記憶手段にアクセスした以降に第1の装置から第2の装置に書き込まれたデータを逐次的に比較することが可能となるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、上記データ通信は、データ信号とクロック信号とによって行われ、上記第2の装置は、さらに、上記データ信号及びクロック信号の一方または両方にエラーが発生している場合、当該第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出するエラー検出通知手段を備えることを特徴としている。
上記の構成によれば、第2の装置にはさらに、エラー検出通知手段を備える。データ転送期間中にエラー検出手段がエラーを検出すると、エラー検出通知手段は、データ信号とクロック信号とによって行われるデータ通信において、これらの信号の一方または両方にエラーが発生している場合、第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出することができる。
また、本発明に係るデータ送受信装置は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置を備える電子機器であって、上記データ通信誤動作防止装置は上記のいずれかのデータ通信誤動作防止装置であることを特徴としている。
上記の構成によれば、上記のいずれかのデータ通信誤動作防止装置を電子機器に備えることで、高品質な電子機器を提供することができる。
また、上記信号線はI2Cバスであることが望ましい。
また、本発明に係るデータ通信誤動作防止装置の制御方法は、上記課題を解決するために、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置の制御方法であって、上記第1の装置が上記信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始ステップ及び通信停止ステップと、上記信号線の信号状態に基づいて上記第2の装置が上記データ通信を行うデータ通信ステップと、上記通信開始ステップにてデータ通信が開始された場合、上記データ通信ステップを実行可能とし、上記通信停止ステップにてデータ通信が停止された場合、上記データ通信ステップを実行不能とする切替ステップとを含むことを特徴としている。
上記の方法によれば、第1の装置が信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始ステップ及び通信停止ステップを含む。また、第2の装置が信号線の信号状態に基づいてデータ通信を行うデータ通信ステップを含む。
信号線の信号状態に基づいてデータ通信を行う方法では、信号線に混入する外来ノイズにより、偶発的にデータ通信を開始させる信号状態が生じ、データ通信の予期せぬ開始による誤動作を招来するおそれがある。
そこで、上記方法では、さらに、第2の装置にて実行されるデータ通信にて信号線の信号状態に基づくデータ通信の実行可能及び実行不能を切り替える切替ステップを含む。
これにより、第1の装置と第2の装置との通信が確立している間、即ちデータ転送期間中は、データ通信が実行可能となり、第1の装置と第2の装置との通信が停止している間、即ちデータ転送停止期間中は、データ通信は実行不能となるため、データ転送停止期間中に外来ノイズが混入した場合においても、第2の装置は誤動作を起こすことがない。
従って、第2の装置に記憶された情報を読み出す動作を行うことなく、通信不能状態に陥る危険性を低減することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置の制御方法は、上記課題を解決するために、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置の制御方法であって、上記データ通信は、データ信号とクロック信号とによって行われ、上記データ信号及びクロック信号の一方または両方にエラーが発生していることを上記第2の装置において検出することにより、当該第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出するエラー検出通知ステップを含むことを特徴としている。
上記の方法によれば、データ信号とクロック信号とによって行われるデータ通信時において、これらの信号の一方または両方にエラーが発生していることを第2の装置において検出する。そして、上記エラーを検出した場合、第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出する。
なお、このときエラー割り込み信号は、データ通信手段の行うデータ通信とは別系統の信号によって、第2の装置から第1の装置に通知するため、データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができる。
従って、第1の装置が、データ転送期間中に発生するデータ転送時におけるエラーの状態を確認することができる。さらに、第2の装置に記憶された情報を読み出す動作を行うことなく、自律的に通信不能状態から復帰することができるという効果を奏する。データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができるため、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置の制御方法は、上記課題を解決するために、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置の制御方法であって、上記第2の装置に転送したデータを上記第1の装置において記憶する第1の記憶ステップと、上記第1の記憶ステップにて記憶したデータの、不可逆な一方向性関数により生成される当該データよりもデータ容量が小さい要約値を上記第1の装置において計算する第1の要約値計算ステップとを含み、受信したデータが書き込まれることで、当該データを上記第2の装置において記憶する第2の記憶ステップと、上記第2の記憶ステップにて記憶されたデータの要約値を上記第2の装置において計算する第2の要約値計算ステップと、第2の要約値計算ステップにて計算され、上記第1の装置に転送された要約値と、上記第1の要約値計算ステップにて計算された要約値とを上記第1の装置において比較する比較ステップを含むことを特徴としている。
上記の構成によれば、第2の装置に転送したデータを第1の記憶ステップにて第1の装置において記憶し、第1の要約値計算ステップにて当該データの要約値を第1の装置において計算する。また、第2の記憶ステップでは、受信したデータが書き込まれることで、当該データを第2の装置において記憶し、第2の要約値計算ステップにて、第2の記憶ステップにて記憶されたデータの要約値を、第2の装置において計算する。そして、第2の要約値計算ステップにて計算され、第1の装置に転送された要約値と、第1の要約値計算ステップにて計算された要約値とを、比較ステップにて、第1の装置において比較する。
これにより、これらの値が異なっていた場合、第2の記憶ステップに記憶するデータ、即ち第2の装置に転送されたデータにエラーが発生していると認識することができる。
従って、第2の装置に転送したデータに発生するエラーを検出することができるという効果を奏する。また、第2の装置にエラーが発生した場合において、エラーを検出するための処理が第1の装置に偏ることがないので、第1の装置に多大な負荷をかけずに済むという効果を奏する。さらに、第2の装置から第1の装置に対して送信されるデータは、第2の装置が受信したデータそのものではなく、受信したデータの要約値であるので、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、上記第2の要約値計算ステップは、上記第2の記憶ステップにて記憶されたデータの要約値の計算を開始する以後の、上記第1の装置による上記第2の記憶ステップの実行履歴を記憶する要約値記憶ステップを含むことを特徴としている。
上記の構成によれば、第2の要約値計算ステップは、要約値記憶ステップを含む。この要約値記憶ステップは、第2の記憶ステップにて記憶されるデータの履歴、即ち、第2の装置に転送されたデータ等が記憶される。つまり、要約値記憶ステップは、第2の記憶ステップの実行履歴を記憶する。
なお、上記データ通信誤動作防止装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記各手段として動作させることにより上記データ通信誤動作防止装置をコンピュータにて実現させるデータ通信誤動作防止装置の制御プログラム、及びそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
以上のように、本発明に係るデータ通信誤動作防止装置は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置であって、上記第1の装置は、上記信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始手段及び通信停止手段を備え、上記第2の装置は、上記信号線の信号状態に基づいて上記データ通信を開始及び停止するデータ通信手段を備え、上記通信開始手段がデータ通信を開始した場合、上記データ通信手段を動作状態とし、上記通信停止手段がデータ通信を停止した場合、上記データ通信手段を非動作状態とする切替手段を備える構成である。
従って、第2の装置に記憶された情報を読み出す動作を行うことなく、通信不能状態に陥る危険性を低減することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置であって、上記データ通信は、データ信号とクロック信号とによって行われ、上記第2の装置は、上記データ信号及びクロック信号の一方または両方にエラーが発生している場合、当該第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出するエラー検出通知手段を備える構成である。
従って、第1の装置が、データ転送期間中に発生するデータ転送時におけるエラーの状態を確認することができる。また、第2の装置に記憶された情報を読み出す動作を行うことなく、自律的に通信不能状態から復帰することができるという効果を奏する。さらに、データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができるため、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置であって、上記第1の装置は、上記第2の装置に転送したデータを記憶する第1の記憶手段と、上記第1の記憶手段に記憶したデータの、不可逆な一方向性関数により生成される当該データよりもデータ容量が小さい要約値を計算する第1の要約値計算手段とを備え、上記第2の装置は、受信したデータが書き込まれることで、当該データを記憶する第2の記憶手段と、上記第2の記憶手段に記憶されたデータの要約値を計算する第2の要約値計算手段とを備え、上記第1の装置は、さらに、第2の要約値計算手段により計算され、上記第1の装置に転送された要約値と、上記第1の要約値計算手段により計算された要約値とを比較する比較手段を備える構成である。
従って、第2の装置に転送したデータに発生するエラーを検出することができるという効果を奏する。また、第2の装置にエラーが発生した場合において、エラーを検出するための処理が第1の装置に偏ることがないので、第1の装置に多大な負荷をかけずに済むという効果を奏する。さらに、第2の装置から第1の装置に対して送信するデータは、第2の装置が受信したデータそのものではなく、受信したデータの要約値であるので、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置の制御方法は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置の制御方法であって、上記第1の装置が上記信号線の信号状態を制御することによって、それぞれデータ通信を開始及び停止する通信開始ステップ及び通信停止ステップと、上記信号線の信号状態に基づいて上記第2の装置が上記データ通信を行うデータ通信ステップと、上記通信開始ステップにてデータ通信が開始された場合、上記データ通信ステップを実行可能とし、上記通信停止ステップにてデータ通信が停止された場合、上記データ通信ステップを実行不能とする切替ステップとを含む方法である。
従って、第2の装置に記憶された情報を読み出す動作を行うことなく、通信不能状態に陥る危険性を低減することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置の制御方法は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置の制御方法であって、上記データ通信は、データ信号とクロック信号とによって行われ、上記データ信号及びクロック信号の一方または両方にエラーが発生していることを上記第2の装置において検出することにより、当該第2の装置におけるデータ通信誤動作を防止する信号を送出すると共に、エラーが発生したことを第1の装置に通知するエラー割り込み信号を送出するエラー検出通知ステップを含む方法である。
従って、第1の装置が、データ転送期間中に発生するデータ転送時におけるエラーの状態を確認することができる。さらに、第2の装置に記憶された情報を読み出す動作を行うことなく、自律的に通信不能状態から復帰することができるという効果を奏する。データ通信を行う信号線を使用することなく、エラーが発生したことを第1の装置に通知することができるため、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置の制御方法は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有するデータ通信誤動作防止装置の制御方法であって、上記第2の装置に転送したデータを上記第1の装置において記憶する第1の記憶ステップと、上記第1の記憶ステップにて記憶したデータの、不可逆な一方向性関数により生成される当該データよりもデータ容量が小さい要約値を上記第1の装置において計算する第1の要約値計算ステップとを含み、受信したデータが書き込まれることで、当該データを上記第2の装置において記憶する第2の記憶ステップと、上記第2の記憶ステップにて記憶されたデータの要約値を上記第2の装置において計算する第2の要約値計算ステップと、第2の要約値計算ステップにて計算され、上記第1の装置に転送された要約値と、上記第1の要約値計算ステップにて計算された要約値とを上記第1の装置において比較する比較ステップを含む方法である。
従って、第2の装置に転送したデータに発生するエラーを検出することができるという効果を奏する。また、第2の装置にエラーが発生した場合において、エラーを検出するための処理が第1の装置に偏ることがないので、第1の装置に多大な負荷をかけずに済むという効果を奏する。さらに、第2の装置から第1の装置に対して送信されるデータは、第2の装置が受信したデータそのものではなく、受信したデータの要約値であるので、データ通信におけるデータ転送レートの低下を抑制することができるという効果を奏する。
本発明の実施の形態について図1から図11に基づいて説明すると以下の通りである。なお、説明の便宜上、すでに図面を用いて説明した部材と同一の機能を有する部材には、同一の符号を付記してその説明を省略する。
〔実施の形態1〕
図1は、本発明に係るデータ通信誤動作防止装置を、I2Cバスに搭載する電子機器の構成を示すブロック図である。
図1に示す電子機器3aは、装置(第1の装置)1と装置(第2の装置)2とが、SCL(信号線)4及びSDA(信号線)5からなるI2Cバス伝送路301によって接続されている。また、SCL4はクロック信号を送信するためのクロック信号線であり、SDA5は、データやアドレス等を送信するためのデータ信号線である。
装置1は、装置2に対して所定のデータを書き込んだり、装置2に格納されるデータを読み出したりするものであり、いわゆるマスタデバイスである。ここで図1に示した装置1は、CPU(中央処理装置)101、I2Cバスのインターフェース仕様に準拠した動作を行うI2C部102、メモリ103、及びI2Cスレーブデバイス制御部(切替手段)104を備えている。
CPU101は、装置1と装置2との間の書き込み及び読み出し動作を制御するものである。なお、CPU101は、この制御の他に装置1の諸動作を制御するものであってもよい。また、CPU101は、スタートコンディション発行部(通信開始手段)105とストップコンディション発行部(通信停止手段)106を備える。
I2C部102はSCL4及びSDA5に接続されており、I2Cバスのインターフェース仕様に準拠した動作を行うものである。I2Cバスのインターフェース仕様に準拠した動作については後述する。
メモリ103は、CPU101が実行するプログラムを保存している。なお、メモリ103はその他にも、装置2に対して書き込むデータや後述する装置2のレジスタ群202に入力されるデータの期待値(期待値についての詳細な説明は後述する)、装置1の装置2に対するアクセス履歴等が保存されてもよい。
I2Cスレーブデバイス制御部104は、スタートコンディション検出部107とストップコンディション検出部108を備え、後述する装置2のI2C部201に対して制御信号を送信するものである。I2Cスレーブデバイス制御部104の具体的な動作については後述する。なお、I2Cスレーブデバイス制御部104は、SCL4及びSDA5とは異なる信号線である伝送経路302によって、装置2のI2C部201に接続されている。
装置2は、I2C部(データ通信手段)201、レジスタ群(記憶手段)202、及び機能ブロック203を備える。装置2は、装置1より書き込まれたデータをレジスタ群202に記憶し、当該データに基づいて機能ブロック203に実装された機能を実行するものであり、いわゆるスレーブデバイスである。
I2C部201は、I2Cバスのインターフェース仕様に準拠した動作を行うものである。I2C部201は、双方向バッファ211、ノイズ除去/同期化部212、I2C送信部213、I2C制御部214、I2C受信部215、レジスタ読み出し部216、及びレジスタ書き込み部217を備える。
双方向バッファ211は、装置1からデータやクロックの入力があった場合、論理値Low出力もしくはHigh出力(いわゆる、ハイインピーダンス状態)となることで、入力された信号を内部回路に伝送するように動作する。また、装置1にデータを出力する場合は、ハイインピーダンス状態となり、データ信号を装置1に転送するように動作する。
なお、この双方向バッファ211にはSCL4及びSDA5が接続されており、データ信号を転送する信号線であるSDA5に対しては、データ信号の入出力に応じて、上記装置1からの入力時の動作と装置1への出力時の動作とを切り替える。一方、クロック信号を転送する信号線であるSCL4に対しては、装置1のデータの入出力に関らず、上記装置1からの入力時における動作を行う。
ノイズ除去/同期化部212は、I2Cバス伝送路301に混入した電気的なノイズを除去するように動作すると共に、装置2の動作クロックであるシステムクロックに同期させた信号を生成する。以下、システムクロックはI2Cバス伝送路301のSCL4のクロック周波数に対して十分に高い周波数を持つものとする。
ノイズ除去/同期化部212は、システムクロックをクロック入力に持つ内部フリップフロップ(図示しない)を有する。I2Cバス伝送路301より入力された、SCL4からのクロック信号及びSDA5からのデータ信号は、この内部フリップフロップに入力される。そして、内部フリップフロップはシステムクロックに同期させたクロック信号及びデータ信号を出力し、装置2内部の各部材に伝播させる。もしもこのとき、システムクロックよりも高い周波数の電気的ノイズがI2Cバス伝送路301に発生したとしても、SCL4からのクロック信号及びSDA5からのデータ信号はこの同期化処理によってシステムクロックに同期させられるため、ノイズが除去される。
I2C送信部213は、装置1が装置2に蓄積されるデータを読み出す場合、レジスタ群202に蓄積されたデータを、レジスタ読み出し部216を介して受け取る。そして、ノイズ除去/同期化部212及び双方向バッファ211を介して、SDA5から上記データを送信する。
I2C制御部214は、双方向バッファ211を制御しており、所定のタイミングで入出力を切り替える。また、それに伴い、I2C送信部213が装置1にデータを送信するタイミング及びI2C受信部215が後述するレジスタ書き込み部217にデータを送信するタイミングも併せて制御している。
I2C受信部215は、装置1から受信したデータに含まれるスレーブアドレスが装置2のスレーブアドレスと一致するかどうか判定する。そして、受信したスレーブアドレスが装置2のスレーブアドレスと一致しない場合、または装置2がビジー状態でデータの受信が不可能である場合、I2C制御部214に対して、双方向バッファ211をハイインピーダンス状態とし、装置1に対して「NACK」を通知する旨の指令を送信する。
またI2C受信部215は、装置1から受信したデータを装置2に蓄積する場合、レジスタ書き込み部217を介して、レジスタ群202のレジスタに当該データを書き込む。
レジスタ群202は、多数のレジスタによって構成され、装置1から転送されたデータが書き込まれる。そして当該データをリード部(レジスタ202と機能ブロック203の間に備えられる、図示しない)で読み出すことにより、機能ブロック203は、自身に実装された機能を実現する。なお、レジスタ群202の設けられるレジスタについては、従来周知のレジスタを用いることが可能である。そして、機能ブロック203の機能としては例えば、液晶表示回路、CCD回路を含んだ撮像回路、D/A変換回路、EEPROM等の記憶回路の駆動などが挙げられる。
なお、装置2には外部機器(図示しない)からシステムクロック信号及びシステムリセット信号が入力される。システムクロック信号は上述のように、装置2の動作クロックとして機能する信号であり、システムリセット信号は、外部機器からの指令により装置2を初期化するための信号である。
上記のような構成を有する電子機器3aにおいて、本発明に係るデータ通信誤動作防止装置は、I2Cスレーブデバイス制御部104、CPU101のスタートコンディション発行部105及びストップコンディション発行部106、及びI2C部201により構成されている。
ここで、I2Cバスのインターフェース仕様に準拠した動作について、即ち、本発明に係るデータ通信誤動作防止装置をI2Cバスに採用した場合において装置1から装置2へデータを転送する方法について説明する。
まず、マスタデバイスである装置1がスレーブデバイスである装置2との通信を開始する際、最初にI2Cバスの使用権を獲得する必要がある。このために、装置1はスタートコンディションを発行する。これはSCL4がHighの状態において、SDA5をHighからLowにすることで実現する。スタートコンディションは、CPU101のスタートコンディション発行部105から発行され、送出される。
そして、スタートコンディションに続いて、スレーブデバイスとして装置2を指定するため、装置1は、7ビットのスレーブアドレスと転送方向を示す1ビットとの合計8ビットのデータを送信する。ここで、装置2がビジー状態でない場合かつ受信したスレーブアドレスが装置2固有のスレーブアドレスと一致した場合においてI2C制御部214は、SCL4からのクロック信号の9ビット目で双方向バッファ211をLowの状態にする。それによって、装置1に対して「ACK」を通知する。
装置2との通信が確立したら、データの転送に移る。装置1は装置2のスレーブアドレスからの「ACK」を受信した後、続けてレジスタ群202のレジスタのアドレスデータ(レジスタアドレス)8ビット及びライトデータ8ビットを送信する。このとき、装置2はSCL4をLowにし、スレーブアドレスの8ビット目で指定された転送方向での通信準備を行い、準備が完了したらSCL4をHighとする。これにより、SCL4は装置1を制御できるようになり、装置1からのSCL4からのクロック信号により、データ転送を行えるようになる。
図2には、本発明に係るデータ通信誤動作防止装置をI2Cバスに採用した場合に見られる、伝送プロトコルを示す図であり、7ビットのスレーブアドレス、8ビットのアドレスデータ、8ビットのライトデータを装置1から装置2に書き込む場合のタイミングチャートを示している。
図2に示すように、装置1から装置2に書き込む際には、まず装置1よりスタートコンディションと共に7ビットのスレーブアドレス、1ビットのライト信号(Low信号)が送信される。装置2は、装置1より転送されたデータを双方向バッファ211、ノイズ除去/同期化部212を経由させ、I2C受信部215で受信する。装置2は、自身が受信可能な状態であれば図2のようなタイミングで「ACK」を装置1に通知しながら、8ビットのアドレスデータ、8ビットのライトデータを受信し、レジスタ群202の該当するアドレスに書き込む。
一方、データを受け取れなかったときには装置2は、「NACK」を装置1に送信することで、データ転送の不良をマスタデバイスに知らせる。なお、装置2はSCLの9ビット目で双方向バッファ211をハイインピーダンス状態にすることで、装置1に対して「NACK」を通知する。装置1は装置2から「NACK」を受信した場合には、スレーブアドレスを再送するなどの処置を取る。装置2は、I2C受信部215が正常にデータを受信したか否かをI2C制御部214にて判断し、判断結果に応じて「ACK」または「NACK」を発行し、ノイズ除去/同期化部212、双方向バッファ211を経由させ、装置1のI2C部102に送信する。
データ転送が終了すると、装置2は、装置1に対する「ACK」或いは「NACK」の送信を停止する。これを装置1が認識することによってデータ転送の終了を認識する。そして、I2Cバスを開放するため、装置1はストップコンディションを発行する。これはSCL4がHighの状態において、SDA5をLowからHighにすることで実現する。ストップコンディションは、CPU101のストップコンディション発行部106から発行され、送出される。なお、I2C受信部215の、レジスタ群202への書き込み動作は、装置2がストップコンディションを検出してから行う。
このような電子機器3a、及び後述する電子機器3b及び3cにおいて、外来ノイズの混入によって装置1と装置2との間のデータの送受信に問題が生じるパターンとしては、データ転送停止期間に外来ノイズが混入する場合と、データ転送期間に外来ノイズが混入する場合と、の2つが考えられる。
図3にI2Cバス動作時のSCL4及びSDA5のデータ転送の様子を表す。
I2Cバスのインターフェース仕様では任意のタイミングでのデータ転送が可能であるため、図2のように、データ転送停止期間とデータ転送期間とを有するのが一般的である。
ここで、データ転送停止期間に外来ノイズn1が混入した場合、SDA5が予期せぬ形でHighからLowに変化する。それによって、装置2はスタートコンディションを認識してしまう。また、I2C部201は外来ノイズn1を、装置1から転送されたデータであると認識してしまい、実際は装置1からデータが送られていないのにも関らず、装置2が書き込み動作を実施する。結果として、装置2に受信エラーが生じたり、レジスタ群202のレジスタに予期せぬデータが書き込まれたりする。
また、データ転送期間に外来ノイズn2が混入した場合、装置1から装置2に入力されたデータに外来ノイズn2が混入し、ビット化け等が発生する。それによって、装置1が出力したデータと異なるデータが装置2に入力されてしまう。即ち、外来ノイズn2が転送中のデータを壊し、誤ったデータとしてI2C部201に認識されてしまう。またこのとき、SDA5が予期せぬ形でLowからHighに変化する。それによって、装置2はエンドコマンドを認識してしまう。結果として、装置2のレジスタ群202に、誤ったデータが書き込まれる。
本実施の形態1で説明する発明は、データ転送停止期間に外来ノイズが混入する場合において、データ転送停止期間に混入した外来ノイズn1による誤動作を防止するものである。
本実施の形態1に係るデータ通信誤動作防止装置では、図3で示したデータ転送停止期間の外来ノイズn1による誤動作を防止するため、図1に示すように、I2Cスレーブデバイス制御部104が伝送経路302によって、I2C部201に接続されている。I2Cスレーブデバイス制御部104は、I2C部201のイネーブル状態とディゼーブル状態とを切り替えるI2Cイネーブル信号を出力する。
また、I2C部201は、ディゼーブル状態の場合においては、I2Cバス伝送路301のSCL4やSDA5の状態に関らず、動作を停止する。即ち、I2C部201は、イネーブル状態において動作状態になり、ディゼーブル状態において非動作状態になるため、レジスタ群202に誤ったデータを書き込まれることがない。
上記のような構成にし、CPU101により、I2Cイネーブル信号を、図4に示したように制御する。即ち、データ転送停止期間においてはI2Cイネーブル信号をディゼーブルにし、データ転送期間においてはI2Cイネーブル信号をイネーブルにする。
なお、CPU101により、I2Cイネーブル信号を制御する方法としては例えば、下記のような方法が考えられる。
即ち、装置1が装置2へデータ転送を開始する際、CPU101はスタートコンディション発行部105から、スタートコンディションを発行する。具体的には上述のように、SCL4がHighの状態においてSDA5をHighの状態からLowの状態にすることで実現する。そして、スタートコンディションを発行する際に、CPU101のスタートコンディション発行部105が送出した信号を、I2C部102に送信すると共に、I2Cスレーブデバイス制御部104に送信する。そして、I2Cスレーブデバイス制御部104がスタートコンディション発行部105からの上記信号を、スタートコンディション検出部107にて検出すると、I2Cスレーブデバイス制御部104は、I2C部201をイネーブルにする旨のI2Cイネーブル信号を、伝送経路302を介してI2C部201に送出する。
また、装置1が装置2へのデータ転送を終了する際も同様である。即ち、CPU101は、装置1が装置2へのデータ転送を終了する際に、ストップコンディション発行部106から、ストップコンディションを発行する。具体的には、SCL4がHighの状態においてSDA5をLowの状態からHighの状態にすることで実現する。そして、ストップコンディションを発行する際に、CPU101のストップコンディション発行部106が送出した信号を、I2C部102に送信すると共に、I2Cスレーブデバイス制御部104に送信する。そして、I2Cスレーブデバイス制御部104がストップコンディション発行部106からの上記信号を、ストップコンディション検出部108にて検出すると、I2Cスレーブデバイス制御部104は、I2C部201をディゼーブルにする旨のI2Cイネーブル信号を、伝送経路302を介してI2C部201に送出する。
これによって、I2C部201がディゼーブル状態ではI2C部201は動作しない。従って、図4に示す、データ転送停止期間中に外来ノイズn1が混入した場合においても、装置2は誤動作を起こすことがない。
以上のように、スレーブデバイスである装置2を制御することによって、スレーブデバイスに記憶された情報を読み出す動作を行うことなく、通信不能状態を回避することができる。
なお本実施の形態1では、伝送経路302によってI2Cスレーブデバイス制御部104とI2C部201とを接続し、I2Cスレーブデバイス制御部104がI2Cイネーブル信号を送出することで、I2C部201のイネーブル状態とディゼーブル状態とを制御している。しかしながら、I2C部201のイネーブル状態とディゼーブル状態とを制御する方法はこれに限らず、例えば下記のような方法であっても構わない。
即ち、レジスタ群202の特定のレジスタに、I2C部201のイネーブル状態とディゼーブル状態とを切り替えるイネーブル/ディゼーブル制御レジスタ(図示しない)を設ける構成にする(なお、このイネーブル/ディゼーブル制御レジスタは、入力信号に応じたON/OFFの1ビット制御が可能であるもので充分である)。イネーブル/ディゼーブル制御レジスタは、I2Cスレーブデバイス制御部104からのノイズが混入しない状態でスタートコンディション及びストップコンディションを判別する。
そして、I2C部201がイネーブル状態である場合には、レジスタ群202へのデータの書き込みを許可し、I2C部201がディゼーブル状態である場合には、このイネーブル/ディゼーブル制御レジスタへのアクセスを除く、全てのレジスタへのデータの書き込みをすべて禁止するようにイネーブル/ディゼーブル制御レジスタを制御する。
なお、イネーブル/ディゼーブル制御レジスタによりI2C部のイネーブル/ディゼーブルを制御する具体的な方法については、例えば、レジスタ比較によりI2C部のイネーブル/ディゼーブルを制御する方法が考えられる。しかしながら、上記具体的な方法はこれに限らず、かつこのような制御方法は、当業者であれば容易に実施することが可能であるので、ここでは、詳細な説明を省略する。
このような方法でも、上記の発明と略同様の効果が得られる。
つまり、本発明は、信号線を介してデータを転送する第1の電子機器と、当該第1の電子機器が転送したデータを受信するデータ通信手段を有する第2の電子機器と、を備え、少なくとも上記第1の電子機器と上記第2の電子機器とを含む複数の電子機器が、上記信号線により接続されるデータ送受信装置に備えられるデータ通信誤動作防止装置であって、上記データ送受信装置の第1の電子機器には、上記第1の電子機器と上記第2の電子機器との通信を開始する信号を出力する通信開始手段と、上記第1の電子機器と上記第2の電子機器との通信を停止する信号を出力する通信停止手段と、を備え、上記データ送受信装置の第2の電子機器には、上記データ通信手段が受信したデータが書き込まれることで、当該データを保持する設定記憶手段を備え、上記設定記憶手段の所定の領域に備えられ、上記通信開始手段が上記第1の電子機器と上記第2の電子機器との通信を開始する信号を出力した場合、上記データ通信手段が受信したデータを、上記設定記憶手段の所定の領域以外の領域に書き込むことを許可し、上記通信停止手段が、上記第1の電子機器と上記第2の電子機器との通信を停止する信号を出力した場合、上記データ通信手段が受信したデータを、上記設定記憶手段の所定の領域以外の領域に書き込むことを禁止する切替手段を備えることを特徴としてもよい。
上記の構成によれば、第2の電子機器はデータ通信手段が受信したデータが書き込まれることで、当該データを保持する設定記憶手段を備える。また、切替手段は設定記憶手段の所定の領域に備えられる。そして、通信開始手段が上記第1の電子機器と上記第2の電子機器との通信を開始する信号を出力した場合、データ通信手段が受信したデータを、設定記憶手段の所定の領域以外の領域に書き込むことを許可する。また、通信停止手段が、第1の電子機器と上記第2の電子機器との通信を停止する信号を出力した場合、データ通信手段が受信したデータを、設定記憶手段の所定の領域以外の領域に書き込むことを禁止する。データ転送停止期間には、設定記憶手段の切替手段が設けられた領域以外の領域とアクセスすることが不可能な構成となるため、データ転送停止期間中に外来ノイズが混入した場合においても、第2の電子機器は誤動作を起こすことがない。
従って、第2の電子機器に記憶された情報を読み出す動作を行うことなく、通信不能状態を低減することができるという効果を奏する。
〔実施の形態2〕
図5は、本発明に係る別のデータ通信誤動作防止装置を、I2Cバスに搭載する電子機器3bの構成を示すブロック図である。
図5に示す電子機器3bは、図1に示す電子機器3aにおいて、装置1には、I2Cスレーブデバイス制御部104の代わりに割り込み制御部(エラー検出通知手段)109が備えられる構成である。さらに、装置2には、図1に示す電子機器3aに加えて、エラー検出部(エラー検出通知手段)220と、割り込み制御部(エラー検出通知手段)221と、を備える構成である。
本実施の形態2で説明する発明は、図3において、データ転送期間に外来ノイズn2が混入する場合において、当該外来ノイズn2による誤動作を防止するものである。
エラー検出部220は、ノイズ除去/同期化部212とI2C受信部215との間に、I2C部201とは異なる領域に設けられる。このエラー検出部220は、装置2に発生する、データ転送時におけるエラーを検出するものである。エラー検出部220には、ノイズ除去/同期化部212から出力された信号が入力される。そしてエラー検出部220は、上記信号を基に、当該データのデータ転送時におけるエラーを検出する。そして、もしもデータ転送時においてエラーが発生している場合、エラー検出部220は、I2C部201、I2C受信部215、及び割り込み制御部221に対して制御信号を送出する。
割り込み制御部109・221は、割り込み制御部109が装置1に、割り込み制御部221が装置2に設けられ、割り込み制御部109と割り込み制御部221とが、SCL4及びSDA5とは異なる信号線で接続されている。割り込み制御部109・221は、データ転送時におけるエラーを、装置1に通知するためのものである。
データ転送時におけるエラーが発生した場合、エラー検出部220は割り込み制御部221に対して制御信号としてエラー割り込み信号を送出し、当該エラー割り込み信号は、割り込み制御部221を介して、割り込み制御部109に入力される。これによって、データ転送時においてエラーが発生したことを、装置1が認識することができる。
上記のような構成を有する電子機器3bにおいて、本発明に係るデータ通信誤動作防止装置は、エラー検出部220、割り込み制御部109・221、及びI2C部201により構成されている。
装置1及び装置2は、上述した実施の形態1と同様の方法にて、相互間の通信を確立する。即ち、装置1はスタートコンディション、7ビットのスレーブアドレス、及び転送方向を示す1ビットとの合計8ビットのデータを送信する。そして、装置2は、装置1に対して「ACK」を通知する。装置2との通信が確立したら、データの転送に移る。
装置1は装置2のスレーブアドレスからの「ACK」を受信した後、続けてレジスタ群202のレジスタのアドレスデータ(レジスタアドレス)8ビット及びライトデータ8ビットを送信する。装置2は、装置1より転送されたデータを双方向バッファ211、ノイズ除去/同期化部212を経由させ、I2C受信部215で受信する。
このとき装置2は、自身が受信可能な状態であれば図2のようなタイミングで「ACK」を装置1に通知しながら、8ビットのアドレスデータ、8ビットのライトデータを受信する。そして、これらのデータを一時的にI2C受信部215にて保持する。
さらにこのとき、ノイズ除去/同期化部212は、I2C受信部215に上記データを送出する際において、自身が出力した信号をエラー検出部220に送出する。エラー検出部220は上記信号を受信すると、当該信号を基に、データ転送時においてエラーが発生していないかを調べる。
このときエラー検出部220でエラーが検出されなかった場合、装置2は、装置1から受信したデータを正しいものとして認識する。そして、I2C受信部215は、自身が一時的に保持していた装置1から転送されたデータを、レジスタ群202の該当するアドレスに書き込む。
また、エラー検出部220でエラーが検出された場合、装置2は、装置1から受信したデータを誤ったものとして認識する。そして、エラー検出部220は制御信号として、レジスタ書き込み禁止信号をI2C受信部215に、エラー割り込み信号を割り込み制御部221に、I2C部リセット信号をI2C部201に送出する。
I2C受信部215はレジスタ書き込み禁止信号を受信すると、自身が一時的に保持していた、装置1から転送されたデータを破棄することで、当該データのレジスタ群202への書き込みを防止する。
割り込み制御部221はエラー割り込み信号を受信すると、当該エラー割り込み信号を割り込み制御部109に送出する。これによって、装置1に対して、装置2にてエラーが発生したことを通知する。
割り込み制御部109はエラー割り込み信号を受信すると、CPU101に当該エラー割り込み信号を送出する。CPU101はエラー割り込み信号を受信すると、装置2に対し転送データを再送する等、データ転送の復帰処理を行う。
I2C部201はI2C部リセット信号を受信すると、自身を初期化する処理を実行する。なお、この「自身を初期化する処理」としては例えば、下記のような処理が挙げられる。
即ち、I2C部201はI2C部リセット信号を受信すると、外部機器(図示しない)に対して、システムリセット信号を発行する旨の指令を与える。そして、指令を受けた外部機器はシステムリセット信号を発行し、装置2を初期化する。これによって、I2C部201も同時に初期化される。
このようにして、I2C部201がエラーを検出し、レジスタ群202への誤った書き込みを防止し、さらにI2Cバスを自律的に復帰させることができる。
なお、エラー検出部220が送出するエラー割り込み信号には、エラーに関する詳細な情報(装置1から装置2へのデータ転送時に発生したエラーの種別、エラーの程度など)を含んでいてもよい。また、エラーに関する詳細な情報を含むエラー割り込み信号を割り込み制御部109が受信した場合、割り込み制御部109は、当該信号をCPU101に送出すると共に、当該信号に含まれた情報をメモリ103に書き込む構成としてもよい。エラーに関する詳細な情報をメモリ103に書き込み、エラー履歴として保存しておけば、エラー状態をより確実に確認することができる。
ここで、エラー検出部220について図6及び図8に基づいて詳細に説明する。
図6は装置2の内部を伝達する信号のタイミングチャートであり、図5で表された装置2に入力される信号が、装置2の内部に伝播する様子を表している。
ここで、外部SCL信号及び外部SDA信号は、I2Cバス伝送路301から装置2に入力される信号を示す。即ち、外部SCL信号はSCL4から装置2に入力されるデータ信号を、外部SDA信号はSDA5から装置2に入力されるクロック信号を指している。また、装置2システムクロックは、装置2に入力される、装置2の動作クロック信号を指しており、外部SCL信号の周波数に対して十分高い周波数を持つものとする。
SCLin信号及びSDAin信号はそれぞれ、外部SCL信号及び外部SDA信号をシステムクロックに同期させた信号である。SCLin信号及びSDAin信号は、外部SCL信号及び外部SDA信号がノイズ除去/同期化部212に入力されることによって生成される。具体的な生成方法としては例えば、ノイズ除去/同期化部212にD−フリップフロップ(図示しない)を設ける。そして、ノイズ除去/同期化部212に入力される外部SCL信号及び外部SDA信号を当該D−フリップフロップで受信すれば、システムクロックに同期したSCLin信号及びSDAin信号を簡単に生成することができる。なおこのとき、ノイズ除去/同期化部212はこのような構成だけであってもノイズ除去装置として充分に機能する。
スタートコンディション検出信号及びストップコンディション検出信号はそれぞれ、I2C受信部215が、I2Cバスのスタートコンディション及びストップコンディションを検出したタイミングを、装置2の各部材に通知するために出力される信号である。
図6の「SCLinカウンタ」は、SCLin信号のパルス数を計数するカウンタ(I2C受信部215に設けられる、図示しない)のカウンタ出力である。このカウンタは、スタートコンディション検出信号によって数値がクリアされる。即ち、上記カウンタはスタートコンディションが装置2に通知されてから出力される、SCLin信号のパルスの数をカウントしている。なお、図6の「SCLinカウンタ」に付されている数値は、上記カウンタがカウントする、SCLin信号のカウント値を示している。
なお、SDAout信号は、ACK/NACK(スレーブ出力)に該当する。また、SDA入出力切り替え信号は、I2Cに準拠してSDAの入力と出力とを切り替えるものであり、図2に示す、WR(マスタ出力)のことを指す。WRにて“R”が出力されると、SDA5は、マスタ出力からスレーブ出力へと切り替わる。しかしながら、このSDAout信号及びSDA入出力切り替え信号は、本発明に係るエラー検出部220の動作に関与するものではないので、ここではこれ以上の詳細な説明は省略する。
図7には、本発明にて使用されるエラー検出部220の構成を示している。エラー検出部220は、SDAin状態遷移判定部230、SCLinカウンタ確認部231、I2Cリセットカウンタ232、及び信号送出部233を有する。
SDAin状態遷移判定部230は、ノイズ除去/同期化部212が出力した信号が入力される。そしてこの信号のうち、SCLin信号及びSDAin信号がHighの状態であるかLowの状態であるかを随時判定することで、エラーを検出する。そして、エラーを検出した場合、後述する信号送出部233に対し、エラーを検出した旨を通知する。SDAin状態遷移判定部230におけるエラーの検出方法については後述する。
SCLinカウンタ確認部231は、ノイズ除去/同期化部212が出力した信号が入力される。そしてこの信号のうち、SCLinカウンタから、ストップコンディション検出信号が装置2に通知されたときのSCLinカウンタの数値を調べることで、エラーを検出する。そして、エラーを検出した場合、後述する信号送出部233に対し、エラーを検出した旨を通知する。SCLinカウンタ確認部231におけるエラーの検出方法については後述する。
I2Cリセットカウンタ(データ通信手段リセットカウンタ)232は、外部SCL信号とは独立したクロック源をソースとして有し、スタートコンディションが入力されることによってクリアされ、ストップコンディションが入力されることによってカウント動作を停止するカウンタである。I2Cリセットカウンタ232は、自身のカウンタ値が所定の値に達したとき、I2C部リセット信号をI2C部201に送出することで、I2C部201を初期化すると共に、割り込み制御部221にエラー割り込み信号を送出する。
なお、このI2Cリセットカウンタ232は、外部SCL信号とは独立したクロック源をソースとして有し、かつSCLinカウンタとは異なるカウンタであれば、どのようなクロック信号であっても構わない。このようなクロック信号としては例えば、装置2システムクロックであっても構わないし、当該装置2システムクロックに同期した、装置2システムクロック以外のクロックであっても構わない。
信号送出部233は、SDAin状態遷移判定部230またはSCLinカウンタ確認部231からのエラー通知を受信することで動作し、制御信号として、レジスタ書き込み禁止信号をI2C受信部215に、I2C部リセット信号をI2C部201に、エラー割り込み信号を割り込み制御部221に送出する。
このとき、I2C受信部215にレジスタ書き込み禁止信号が入力されると、I2C受信部215は、装置1から受信したデータを破棄することで、当該データのレジスタ群202への書き込みを防止する。また、I2C部201にI2C部リセット信号が入力されると、I2C部201は初期化される。それによって、装置1のI2Cバスによるデータ転送は自律的に復帰される。さらに、割り込み制御部221にエラー割り込み信号が入力されると、割り込み制御部109を介して、装置2にて発生したエラーを装置1に通知することができる。
ここで、エラー検出部220の各ブロックにおける、エラー検出方法について述べる。
装置2の内部に、図6に示すような信号が伝達される場合において、例えば、外部SDA信号にノイズ401のようなパルス状のノイズが入ったとする。このときノイズ401は、ノイズ402のようなパルス状のノイズをSDAin信号に発生させる。即ち、SDAin信号はノイズ402の混入によって、一時的にHighの状態からLowの状態へと状態遷移する。
通常のI2Cバスのインターフェース仕様によれば、スタートコンディション、ストップコンディションのタイミング以外で、SCL信号がHighの状態でSDA信号がHighからLowへと(または逆にLowからHighへと)状態遷移することはない。しかしながら、ノイズ402がSDAin信号に発生した場合、SCL信号がHighの状態であるにも関らず、SDAin信号はHighの状態からLowの状態へと状態遷移する。
そこで、SDAin状態遷移判定部230は、SCLin信号及びSDAin信号がHighの状態であるかLowの状態であるかを随時判定する。そして、SCLin信号がHighの状態で、SDAin信号がHighの状態からLowの状態へと状態遷移した場合、データ転送時におけるエラーが発生していることを検出する。
なお、データ転送時におけるエラーによる状態遷移と、スタートコンディション、ストップコンディションのタイミングによる状態遷移とを区別する方法としては、例えば、ステートマシンを用いる方法が挙げられる。
即ち、ステートマシンは、装置1と装置2との間の通信が停止している場合における最初の上記状態遷移を、スタートコンディションのタイミングと認識する。スタートコンディションの発行以前においては、当然ながら、装置1と装置2との間のデータ通信は開始されておらず、上記状態遷移が発生することはない。そのため、装置1と装置2との間の通信が停止しており、上記状態遷移が発生すれば、それは、スタートコンディションのタイミングである、と判別することができる。スタートコンディションのタイミングを認識すると、ステートマシンは、自身の動作モードを、初期状態であるステート1からステート2へと変化させる。
そして、このステートマシンがステート2である状態においては、データ転送時におけるエラー以外で、上記状態遷移が発生することがない。従って、ステートマシンがステート2であるときに上記状態遷移が発生すると、それをデータ転送時におけるエラーと認識する。
また、例えば、外部SCL信号にノイズ403のようなパルス状のノイズが入ったとする。このときノイズ403は、ノイズ404のようなパルス状のノイズをSCLin信号に発生させる。即ち、SCLin信号はノイズ404の混入によって、一時的にHighの状態からLowの状態へと状態遷移する。
通常のI2Cバスのインターフェース仕様によれば、図2に示すようなスレーブアドレス、アドレスデータ、及びライトデータの、一連の書き込み動作の場合、スタートコンディションからストップコンディションまでの、SCLin信号のパルス数は、
スレーブアドレス9パルス+アドレスデータ9パルス+ライトデータ9パルス=27パルス
となる。そしてこの場合、ストップコンディションが装置2に通知された時点でのSCLinカウンタの数値は、26となる。
しかしながら、SCLin信号にノイズ404が混入した場合、一時的にHighの状態からLowの状態へと状態遷移し、その後再びHighの状態となるため、スタートコンディション検出信号とストップコンディション検出信号との間のSCLin信号パルスの数が1つ増加する。そのため、ストップコンディション検出信号が装置2に通知された時点でのSCLinカウンタの数値は、27となる。
そこで、SCLinカウンタ確認部231は、ストップコンディション検出信号が装置2に通知されたときのSCLinカウンタの数値を調べる。そして、SCLinカウンタの数値が26以外の数値であった場合、データ転送時におけるエラーが発生していることを検出する。
なお、ここでは、ストップコンディション検出信号が装置2に通知された時点でのSCLinカウンタの数値が26である場合、即ち、図2に示すようなスレーブアドレス、アドレスデータ、及びライトデータの、一連の書き込み動作の場合について説明している。しかしながら、上記のエラー検出方法における考え方を拡張すれば、SCLinカウンタの26以外の数値を用いて同様な方法でエラーを検出することができる。
SCLinカウンタの26以外の数値を用いたエラー検出方法について、図8に基づいて説明する。
図8は7ビットのスレーブアドレス、8ビットのアドレスデータの後に、8ビットのライトデータn個を連続して装置1から装置2に書き込む場合のタイミングチャートを示している。通常のI2Cバスのインターフェース仕様によれば、図8に示すようなタイミングで送出されるライトデータは、I2Cバス伝送路301にデータ転送エラーが発生しない場合、ストップコンディション検出信号が装置2に通知された時点でのSCLinカウンタの値が、(2+n)×9−1となる。
そのため、ストップコンディション検出信号が装置2に通知された時点でのSCLinカウンタが(2+n)×9−1以外の数値であった場合に、装置1から転送されたデータにエラーが発生していると考えられる。よって、SCLinカウンタ確認部231は、ストップコンディション検出信号が装置2に通知された時点でのSCLinカウンタが(2+n)×9−1以外の数値であった場合に、上記エラーを検出すればよい。
SDAin状態遷移判定部230及びSCLinカウンタ確認部231は、エラーを検出すると、信号送出部233に対し、当該エラーを検出した旨を通知する。通知を受けた信号送出部233は、レジスタ書き込み禁止信号をI2C受信部215に、I2C部リセット信号をI2C部201に、エラー割り込み信号を割り込み制御部221に送出する。そして、I2C受信部215にレジスタ書き込み禁止信号が入力されると、I2C受信部215は、装置1から受信したデータを破棄することで、当該データのレジスタ群202への書き込みを防止する。また、I2C部201にI2C部リセット信号が入力されると、I2C部201は初期化される。これによって、装置1のI2Cバスによるデータ転送は自律的に復帰される。さらに、割り込み制御部221にエラー割り込み信号が入力されると、割り込み制御部109を介して、装置2にて発生したエラーを装置1に通知することができる。
また外部SDA信号にノイズ405のようなノイズが入ったとすると、装置2はストップコンディションを正しく認識することができなくなる可能性がある。即ち、ストップコンディションの発行は、外部SCL信号がHighの状態であり、外部SDA信号をLowからHighにすることで実現するが、外部SDA信号にノイズ405が混入すると、外部SDA信号がLowからHighに状態遷移したことを正しく認識することができなくなる。装置2がストップコンディションを正しく認識することができなくなると、ストップコンディション受信待ち状態のままになる可能性がある(いわゆる、リスタートコンディション)。
このようなエラーを回避するため、エラー検出部220は、I2Cリセットカウンタ232を有している。
I2Cリセットカウンタ232の動作を図6に示す。I2Cリセットカウンタ232は、自身のクロック信号の周期(図6では装置2システムクロックの4周期)毎に、1,2,3、・・・、とカウント動作を行う。そして、カウンタ値がmに等しくなった場合、I2C部201に対してI2C部リセット信号を送出すると共に、エラー割り込み信号を割り込み制御部221に通知する。割り込み制御部221にエラー割り込み信号が入力されると、割り込み制御部109を介して、装置2にて発生したエラーを装置1に通知することができる。
なお、I2Cリセットカウンタ232は上述のように、自身のカウンタ値が所定の値に達したとき自動的に、I2C部201をリセットし、かつ装置1に対し、データ転送時におけるエラーが発生したことを通知するものである。従って、信号送出部233に対し、エラーを検出した旨を通知する構成にする必要は無い。図7においても、I2Cリセットカウンタ232から出力される上記I2C部リセット信号及びエラー割り込み信号は、信号送出部233を介さず、直接I2C部201及び割り込み制御部221に入力されている。
また、カウンタ値mは任意の値を設定しても構わないが、通常のI2Cバスによるデータ転送に係るスタートコンディションからストップコンディションまでの時間よりも長い時間で満了するような値を設定する必要がある。つまり、図6のようにストップコンディション検出信号が、I2Cリセットカウンタのカウンタ値(k+7)にて検出される場合、カウンタ値mは、(k+7)よりも大きい値であればどのような値であっても構わない。
このようにして、ノイズ405のようなノイズによりストップコンディションが正しく検出できない場合であっても、I2C部201は、カウンタ値mによって指定された所定の時間が経過すると自動的にリセットにより初期化される。従って、ストップコンディション受信待ち状態のまま保持されるという事態が発生することはない。
以上のような構成にすれば、エラーを検出する手段(SDAin状態遷移判定部230、SCLinカウンタ確認部231、及びI2Cリセットカウンタ232)、レジスタ群202への誤った書き込みを防止する手段及びI2Cバスを自律的に復帰させる手段(信号送出部233)を、スレーブデバイスである装置2自身が有することになる。そのため、図3のデータ転送期間中に外来ノイズn2が混入したとしても、装置2が自律的に誤動作を防止することができる。
これによって、装置1から装置2へのデータ転送中にエラーが発生した場合においても、スレーブデバイスに記憶された情報を読み出す動作が不要となるので、実質的なデータ転送レートが悪化することなく、データ転送動作を継続することができる。そして、スレーブデバイスにエラーが発生した場合において、自律的に当該スレーブデバイスを通信不能状態から復帰させることで、マスタデバイスに多大な負荷をかけずに済む。
なお、本実施の形態2は、上述した実施の形態1と組み合わせても構わない。
即ち、図5に示す電子機器3bに加え、I2Cスレーブデバイス制御部104及び伝送経路302を設け、I2Cスレーブデバイス制御部104を伝送経路302によって、I2C部201に接続する。そして、I2Cスレーブデバイス制御部104は、図4に示したように、I2Cイネーブル信号を、伝送経路302を介し、I2C部201に出力してもよい。
〔実施の形態3〕
上述した実施の形態1では、データ転送停止期間に発生するエラーの対処法について、実施の形態2では、データ転送期間に発生するエラーの対処法について述べてきた。
しかしながら、これらの実施形態においては、例えば転送データにビット化けが生じた場合等、マスタデバイス(装置1)からスレーブデバイス(装置2)に転送されたデータそのものにエラーが発生した場合において、当該エラーを検出することができない可能性がある。そして、転送されたデータに発生するエラーが検出できないと、誤ったデータがメモリブロック(レジスタ群202)に書き込まれる可能性がある。
このような問題に対処するため、本実施の形態3では、マスタデバイスからスレーブデバイスへ転送されたデータに発生するエラーを検出する構成について述べる。
図9は、本発明に係る別のデータ通信誤動作防止装置を、I2Cバスに搭載する電子機器3cの構成を示すブロック図である。
図9に示す電子機器3cは、図5に示す電子機器3bの構成に加え、装置2に要約計算/記憶部222(第2の要約値計算手段)を備える構成である。
ここで、図10に基づいて、本実施の形態3に係る要約計算/記憶部222についての詳細な説明を行う。
図10は、本実施の形態3に係る、要約計算/記憶部222の構成を示す図である。レジスタ読み出し部222a、要約計算部222b、要約値記憶部222c、要約計算制御レジスタ222d、要約計算/記憶制御部222eで構成されている。
レジスタ読み出し部222aは、レジスタ群202に記憶されているデータを読み出す。レジスタ読み出し部222aは、要約計算/記憶制御部222eからのトリガで動作を開始し、レジスタ群202からデータを読み出し、要約計算部222bに送っている。
要約計算部222bは、レジスタ群202からレジスタ読み出し部222aを介して受信した、装置1から転送されたデータの要約値を計算する。そして、要約値の計算結果を要約値記憶部222c及び要約計算/記憶制御部222eに送る。要約計算部222bは、要約計算/記憶制御部222eからのトリガで動作を開始し、レジスタ読み出し部222aからデータを読み出し、要約値を計算する。要約計算部222bの要約値の計算方法については後述する。
要約値記憶部222cは、レジスタ群202のアドレス(K+1)h〜(K+m)hに設けられており、要約計算部222bの計算結果、即ち、装置1から装置2に転送され、レジスタ群202に保存されたデータの要約値を保存する。なお、要約値記憶部222cに記憶された、上記データの要約値は、I2C部201のレジスタ読み出し部216を介してI2C送信部213に送ることが可能な構成である。つまり、装置1が当該要約値を読み出すことが可能な構成となっている。
要約計算制御レジスタ222dは、レジスタ群202のアドレスKhに設けられており、装置1からの制御信号が入力されると、要約計算/記憶制御部222eに要約計算指示信号を出力する。レジスタ読み出し部222a及び要約計算部222bは、要約計算/記憶制御部222eからのトリガで動作を開始すると上述したが、要約計算制御レジスタ222dは要約計算/記憶制御部222eの動作を開始させるためのトリガとなっている。
要約計算/記憶制御部222eは、要約計算制御レジスタ222dからの要約計算指示信号を受信すると、レジスタ読み出し部222a及び要約計算部222bを起動させる。これによって、レジスタ群202に記憶されている、装置1から転送されたデータの要約値を計算することができる。なお、要約計算/記憶制御部222eは、要約計算終了割り込み信号を、割り込み制御部221に送出する。
なお、図10では、要約値記憶部222cと要約計算制御レジスタ222dとがレジスタ群202のそれぞれアドレス(K+1)h〜アドレス(K+m)h、アドレスKhに設けられている。しかしながら、要約値記憶部222c及び要約計算制御レジスタ222dは、レジスタ群202とは別のレジスタとして設けられる構成であってもよい。
また、装置1のメモリ(第1の記憶手段)103には、装置2に転送したデータの期待値が記憶される。
ここで、期待値の定義について説明する。
期待値とは、電子機器毎に予め決定された、画面解像度・表示設定等の設定値の目安となる値のことを指す。
即ち、一般的に、I2Cバスに接続される装置2においては、装置1から入力されたデータを、高い確度でレジスタ群202に書き込むことができ、その書き込まれたデータを基に、装置2は、所定の動作を繰り返し行うことができる。
例えば、液晶表示回路である液晶モジュールには、上記液晶表示回路の表示部の画面解像度・表示設定などを設定するレジスタが設けられており、それらの設定をI2Cバスにて行っている。この液晶モジュールは、汎用性を高めるため、様々な解像度に対応することが可能であるような設計が施されているが、製品毎で設定される画面解像度・表示設定などは常に固定である。
ここで、上記液晶表示回路の表示部を非動作状態とすると、画面解像度・表示設定の設定値は消去されてしまう。そのため、表示回路の表示部を動作状態とする毎に、上記設定値に関する情報を液晶モジュールに転送する必要がある。
そこで、上記設定値の目安となる期待値を予め決定し、例えばメモリに格納しておく。そして、上記設定値に関する情報を液晶モジュールに転送する際、当該設定値と上記期待値とを比較し、それらの値が類似していれば、液晶モジュールに転送したデータに誤りがないと判断する。また、当該設定値と上記期待値とが大きく異なる値となれば、液晶モジュールに転送したデータにエラーが発生していると判断する。
さらに、装置1のCPU101は、要約計算部(第1の要約値計算手段)110と、比較部(比較手段)111とを備える。要約計算部110は、装置2に転送したデータをメモリ103から読み出し、当該データの期待値から要約値を計算する。要約計算部110の要約値の計算方法については、要約計算部222bの要約値の計算方法と共に後述する。比較部111は、要約計算部222bの計算結果と要約計算部110の計算結果とを比較する。
要約計算制御レジスタ222dは要約計算開始制御ビットを有しており、装置1の制御により要約計算/記憶部222を起動させることができる。具体的には、CPU101からSDA5を介して装置2に送出される要約計算開始制御ビットイネーブル信号をI2C受信部215が受信すると、レジスタ書き込み部217を介して、要約計算制御レジスタ222d、即ち、レジスタ群202のアドレスKhに当該信号に含まれるデータを書き込む。これによって、要約計算制御レジスタ222dの要約計算開始制御ビットをイネーブルにする。このようにして、要約計算/記憶制御部222eに、要約計算指示信号を送出し、要約計算/記憶部222を起動させることができる。
このとき、要約計算/記憶制御部222eは、レジスタ読み出し部222aを制御し、レジスタ群202のレジスタのうち、アドレス0hからアドレス(K−1)hまでのレジスタ値を読み出す。このとき読み出したレジスタ値のビット列をXとする。
要約計算部222bでは要約計算関数Hを用いて、レジスタ読み出し部222aから入力されたビット列Xを固定長のビット列Yに変換する。
ここで、装置1のCPU101の要約計算部110及び要約計算部222bにおける要約値の計算方法について述べる。
要約計算部222bでは要約計算関数Hを用いて、記憶媒体から読み出したデータのレジスタ値のビット列Xを固定長のビット列Yに変換することで要約値の計算を行っている。このとき、要約計算関数Hは、異なるXの値に対し同じYを生成しない、もしくは同じYを生成する確率が極めて低い関数であることが望ましい。
さらにYは後に、要約計算部110にて計算した、装置1が装置2に転送したデータの期待値の要約値と照合されるが、このとき、装置1がYを読み出す時間を短縮するため、さらには装置2の規模を可能な限り縮小するため、Yの値はできるだけ短いことが望ましい。
そこで、本実施の形態3及び後述する実施の形態4に係るデータ通信誤動作防止装置をスレーブデバイスに採用する場合、当該スレーブデバイスが、EEPROM等、メモリブロック(即ち、レジスタ群202)の規模が比較的大きな機器である場合には、要約計算関数HとしてMD5(Message digest algorithm 5)等のハッシュ関数を用いる。そして逆に、本実施の形態3及び後述する実施の形態4に係るデータ通信誤動作防止装置を採用するスレーブデバイスが、D/A変換回路等、メモリブロックが比較的小規模にて実現できる機器である場合には、要約計算関数Hとしてチェックサム関数などを用いるとよい。このようにして、要約計算関数Hとしては、レジスタ群202の規模に応じて、当該規模に見合った要約計算関数Hを用いることができる。
そして、上記要約計算関数Hを、装置1から連続的に送信される、装置1から転送されるデータの最後に付加し、当該データの要約値を計算している。
また、要約計算部110における要約値の計算方法についても同様の要約計算関数Hを用いて要約値の計算を行えばよい。
要約計算部222bにて計算された要約値Yは、レジスタ群202のアドレス(K+1)hからアドレス(K+m)hにマッピングされている要約値記憶部222cに保存される。また、要約計算/記憶制御部222eは、要約計算の終了と同時に、要約計算終了割り込み信号を割り込み制御部221に送出する。割り込み制御部221に送出された要約計算終了割り込み信号は、割り込み制御部109を介し、CPU101に送出されることで、装置1に対し、要約計算が終了したことを通知する。
要約計算終了割り込み信号を受信したCPU101は、メモリ103に予め保存しておいた、装置2に転送したデータの期待値を読み出し、当該期待値から要約値を計算する。
ここでCPU101は、これまで装置2に転送したデータ即ち、レジスタ群202の期待値及び、装置2のレジスタ群202の初期値をメモリ103に保存する。このようすれば、要約計算関数Hをソフトウエアで実現し、レジスタ群202の要約値を容易に導出することが可能である。
なお、要約計算関数Hのソフトウエアでの実現、即ち、要約値計算のアルゴリズムは、要約計算部110と要約計算部222bとで同一のものが使用されているのが望ましい。
さらには、CPU101が要約計算制御レジスタ222dに対し要約計算開始制御ビットイネーブル信号を送出する際に、要約値計算のアルゴリズムをレジスタ群202に送信する。そして、レジスタ群202に保持された当該アルゴリズムを、レジスタ読み出し部222aを介し、要約計算部222bに送ることで、要約値の計算が行われる構成であるのが望ましい。データ送信側である装置1と、データ受信側である装置2とで、要約値計算のアルゴリズムを共有することによって、装置1から装置2に転送されたデータに発生するエラーを、より確実に、かつ高精度に検出することができる。
次にCPU101は、要約計算部222bで計算されたレジスタ群202の要約値を、要約値記憶部222cから、レジスタ読み出し部216、I2C送信部213、ノイズ除去/同期化部212、双方向バッファ211を介し、I2Cバス伝送路301から読み出す。そして、比較部111にて、メモリ103に保存される期待値から計算した要約値と照合する。
仮にこのときI2C部201に誤動作が発生していたとしても、図9に示すようにエラー検出部220や、上述した実施の形態1のI2Cスレーブデバイス制御部104及び伝送経路302を組み合わせて設けることによって、I2C部201は初期化される。従って、CPU101はエラーが発生したI2Cバス伝送路301から問題なくレジスタ群202の要約値を読み出すことができる。
比較部111にて照合を行った結果、要約計算部222bで計算されたレジスタ群202の要約値とメモリ103に保存される期待値から計算した要約値とが一致する場合、レジスタ群202は、装置1から転送されたデータを正しく保持していると言える。従って、エラー検出部220にてエラーが検出された場合においても、以後の動作に支障をきたすことはない。
比較部111にて照合を行った結果、もしも、要約計算部222bで計算されたレジスタ群202の要約値とメモリ103に保存される期待値から計算した要約値とが異なる場合、レジスタ群202は、装置1から転送されたデータを正しく保持できていないと言える。したがってCPU101は装置2に対して、装置2全体のシステムリセットを発行し、装置2を初期化する等の異常処理を行い、装置2を復帰させる。
以上の方法により、実施の形態1や実施の形態2では検出できない、転送データのビット化けが生じたときに誤ってレジスタ群202に書き込みが発生した場合であっても、要約計算/記憶部222を設けることで、誤った書き込みが発生したことを検出することができる。
これによって、装置1から装置2へのデータ転送中に、当該データに発生したエラーを検出するための処理のうち、マスタデバイスである装置1における処理は、装置2に送信したデータの期待値から当該データの要約値を求める処理、及び装置2から受信したデータの要約値と、自身が保持していたデータの要約値とを照合する処理のみとなる。従って、スレーブデバイスにエラーが発生した場合において、自律的に当該スレーブデバイスを通信不能状態から復帰させることで、マスタデバイスに多大な負荷をかけずに済む。そして、実質的なデータ転送レートが悪化することなく、データ転送動作を継続することができる。
なお、本実施の形態3では、比較部111を装置1のCPU101に設ける構成である。しかしながら、比較部111が設けられる場所はこれに限らず、例えば、装置2に設けられてもよいし、装置1及び装置2とは異なる外部機器をI2Cバスに接続し、当該外部機器にて比較を行う構成であってもよい。
なお、本実施の形態3は、上述した実施の形態1や実施の形態2と組み合わせても構わない。
即ち、図9に示す電子機器3cに加え、I2Cスレーブデバイス制御部104及び伝送経路302を設け、I2Cスレーブデバイス制御部104を伝送経路302によって、I2C部201に接続する。そして、I2Cスレーブデバイス制御部104は、図4に示したように、I2Cイネーブル信号を、伝送経路302を介し、I2C部201に出力してもよい。
また、図9に示す電子機器3bのように、エラー検出部220を設け、データ転送時におけるエラーを検出してもよい。
逆に本実施の形態3を説明する図9において、データ転送時におけるエラーを検出する必要がない場合、当然ながら、エラー検出部220を設ける必要はない。
〔実施の形態4〕
ここでは、図9に示す構成のデータ通信誤動作防止装置における、要約計算/記憶部の別の実施例について述べる。
図11は、本実施の形態4に係る、要約計算/記憶部222の構成を示す図である。本実施の形態4に係る要約計算/記憶部222は、上述した実施の形態3と同様に、レジスタ読み出し部222a、要約計算部222b、要約値記憶部(要約値記憶手段)222c、要約計算制御レジスタ222d、要約計算/記憶制御部222eで構成されている。
ここで、レジスタ読み出し部222aは、レジスタ書き込み部217から転送された、装置1から転送されたデータ及び当該データが書き込まれるレジスタ群202のレジスタアドレスを読み出す。
また、要約計算部222bは、装置1から転送されたデータ及び当該データが書き込まれたレジスタ群202のレジスタアドレスの情報を含むビット列をXとすると、要約計算関数Hに、X=H(X)となるような関数が選択される。これによって、要約計算部222bはビット列Xの要約値として、ビット列Xを要約値記憶部222cに転送する。
また、要約値記憶部222cは要約計算部222bから受信したビット列Xを記憶する。このとき要約値記憶部222cには、ビット列Xに含まれる、装置1から転送されたデータと当該データが書き込まれるレジスタ群202のレジスタアドレスとが、それぞれ別のアドレスに書き込まれる。さらに、要約値記憶部222cに保存されたデータは、割り込み制御部221、割り込み制御部109を介して、任意のタイミングで装置1から読み出すことができる。
また、要約計算/記憶部222が起動している間、要約計算部222bが送出するビット列Xは、要約値記憶部222cに入力されると共に、要約計算/記憶制御部222eに入力される。要約計算/記憶制御部222eは要約計算部222bに転送されたデータの数を調べる。そして、当該転送データ数が要約値記憶部222cの容量(図11の場合は(m−2))を超えた場合には、割り込み制御部221に対してオーバーフロー割り込み信号を送出し、装置1に対してオーバーフローを通知する。
図11に示す本実施の形態4に係る要約計算/記憶部222は、要約値の計算方法が下記のように異なる。
まず、CPU101から送出される要約計算開始制御ビットイネーブル信号によって、要約計算制御レジスタ222dの要約計算開始制御ビットをイネーブルにする。これによって、要約計算/記憶制御部222eに、要約計算指示信号を送出し、レジスタ読み出し部222aを起動させる。動作を開始したレジスタ読み出し部222aは、装置1から転送されたデータがレジスタ群202に書き込まれる度に、当該データ及び当該データが書き込まれるレジスタ群202のレジスタアドレス(ビット列X)を読み出し、要約計算部222bに転送する。
要約計算部222bは、レジスタ読み出し部222aから受信したビット列Xの要約値を計算する。ここで上述のように、要約計算部222bの要約計算関数Hは、X=H(X)であるので、要約計算部222bは要約値としてビット列Xを要約値記憶部222cに送出する。
要約計算部222bは例えば、レジスタ群202のアドレス(K+1)hにレジスタアドレスを、アドレス(K+2)hにライトデータを、というように、要約値記憶部222cのレジスタアドレスをインクリメントしながら、ビット列Xに含まれるレジスタアドレスとライトデータとをそれぞれ、要約値記憶部222cの異なるアドレスに書き込む。
これによって、要約値記憶部222cには、ビット列Xが書き込まれる。即ち、装置1から転送されたデータ及び当該データが書き込まれたレジスタ群202のレジスタアドレスの情報がそれぞれ要約値記憶部222cの異なるアドレスに書き込まれる。つまり、要約計算制御レジスタ222dの要約計算開始制御ビットがイネーブルにされた以後に、装置1がレジスタ群202にアクセスした履歴を保持する。
その後、要約計算制御レジスタ222dの要約計算開始制御ビットがイネーブルにされた以後に、装置1がレジスタ群202にアクセスした履歴を、メモリ103に保存する。そして、上述した実施の形態3と同様に、装置1が要約値記憶部222cに保存されたデータを読み出し、メモリ103に保存に保存された、装置1がレジスタ群202にアクセスした履歴に含まれる、装置1から転送されたデータの要約値と比較する。これによって、要約計算開始制御ビットをイネーブルしてから後に、装置1から装置2に転送されたデータが、装置2に正しく書き込まれたか否かを確認することが可能となる。
これによって、装置1から装置2へのデータ転送中に、当該データに発生したエラーを検出するための処理のうち、マスタデバイスである装置1における処理は、装置2に送信したデータの期待値から当該データの要約値を求める処理、及び装置2から受信したデータの要約値と、自身が保持していたデータの要約値とを照合する処理のみとなる。従って、スレーブデバイスにエラーが発生した場合において、自律的に当該スレーブデバイスを通信不能状態から復帰させることで、マスタデバイスに多大な負荷をかけずに済む。そして、実質的なデータ転送レートが悪化することなく、データ転送動作を継続することができる。
さらに、所定の時間以降に装置1から装置2に書き込まれたデータを逐次的に比較することが可能となる。
なお、本実施の形態4は、上述した実施の形態1や実施の形態2と組み合わせても構わない。
即ち、図9に示す電子機器3cに加え、I2Cスレーブデバイス制御部104及び伝送経路302を設け、I2Cスレーブデバイス制御部104を伝送経路302によって、I2C部201に接続する。そして、I2Cスレーブデバイス制御部104は、図4に示したように、I2Cイネーブル信号を、伝送経路302を介し、I2C部201に出力してもよい。
また、図9に示す電子機器3bのように、エラー検出部220を設け、データ転送時におけるエラーを検出してもよい。
逆に本実施の形態4を説明する図9において、データ転送時におけるエラーを検出する必要がない場合、当然ながら、エラー検出部220を設ける必要はない。
また、本実施の形態4に係るデータ通信誤動作防止装置は、装置2がレジスタ群202の初期設定以降において、装置1のアクセスをほとんど必要としない装置の場合に好適である。
この「装置2がレジスタ群202の初期設定以降において、装置1のアクセスをほとんど必要としない装置」としては例えば、液晶モジュールが挙げられる。装置2が液晶モジュールの場合、初期設定以降において、装置1からは、液晶モジュールに使用される液晶のサイズやデータフォーマット等、使用するユーザが指定する条件で確実に動作することができるように、当該液晶モジュールを設定するための制御データを送出するだけでよい。そのため、表示中においては上記制御データは、所定の容量の少ないデータ転送の固定データのみを装置2に送信する。そして、初期のデータ送信以降は、常に同一のデータを送出する。結果、上記初期のデータ送信におけるデータを格納したデータがあれば、次回以降のデータ転送における転送データ数は大幅に減少する。
また、その他にも、カメラモジュール等の機器であり、カメラのサイズ設定などのパラメータを一度設定した後において、ON/OFFビットを送出することでデータ送信開始/停止の制御を行うことができる機器が挙げられる。装置2がカメラモジュールの場合、初期設定時においては、カメラサイズの設定を始めとした複数のパラメータの設定に必要なデータを装置2に送出する必要がある。但し、初期設定以降においては、データ送信開始/停止の制御を行うためのON/OFFビットを送出するだけで構わない。
このような機器の場合、装置2の要約値記憶部222cの容量を小さくできるのに加えて、装置1から書き込まれたデータを1対1で比較できる。そのため、回路規模の削減に加え、高精度かつ逐次的に、装置1から転送されたデータに発生したエラーを検出することができる。
従って、装置1から装置2へのデータ転送中に、当該データにエラーが発生した場合においても、スレーブデバイスに記憶された情報を読み出す動作が不要となるので、実質的なデータ転送レートが悪化することなく、データ転送動作を継続することができる。
また、本発明に係るデータ通信誤動作防止装置は、信号線を介して互いの間でデータ通信を行う第1及び第2の装置を有し、上記第1の装置は、上記第2の装置に転送したデータを記憶する第1の記憶手段と、上記第1の記憶手段に保持したデータの要約値を計算する第1の要約値計算手段とを備え、上記第2の装置は、受信したデータが書き込まれることで、当該データを記憶する第2の記憶手段と、上記記憶手段に記憶されたデータの要約値を計算する第2の要約値計算手段とを備え、上記第1の装置は、さらに、第2の要約値計算手段により計算され、上記第1の装置に転送された要約値と、上記第2の要約値計算手段により計算された要約値とを比較する比較手段を備えるデータ通信誤動作防止装置であって、第1の要約値計算手段による第1の記憶手段に保持したデータの要約値の計算及び第2の要約値計算手段による第2の記憶手段に記憶されるデータの要約値の計算を、ソフトウエアにより実施してもよい。
上記の構成によれば、要約計算関数はソフトウエアで実現される。そして、第2の記憶手段の初期値及び当該第2の記憶手段固有の値を第1の記憶装置に保存しておけば、第2の記憶手段に記憶されるデータの要約値や第1の記憶手段に保持したデータの要約値の導出を、容易に行うことができる。
従って、第1の要約値計算手段及び第2の要約値計算手段における要約値の導出を簡単化することができるという効果を奏する。
また、本発明に係るデータ通信誤動作防止装置は、第1の記憶手段は、上記ソフトウエアのアルゴリズムを保持し、第1の要約値計算手段が第1の記憶手段に保持したデータの要約値の計算を開始する際、第1の装置は、上記第1の記憶手段に保持したアルゴリズムを上記第1の要約計算手段に送信してもよい。
上記の構成によれば、第1の記憶手段は、要約値計算のためのソフトウエアのアルゴリズムを保持している。そして、第2の要約値計算手段が第2の記憶手段に保持したデータの要約値の計算を開始する際、装置機器は第1の記憶手段に保持したアルゴリズムを、第2の要約計算手段に送信する。第1の要約値計算手段及び第2の要約値計算手段は、それぞれ同一のソフトウエアにより、要約値の計算を行う。そのため、同一の計算方法で導出した要約値同士を比較することができる。
なお、上述した本実施の形態1〜4で説明した装置1及び装置2の各ブロックや各処理ステップは、ハードウエアロジックによって構成してもよいし、次のようにCPUを用いてソフトウエアによって実現してもよい。
即ち、装置1及び装置2は、各機能を実現する制御プログラムの命令を実行するCPU、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラム及び各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである装置1及び装置2の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記装置1及び上記装置2に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、装置1及び装置2を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。