(57)【特許請求の範囲】
【請求項１】
プルアップ抵抗が接続された双方向性を有するバスを介してシリアルデータをデバイスに送信し、当該シリアルデータの各バイトに対する当該デバイスからの応答信号を受信する送受信制御装置において、
前記デバイスからの応答信号の送信タイミングの基準となるクロックを生成し、前記バスのクロック信号線を介して、前記デバイスに当該クロックを送信するクロック生成部と、
前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記デバイスからの応答信号を検出した時間を算出する応答時間算出部と、
前記応答時間算出部により算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するフレーム生成部と、
を備える送受信制御装置。
【請求項２】
請求項１に記載の送受信制御装置において、
前記フレーム生成部が、前記シリアルデータの各バイトのフレームよりも短い擬似フレームを生成し、前記バスのデータ信号線を介して、前記デバイスに当該擬似フレームを送信し、
前記応答時間算出部が、前記擬似フレームを前記データ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記デバイスからの応答信号を検出した時点までの時間を算出する送受信制御装置。
【請求項３】
前記請求項１又は２に記載の送受信制御装置において、
前記フレーム生成部が、
前記シリアルデータを生成するシリアルデータ生成部と、
前記バスのデータ信号線に対するデータ転送の方向を切り替える双方向バッファ部と、
前記シリアルデータ生成部により生成され、前記双方向バッファ部から送信されるシリアルデータのうち、前記デバイスに対して最初に送信するシリアルデータの第一バイトにおける少なくとも最下位ビットで、前記双方向バッファ部を制御して前記データ転送の方向を受信方向にする双方向バッファ制御部と、
を備え、
前記双方向バッファ制御部が、前記応答時間算出部により算出した時間に基づき、前記双方向バッファ部から送信されるシリアルデータに対して、当該シリアルデータの各バイトの最下位ビットにおける、前記データ転送の方向を受信方向にするタイミングを調整する送受信制御装置。
【請求項４】
データ転送を可能にするクロックを生成し、データ転送を開始及び終了する第１のデバイスと、当該第１のデバイスによりアドレスが指定される第２のデバイスと、当該第１のデバイス及び第２のデバイス間を接続するプルアップ抵抗が接続された双方向性を有するバスと、を備える電子機器において、
前記第１のデバイスが、
前記クロックを生成し、前記バスのクロック信号線を介して、前記第２のデバイスに当該クロックを送信するクロック生成部と、
前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記第２のデバイスからの応答信号を検出した時間を算出する応答時間算出部と、
前記応答時間算出部により算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するフレーム生成部と、
を備える電子機器。
【請求項５】
請求項４に記載の電子機器において、
前記第１のデバイス及び第２のデバイス間を接続する制御信号線を備え、
外部からの制御信号に基づき、自身の動作を停止するディセーブル機能を有する電源部を前記第２のデバイスが備え、
前記応答時間算出部により算出される時間が予め設定された範囲外である場合に、該当する第２のデバイスを停止させる制御信号を、前記制御信号線を介して、当該第２のデバイスの電源部に送信するスレーブ制御部を前記第１のデバイスが備える電子機器。
【請求項６】
第１のデバイスが、データ転送を可能にするクロックを生成し、プルアップ抵抗が接続された双方向性を有するバスを介して、シリアルデータを第２のデバイスに送信し、第２のデバイスが、当該シリアルデータの各バイトに対する応答信号を前記第１のデバイスに返信するデータ送信方法において、
前記第１のデバイスが、前記第２のデバイスからの応答信号の送信タイミングの基準となるクロックを生成し、前記バスのクロック信号線を介して、前記第２のデバイスに当該クロックを送信するクロック生成ステップと、
前記第１のデバイスが、前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記第２のデバイスからの応答信号を検出した時間を算出する応答時間算出ステップと、
前記第１のデバイスが、前記応答時間算出ステップにより算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するタイミング調整ステップと、
を有するデータ送信方法。
【請求項７】
プルアップ抵抗が接続された双方向性を有するバスを介してシリアルデータをデバイスに送信し、当該シリアルデータの各バイトに対する当該デバイスからの応答信号を受信する送受信制御装置のコンピュータを機能させる制御プログラムにおいて、
コンピュータを、前記デバイスからの応答信号の送信タイミングの基準となるクロックを生成し、前記バスのクロック信号線を介して、前記デバイスに当該クロックを送信するクロック生成手段と、前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記デバイスからの応答信号を検出した時間を算出する応答時間算出手段と、前記応答時間算出手段により算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するタイミング調整手段として機能させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一又は複数のデバイスを動作させるためのクロック及びデータの送受信を制御する送受信制御装置及びその制御プログラムに関する。
【背景技術】
【０００２】
近年、様々なメーカーが、マスターデバイス及びスレーブデバイス間のインタフェースとなるシリアルバスを備えた電子機器を提供しており、個々のデバイスの規格を網羅したインタフェースの実現が必須になっている。
【０００３】
このマスターデバイス（以下、マスターと称す）は、データ転送を可能にするクロックを生成すると共に、シリアルバス上のデータ転送を開始し、データ転送を終了するデバイスである。また、スレーブデバイス（以下、スレーブと称す）は、マスターからアドレスを指定されるデバイスであり、各バイトの長さを８ビットとしたデータをマスターから受信し、そのデータに応じた動作を行うデバイスである。
【０００４】
また、スレーブは、マスターから送信されるアドレス及びデータにおける各バイトが終了する度に、送信されたアドレス及びデータの受信が完了したことを通知するためのアクノリッジ（acknowledge：以下、ＡＣＫと称す）を生成してマスターに返信する。同様に、マスターは、スレーブから入力されるデータにおける各バイトが終了する度に、ＡＣＫを生成してデータの送信元であるスレーブに返信する。
【０００５】
このＡＣＫを返信するタイミングは、通常、図９（ａ）に示すように、マスターからスレーブに送信するデータにおける各バイト（ＢＩＴ７〜ＢＩＴ０）と、スレーブからマスターに送信するＡＣＫと、が重畳しないタイミングで返信される。
【０００６】
しかしながら、マスター及びスレーブを備えた電子機器は、内蔵する全てのマスター及びスレーブを一のメーカーにより設計及び製造するとは限らず、スレーブによるＡＣＫを返信するタイミングに許容範囲を持たせているのが現状である。
【０００７】
送受信制御装置は、デバイスからの応答信号の送信タイミングの基準となるクロックを生成し、バスのクロック信号線を介して、デバイスに当該クロックを送信するクロック生成部と、シリアルデータをバスのデータ信号線に送出後、クロックと、プルアップ抵抗によるバスの状態とに基づいて生成されるデバイスからの応答信号を検出した時間を算出する応答時間算出部と、応答時間算出部により算出した時間に基づき、シリアルデータの各バイトのフレームにおける、データ信号線に対するフレームの送出を完了するタイミングを調整するフレーム生成部と、を備える。
【０００８】
これに対し、従来のバス競合検出方式は、バスの電圧レベルの計測結果を取込んで一時記憶し、この記憶内容をシステムクロックサイクル毎に更新しつつ外部へ読出して、この読出し結果によりバスの競合状態を検出する（例えば、特許文献１参照）。
【０００９】
また、従来のバスファイト防止回路は、バスライン上にデータを夫々送出する出力バッファと、バスラインがフローティング状態にあるか否かを検出するフローティング検出回路とを備えている。このフローティング検出回路により、バスラインがフローティング状態でないと検出されている時かつ送出しようとするデータレベルが異なる時の間中、該当する出力バッファをディスイネーブルにしてデータを送出しないようにする（例えば、特許文献２参照）。
【００１０】
また、従来の出力回路は、イネーブル制御信号を第１の規定時間だけ遅らせる第１の遅延回路から出力される遅延信号によって、出力手段の出力状態をイネーブル状態からディセーブル状態へと切り替えるように制御する。また、従来の出力回路は、出力手段の出力状態をイネーブル状態からディセーブル状態へと切り替える制御を第２の規定時間で段階的に実施する手段を有する（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開昭６３−２０８９６４号公報
【特許文献２】特開平１−１１７５４１号公報
【特許文献３】特開平１０−３２００８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来のバス競合検出方式は、バスラインの電圧レベルとして、論理０と１との中間、又はハイ・インピーダンスを検出することで、バスファイトを検出する技術である。バスラインの電圧レベルとして、論理０と１との中間を検出するということは、バスファイトが既に発生していることを意味し、マスター及びスレーブ内の回路が破壊されることがある。
【００１３】
また、従来のバスファイト防止回路は、２つの出力コントロール信号が同時にアサートされることで、バスファイトが発生することを検出し、出力バッファをディスイネーブルにする。これに対し、出力コントロール信号に対して、バス信号自体のタイミングがずれた場合には、バスファイトが発生し、マスター及びスレーブ内の回路が破壊されることがある。
【００１４】
また、従来の出力回路は、イネーブル制御信号のタイミングを調整することにより、バスファイトを回避している。これに対し、従来のバスファイト防止回路と同様に、イネーブル制御信号に対して、バス信号自体のタイミングがずれた場合には、バスファイトが発生し、マスター及びスレーブ内の回路が破壊されることがある。
したがって、本発明は、デバイス内の回路の破壊を防止することができるマスターデバイス、電子機器、バス制御方法及び制御プログラムを提供するものである。
【課題を解決するための手段】
【００１５】
送受信制御装置は、デバイスからの応答信号を検出する検出部と、検出部による検出結果に基づき、シリアルデータの各バイトのフレームにおける、バスに対するフレームの送出を完了するタイミングを調整するフレーム生成部と、を備える。
【発明の効果】
【００１６】
開示の送受信制御装置によれば、デバイス内の回路の破壊を防止することができる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施形態に係る電子機器の概略構成の一実施例を示すブロック図である。
【図２】Ｉ２Ｃバスにおけるデータ転送フォーマットの一実施例を示す説明図であり、（ａ）はライトアクセス時のデータ転送フォーマットを示し、（ｂ）はリードアクセス時のデータ転送フォーマットを示す。
【図３】第１の実施形態に係る擬似フレームの一実施例を説明するための説明図であり、（ａ）は通常のフレームを示し、（ｂ）は擬似フレームを示し、（ｃ）はスタート・ビットに続く擬似フレームを示す。
【図４】第１の実施形態に係るバスファイトの回避方法の一実施例を説明するためのタイミングチャートであり、（ａ）は応答時間の算出方法を説明するためのタイミングチャートを示し、（ｂ）は双方向バッファ部の制御方法を説明するためのタイミングチャートを示す。
【図５】図１に示す電子機器におけるセットアップの処理手順の一実施例を示すフローチャートである。
【図６】図１に示す電子機器におけるライトアクセス時の処理手順の一実施例を示すフローチャートである。
【図７】第２の実施形態に係る電子機器の概略構成の一実施例を示すブロック図である。
【図８】図７に示す電子機器における処理手順の一実施例を示すフローチャートである。
【図９】バスファイトを説明するためのタイミングチャートであり、（ａ）はバスファイトが発生していない状態を示し、（ｂ）はバスファイトが発生している状態を示し、（ｃ）はバスファイトの発生により信号がショートしている状態を示す。
【発明を実施するための形態】
【００１８】
ここで、本発明は多くの異なる形態で実施可能である。したがって、下記の実施形態の記載内容のみで解釈すべきではない。また、実施形態の全体を通して同じ要素には同じ符号を付けている。
【００１９】
実施形態では、主に装置について説明するが、いわゆる当業者であれば明らかな通り、本発明はコンピュータで使用可能なプログラム、方法としても実施できる。また、本発明は、ハードウェア、ソフトウェア、又は、ソフトウェア及びハードウェアの実施形態で実施可能である。
プログラムは、ハードディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）、光記憶装置又は磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
【００２０】
（第１の実施形態）
以下の説明においては、情報処理手段の一例として、マスター１０及びスレーブ２０を用いて説明するが、他の情報処理手段にデータ転送を行う送受信装置であれば、「主」及び「副」の関係にない情報処理手段であってもよい。
【００２１】
図１において、電子機器１００は、マスター１０と、マスター１０によりアドレスが指定されるデバイスである一又は複数（第１、第２、・・・、第ｋ（ｋは自然数））のスレーブ２０と、マスター１０及び各スレーブ２０間を接続するシリアルバス３０とを備えている。
【００２２】
なお、本実施形態に係る電子機器１００は、例えば、通信装置が挙げられ、マスター１０として用いられるＦＰＧＡ（Field Programmable Gate Array）と、スレーブ２０として用いられる光モジュールとが、シリアルバス３０に接続される。しかしながら、電子機器１００は、シリアルバス３０を介して、マスター１０とスレーブ２０との間で、シリアル通信を行うものであれば、通信装置に限られるものではない。例えば、ＣＰＵ（Central Processing Unit）をマスター１０とし、ＥＥＰＲＯＭ（Erasable Programmable ROM）をスレーブ２０とした電子機器や、通信用Ｉ／Ｏ（Input/Output）デバイス及びカメラ等の周辺デバイスをスレーブ２０とした携帯電話機等が考えられる。
【００２３】
シリアルバス３０は、データやアドレス等を伝送する信号線であるデータ信号線３１と、マスター１０からスレーブ２０へのクロックを伝送する信号線であるクロック信号線３２を備えている。また、データやアドレス等は、クロック信号線３２を伝送するクロックに同期して、データ信号線３１を伝送する。
【００２４】
なお、マスター１０及びスレーブ２０による複数のデバイスが、データ信号線３１を介して、同時にデータを送信した場合には、複数のデバイス間に異常な電流が流れ、デバイスの破壊に繋がることになる。このため、データ信号線３１は、データを送信しなければならないデバイス以外のデバイスによるデータの送信を、電気的に絶縁した状態（ハイ・インピーダンス（High-impedance：Ｈｉ−Ｚ））にする。
【００２５】
また、マスター１０又はスレーブ２０における任意の入力端子に接続されている他のデバイスにおける全ての出力端子が同時にハイ・インピーダンスになると、入力端子は、電気的に何も接続されていないことと同様であり、デバイスを破壊する可能性がある。このため、データ信号線３１は、１００ｋΩ程度のプルアップ抵抗３３を介して、正の電源電圧に接続し、データ信号線３１を開放した場合に、Ｈ（Hight）の状態（以下、Ｈレベルと称す）になるように設定されている。
【００２６】
なお、シリアルバス３０としては、例えば、フィリップス製のＩ２Ｃ（Inter-Integrated Circuit）バスが挙げられる。このＩ２Ｃバスは、データ信号線３１及びクロック信号線３２が双方向性を有し、各信号線に接続されたプルアップ抵抗３３による並列抵抗を介して、正の電源電圧に接続されている。このため、データ信号線３１及びクロック信号線３２は、バスが開放されているときに両信号線ともＨレベルになる。
【００２７】
マスター１０は、シリアルバス３０上のデータ転送を開始する機能と、データ転送のタイミングを取るクロックを生成する機能と、データ転送を終了する機能とを有するデバイスである。
マスター１０は、大別すると、シリアルタイミング生成部１１と、クロック生成部１２と、フレーム生成部１３と、応答信号受信部１４とを備えている。
【００２８】
シリアルタイミング生成部１１は、スレーブ２０のアドレスを含むシリアルデータの生成に用いるクロック（シリアルデータ用クロック）を生成し、シリアルデータ生成部１３ａに出力する。また、シリアルタイミング生成部１１は、マスター１０内部の各構成要素による処理を同期させるタイミング信号を生成し、クロック生成部１２、シリアルデータ生成部１３ａ、双方向バッファ制御部１３ｃ及び応答信号受信部１４に出力する。
【００２９】
クロック生成部１２は、各スレーブ２０からの応答信号であるＡＣＫの送信タイミングの基準となるクロックを生成し、クロック信号線３２を介して、各スレーブ２０内部のシリアルタイミング生成部にクロックを送信する。なお、各スレーブ２０のシリアルタイミング生成部は、マスター１０からのクロックに基づき、シリアルデータ用クロックを生成し、各スレーブ２０内部のシリアルデータ生成部に出力する。
【００３０】
フレーム生成部１３は、各スレーブ２０に対して最初に送信するシリアルデータの第一バイトのフレームにおける、少なくとも最下位ビットを除く擬似フレームを生成する。また、フレーム生成部１３は、生成した擬似フレームを、データ信号線３１を介して、各スレーブ２０に送信する。
ここで、擬似フレームを説明するにあたり、シリアルバス３０としてＩ２Ｃバスを例に挙げ、マスター１０及びスレーブ２０間のデータ転送について、図２を用いて説明する。
【００３１】
Ｉ２Ｃバスのデータ転送は、マスター１０がスレーブ２０にデータを書き込む場合に、例えば、図２（ａ）に示す転送フォーマットが規定され、マスター１０がスレーブ２０からデータを読み込む場合に、例えば、図２（ｂ）に示す転送フォーマットが規定されている。なお、マスター１０は、これらの転送フォーマットにより、各スレーブ２０との送受信を完了することで、各スレーブ２０の運用が正常に開始され、電子機器１００全体の運用が行われる。
【００３２】
図２（ａ）及び図２（ｂ）に示すように、データ信号線３１に送出される各バイトの長さは８ビット（BIT7、BIT6、・・・、BIT0）であり、１回のデータ転送で伝送できるバイト数に制限はない。また、各バイトの後には、アクノリッジ・ビット（ACK）がある。
【００３３】
また、図２（ｃ）に示すように、データ信号線３１を転送される各データ・ビット毎に一つのクロック（一クロック分）が、マスター１０のクロック生成部１２により生成され、クロック信号線３２を介して、各スレーブ２０に送信される。
【００３４】
なお、スレーブ２０又はマスター１０は、シリアルデータの各バイトの最下位ビット（BIT0）に対応するクロックの立ち上がりエッジ（又は立ち下がりエッジ）を認識して、ＡＣＫを返信する。また、クロックがＨレベルの間は、データ信号線３１の状態は一定でなければならず、データ信号線３１がＨレベルとＬ（Low）レベルとの間で状態を変更できるのは、クロック信号線３２のクロックがＬレベルのときに限られる。すなわち、図２（ｃ）の最上段及び第二段目のタイミングチャートに示すように、一クロック分において、０（各ビットの立ち上がりエッジに対応）から四分の一周期（Ｔ／４）まではクロックがＬレベルである。また、四分の一周期（Ｔ／４）から四分の三周期（３Ｔ／４）まではクロックがＨレベルであり、四分の三周期（３Ｔ／４）から一周期（各ビットの立ち下がりエッジに対応）はクロックがＬレベルである。
【００３５】
なお、図２（ｃ）において、最上段は、マスター１０のクロック生成部１２により生成され、マスター１０から各スレーブ２０にクロック信号線３２を介して伝送されるクロックを示している。また、第二段目は、マスター１０からデータ信号線３１に送出されるシリアルデータを示しており、バイト（BIT7〜BIT０）毎にデータ信号線３１を占有し、各バイト間ではスレーブ２０からのＡＣＫを受信するためにデータ信号線３１を開放（Ｈｉ−Ｚ）している。また、第三段目は、スレーブ２０からデータ信号線３１に送出されるシリアルデータを示しており、ＡＣＫを送信する度にデータ信号線３１を占有し、各ＡＣＫ間ではマスター１０からデータを受信するためにデータ信号線３１を開放（Ｈｉ−Ｚ）している。また、最下段は、第二段目及び第三段目に示すシリアルデータによるデータ信号線３１上のデータ転送の状態を示している。
【００３６】
Ｉ２Ｃバスの通信手順では、スタート（START）条件及びストップ（STOP）条件という固有の状態が発生する。このスタート条件は、クロック信号線３２がＨレベルのときに、マスター１０がデータ信号線３１をＨレベルからＬレベル（スタート・ビット）に変化させることで発生する。また、ストップ条件は、クロック信号線３２がＨレベルのときに、マスター１０がデータ信号線３１をＬレベルからＨレベル（ストップ・ビット）に変化させることで発生する。スタート条件が発生した後は、シリアルバス３０がビジー状態になり、ストップ条件が発生した後は、シリアルバス３０が開放され、シリアルバス３０がフリー状態になる。
【００３７】
また、転送フォーマットは、図２（ａ）及び図２（ｂ）に示すように、スタート・ビット（START）に続く、第一バイトとして、７ビットのスレーブ・アドレス（DEVICE ADDRESS）と１ビットのデータ方向ビット（READ/WRITE）とが規定されている。このデータ方向ビットは、「0」であればデータ送信（書き込み）を示し、「1」であればデータ要求（読み込み）を示す。すなわち、各スレーブ２０は、７ビット・アドレスにより、マスター１０がどのスレーブ２０を選択するかを判断し、データ方向ビットにより、マスター１０からのデータの送信又は要求を判断する。
【００３８】
なお、マスター１０は、第一バイトに対するスレーブ２０からのＡＣＫを受信することにより、スレーブ２０における運用に必要な各種設定データを、スレーブ２０に送信する。また、図２（ａ）及び図２（ｂ）において、ワード・アドレス（WORD ADDRESS）は、スレーブ２０内のアドレスを指定するためのアドレスデータである。
【００３９】
つぎに、本実施形態に係る擬似フレームについて、図３を用いて説明する。
シリアルデータの各バイトによる通常のフレームは、図３（ａ）に示すように、バイト長が８ビットであるフレームである。これに対し、本実施形態に係る擬似フレームは、通常のフレームに対して、少なくとも最下位ビット（BIT0）を除いたバイト長（例えば、図３（ｂ）に示す７ビット）のフレームである。
【００４０】
特に、Ｉ２Ｃバスでは、スタート・ビットに続く第一バイトが、スレーブ２０のアドレスを示す７ビット・アドレスと、スレーブ２０に対するデータの送信又は要求を示すデータ方向ビットとに相当する。このため、擬似フレームとしては、図３（ｃ）に示すように、データ方向ビットを除く、７ビット・アドレスを含むフレームとすることにより、スレーブ２０のアドレスを指定したうえで、所望のスレーブ２０に擬似フレームを送信することができる。
【００４１】
なお、シリアルデータの第一バイトに対するＡＣＫは、スタート・ビットに対応するクロックに続く８クロック目の立ち上がりエッジ（又は立ち下がりエッジ）に基づき、返信される。このため、擬似フレームは、極端に言えば、シリアルデータの第一バイトの全ビットを除いてもよい（第一バイトを受信状態としてもよい）。
【００４２】
しかしながら、Ｉ２Ｃバスでは、スタート・ビットに続く第一バイトが、スレーブ２０のアドレスを示す７ビット・アドレスである。このため、スレーブ２０を特定するためには、７ビット・アドレスを削除せずに、データ方向ビットのみを除く擬似フレームとすることが好ましい。
【００４３】
特に、ＡＣＫがシリアルデータの各バイトにおける最下位ビットより上位のビット（BIT7〜BIT1）に重畳することは、各バイトの最下位ビットに対応するクロックの立ち上がりエッジ（又は立ち下がりエッジ）を認識せずにＡＣＫを返信していることになる。すなわち、ＡＣＫがシリアルデータの各バイトにおける最下位ビットより上位のビットに重畳することは、シリアルバス３０のインタフェースにおける明らかな規格違反であり、通常、バスファイトが生じる場合は、ＡＣＫが最下位ビットに重畳するものである。
【００４４】
なお、擬似フレームは、フレーム生成部１３により生成されるが、より具体的には、フレーム生成部１３が備える、シリアルデータ生成部１３ａと、双方向バッファ部１３ｂと、双方向バッファ制御部１３ｃとにより生成される。
【００４５】
また、フレーム生成部１３は、応答信号受信部１４による検出結果に基づき、シリアルデータの各バイトのフレームにおける、データ信号線３１に対するフレームの送出を完了するタイミングを調整する。
【００４６】
応答信号受信部１４は、スレーブ２０からの応答信号を検出する検出部に相当し、スレーブ２０からの応答信号であるＡＣＫを受信するブロックであり、サンプリングクロック生成部１４ａと、応答時間算出部１４ｂとを備えている。
【００４７】
サンプリングクロック生成部１４ａは、クロック生成部１２により生成されるクロックのクロック周波数より高いクロック周波数を有するサンプリングクロックを生成し、応答時間算出部１４ｂに出力する。なお、サンプリングクロックは、クロック生成部１２により生成されるクロックに対して高速にするほど、解像度が上がり、後述するＡＣＫによる電位レベルの変化点を検出する精度を高めることができる。例えば、シリアルバス３０がＩ２Ｃバスの場合に、マスター１０により生成されるクロックのクロック周波数を１００ｋＨｚ〜４００ｋＨｚとする規格に対して、サンプリングクロックのクロック周波数を５０MHz程度にすることで、充分な解像度を得ることができる。
【００４８】
応答時間算出部１４ｂは、擬似フレームをデータ信号線３１に送出し終えた時点から擬似フレームに対するスレーブ２０からの応答信号を検出した時点までの応答時間を、サンプリングクロックに基づいて算出し、双方向バッファ制御部１３ｃに出力する。
【００４９】
なお、本実施形態において、擬似フレームをデータ信号線３１に送出し終えた時点（以下、応答時間の始点と称す）とは、マスター１０が擬似フレームの最下位ビット（図３（ｂ）であれば、BIT1）の立ち下がりエッジをデータ信号線３１に送出した時点である。しかし、マスター１０により管理されるものであれば、前述の最下位ビットの立ち下がりエッジをデータ信号線３１に送出した時点に限定されない。例えば、最下位ビットの立ち下がりエッジをデータ信号線３１に送出した直後に生成されるサンプリングクロックの立ち上がり又は立ち下がりを用いても良い。また、擬似フレームに対するスレーブ２０からの応答信号を検出した時点（以下、応答時間の終点と称す）とは、後述するＡＣＫによる変化点を検出した時点である。
【００５０】
ここで、応答時間の算出方法について、図４（ａ）を用いて説明する。なお、図４（ａ）において、最上段は、マスター１０からデータ信号線３１に送出されるシリアルデータを示しており、擬似フレーム（BIT7〜BIT1）の最下位ビット（BIT1）の送出後はデータ信号線３１を開放（Ｈｉ−Ｚ）し、受信状態にしている。また、第二段目は、最上段に示すシリアルデータによるスレーブ２０における受信データを示しており、最上段におけるハイ・インピーダンスはプルアップ抵抗３３によりＨレベルとしてスレーブ２０に受信される。マスター１０からデータ信号線３１に送出されるシリアルデータがBIT0を含んでいないので、スレーブ２０における受信データはBIT0を受信しない。しかし、説明の便宜上、第二段目においては、プルアップ抵抗３３によりＨレベルとなる箇所に、BIT0を表記している。また、第三段目は、サンプリングクロック生成部１４ａにより生成され、応答時間算出部１４ｂに出力されるサンプリングクロックを示している。さらに、第四段目は、スレーブ２０からデータ信号線３１に送出されるシリアルデータを示しており、BIT0に対応するクロック（スタート・ビットに対応するクロックに続く８クロック目）の立ち上がりエッジ（又は立下りエッジ）を認識して、ＡＣＫを送信している。また、最下段は、第四段目に示すシリアルデータによるマスター１０における受信データを示しており、ハイ・インピーダンスはプルアップ抵抗３３によりＨレベルとしてマスター１０に受信される。
【００５１】
図４（ａ）に示すように、応答時間算出部１４ｂは、サンプリングクロックにおける一のクロックの立ち上がりエッジを応答時間の始点に一致させて、この一のクロックからのサンプリングクロックのクロック数を積算し始める。そして、応答時間算出部１４ｂは、ＨレベルからＡＣＫ（Ｌレベル）への電位レベルの変化点を検出する（図４（ａ）ではサンプリングクロックの８クロック目の立ち上がりエッジ）。そして、応答時間算出部１４ｂは、変化点を検出した時点におけるサンプリングクロックのクロック数の積算値（図４（ａ）では8個）を応答時間として算出する。
【００５２】
なお、応答時間の終点としてＡＣＫの立ち下がりエッジを検出することが理想であるが、図４（ａ）に示すように、ＡＣＫの立ち下がりエッジとサンプリングクロックの立ち上がりエッジとが一致するとは限らない。このため、前述したとおり、サンプリングクロックは、クロック生成部１２により生成されるクロックに対して高速にするほど、ＡＣＫの立ち下がりエッジと、変化点を検出したサンプリングクロックの立ち上がりエッジとの間隔を狭めることができる。すなわち、ＡＣＫの立ち下がりエッジとサンプリングクロックの立ち上がりエッジとの誤差を小さくし、応答時間の精確な値を算出することができる。
【００５３】
シリアルデータ生成部１３ａは、シリアルデータを生成するブロックであり、例えば、パラレルデータとして書き込まれたデータを１ビットずつシリアルデータとして、双方向バッファ部１３ｂに出力するパラレル・シリアル変換レジスタである。
【００５４】
双方向バッファ部１３ｂは、双方向バッファ制御部１３ｃからの制御信号に基づき、シリアルバス３０のデータ信号線３１に対するデータ転送の方向（送信方向、受信方向）を切り替える双方向バッファである。なお、双方向バッファ部１３ｂは、データ信号線３１を介して、各スレーブ２０内部の双方向バッファ部に接続されている。
【００５５】
双方向バッファ制御部１３ｃは、各スレーブ２０に対して最初に送信するシリアルデータの第一バイトにおける、少なくとも最下位ビットで、双方向バッファ部１３ｂを制御してデータ転送の方向を受信方向（＝ハイ・インピーダンスの状態）にする。すなわち、双方向バッファ制御部１３ｃは、シリアルデータ生成部１３ａにより生成された通常のフレームを擬似フレームとしてデータ信号線３１に送出するために、双方向バッファ部１３ｂを制御する。
【００５６】
また、双方向バッファ制御部１３ｃは、応答時間算出部１４ｂにより算出した応答時間に基づき、シリアルデータの各バイトのフレームにおける、データ信号線３１に対するフレームの送出を完了するタイミングを調整する。すなわち、双方向バッファ制御部１３ｃは、応答時間に基づき、双方向バッファ部１３ｂから送信されるシリアルデータに対して、シリアルデータの各バイトの最下位ビットにおける、データ転送の方向を受信方向にするタイミングを調整する。
【００５７】
なお、応答時間算出部１４ｂにより算出した応答時間は、スレーブ２０毎に異なる場合があるため、双方向バッファ制御部１３ｃは、各スレーブ２０に対して算出した応答時間を、各スレーブの識別情報に対応付けて格納する応答時間格納部１３ｄを備えている。
【００５８】
ここで、シリアルデータの各バイトの最下位ビットにおける、データ転送の方向を受信方向にするタイミングの調整について、図４（ｂ）を用いて説明する。なお、図４（ｂ）において、上段は、サンプリングクロック生成部１４ａにより生成され、応答時間算出部１４ｂに出力されるサンプリングクロックを示しており、前述した図４（ａ）の第三段目のサンプリングクロックのクロック周波数と同一である。また、下段は、シリアルデータの各バイトの最下位ビットにおける、データ転送の方向を受信方向にするタイミングを調整して、バスファイトの発生を回避したデータ信号線３１上のデータ転送の状態を示している。
【００５９】
図４（ｂ）に示すように、双方向バッファ制御部１３ｃは、シリアルデータの各バイトにおける最下位ビットの立ち上がりエッジに、サンプリングクロックにおける一のクロックの立ち上がりエッジを一致させる。そして、双方向バッファ制御部１３ｃは、各バイトにおける最下位ビットの立ち下がりエッジが、算出した応答時間であるサンプリングクロックのクロック数の積算値を超えないように、最下位ビットをデータ信号線３１に送出し続ける時間を調整する。例えば、算出したサンプリングクロックのクロック数が８個である場合に、双方向バッファ制御部１３ｃは、図４（ｂ）に示すように、サンプリングクロックの７クロック目の立ち上がりエッジにおいて、データ信号線３１に対するデータ転送の方向を受信方向にする。
【００６０】
このように、フレーム生成部１３は、シリアルデータ生成部１３ａにより生成される通常のフレームに対して、双方向バッファ部１３ｂ及び双方向バッファ制御部１３ｃにより、データ転送の方向を切り替えるだけで、所望のフレームを簡易に生成することができる。
【００６１】
つぎに、本実施形態に係る電子機器１００におけるバス制御方法について説明する。なお、以下の説明においては、シリアルバス３０として、Ｉ２Ｃバスを用いた場合を例に挙げて説明する。
【００６２】
まず、電子機器１００における通常の運用を開始する前に行う、各スレーブ２０に対応する応答時間（サンプリングクロックのクロック数の積算値）を算出するセットアップについて、図５を用いて説明する。
電子機器１００のユーザは、電子機器１００の電源を入れて、マスター１０及びスレーブ２０を起動する（ステップＳ１）。
【００６３】
マスター１０のシリアルタイミング生成部１１は、シリアルデータ用クロックを生成して、シリアルデータ生成部１３ａに出力する。また、シリアルタイミング生成部１１は、タイミング信号を生成して、クロック生成部１２、シリアルデータ生成部１３ａ、双方向バッファ制御部１３ｃ及び応答信号受信部１４に出力する（ステップＳ２）。
【００６４】
クロック生成部１２は、タイミング信号に基づき、クロックを生成し、クロック信号線３２を介して接続する全てのスレーブ２０に対して、共通のクロックを送信する（ステップＳ３）。
また、サンプリングクロック生成部１４ａは、タイミング信号に基づき、サンプリングクロックを生成し、応答時間算出部１４ｂに出力する（ステップＳ４）。
【００６５】
シリアルデータ生成部１３ａは、指定したスレーブ２０の７ビット・アドレスと、データ送信（書き込み）を示すデータ方向ビットとからなる第一バイトを生成し、双方向バッファ部１３ｂに出力する（ステップＳ５）。すなわち、シリアルデータ生成部１３ａは、シリアルデータ用クロックに基づき、シリアルデータの第一バイトによる通常のフレームを生成し、双方向バッファ部１３ｂに出力する。
【００６６】
双方向バッファ制御部１３ｃは、クロック信号線３２がＨレベルのときに、データ信号線３１をＨレベルからＬレベル（スタート・ビット）に変化させるように、双方向バッファ部１３ｂを制御して、データ転送の方向を送信方向にする（ステップＳ６）。
双方向バッファ部１３ｂは、スタート・ビットに続き、シリアルデータの第一バイトのうち７ビット・アドレスをデータ信号線３１に送出する（ステップＳ７）。
【００６７】
そして、双方向バッファ制御部１３ｃは、シリアルデータの第一バイトにおけるデータ方向ビットの立ち上がりエッジにおいて、データ転送の方向を送信方向から受信方向（＝ハイ・インピーダンスの状態）に切り替える（ステップＳ８）。なお、スレーブ２０は、プルアップ抵抗３３により、Ｈレベルが入力されることになる。また、このとき、応答時間算出部１４ｂは、サンプリングクロックにおける一のクロックの立ち上がりエッジを、送信方向から受信方向に切り替えるタイミングと一致させ、サンプリングクロックのクロックを積算し始める。
【００６８】
そして、アドレスを指定されたスレーブ２０は、スタート・ビットに基づき、データ転送の開始を認識し、７ビット・アドレスに基づき、自デバイスが指定されたことを認識する（ステップＳ９）。
【００６９】
また、アドレスを指定されたスレーブ２０は、スタート・ビットに対応するクロックに続く、８クロック目の立ち上がりエッジ（又は立ち下がりエッジ）に基づき、マスター１０に対してＡＣＫを返信する（ステップＳ１０）。
そして、マスター１０の双方向バッファ部１３ｂは、スレーブ２０からのＡＣＫを受信すると、応答信号受信部１４の応答時間算出部１４ｂにＡＣＫを出力する（ステップＳ１１）。
【００７０】
応答時間算出部１４ｂは、ＨレベルからＡＣＫ（Ｌレベル）への電位レベルの変化点を検出し、変化点を検出した時点におけるサンプリングクロックのクロック数の積算値を応答時間として算出する（ステップＳ１２）。
そして、応答時間算出部１４ｂは、算出した応答時間（サンプリングクロックのクロック数の積算値）を双方向バッファ制御部１３ｃに出力する（ステップＳ１３）。
【００７１】
双方向バッファ制御部１３ｃは、入力された応答時間を、この応答時間の対象デバイスであるスレーブの識別情報に対応付けて、応答時間格納部１３ｄに格納する（ステップＳ１４）。
そして、マスター１０は、クロック信号線３２を介して接続する全てのスレーブ２０に対して、擬似フレームを送信した否かを判断する（ステップＳ１５）。
【００７２】
ステップＳ１５において、全てのスレーブ２０に対して擬似フレームを送信していないと判断した場合に、マスター１０は、擬似フレームを送信していないスレーブ２０のうち、一のスレーブ２０のアドレスを指定し、前述したステップＳ５に戻る。
また、ステップＳ１５において、全てのスレーブ２０に対して擬似フレームを送信したと判断した場合には、処理を終了する。
【００７３】
つぎに、セットアップ終了後のマスター１０及びスレーブ２０間のシリアル通信について、図６を用いて説明する。なお、以下の説明においては、図２（ａ）に示す、マスター１０から一のスレーブ２０へのデータ送信（書き込み）を例に挙げて説明する。また、マスター１０及びスレーブ２０は、既に起動しており、マスター１０からクロック信号線３２を介して接続する全てのスレーブ２０に対して、共通のクロックを送信しているものとする。
【００７４】
マスター１０のシリアルデータ生成部１３ａは、シリアルタイミング生成部１１からのシリアルデータ用クロックに基づき、４バイト（スレーブ・アドレス、ワード・アドレス、データ１、データ２）のシリアルデータを生成する。そして、シリアルデータ生成部１３ａは、シリアルデータのうち、指定したスレーブ２０の７ビット・アドレスと、データ送信を示すデータ方向ビットとからなる第一バイトを、双方向バッファ部１３ｂに出力する（ステップＳ１０１）。
【００７５】
双方向バッファ制御部１３ｃは、指定したスレーブ２０に対応する応答時間（サンプリングクロックのクロック数の積算値）を、応答時間格納部１３ｄから参照する（ステップＳ１０２）。
【００７６】
また、双方向バッファ制御部１３ｃは、クロック信号線３２がＨレベルのときに、データ信号線３１をＨレベルからＬレベル（スタート・ビット）に変化させるように、双方向バッファ部１３ｂを制御して、データ転送の方向を送信方向にする（ステップＳ１０３）。
そして、双方向バッファ部１３ｂは、シリアルデータの第一バイトをデータ信号線３１に送出し始める（ステップＳ１０４）。
【００７７】
そして、双方向バッファ制御部１３ｃは、第一バイトの最下位ビットの立ち上がりエッジに、サンプリングクロックにおける一のクロックの立ち上がりエッジを一致させて、サンプリングクロックのクロック数を積算し始める（ステップＳ１０５）。
【００７８】
また、双方向バッファ制御部１３ｃは、第一バイトの最下位ビットの立ち下がりエッジがステップＳ１０２で参照した応答時間を超えないように、データ転送の方向を送信方向から受信方向に切り替える（ステップＳ１０６）。
【００７９】
そして、アドレスを指定されたスレーブ２０は、第一バイトの最下位ビットに対応するクロックの立ち上がりエッジ（又は立ち下がりエッジ）に基づき、マスター１０に対してＡＣＫを返信する（ステップＳ１０７）。
【００８０】
マスター１０の双方向バッファ部１３ｂは、スレーブ２０からのＡＣＫを受信すると、シリアルデータ生成部１３ａにＡＣＫを出力する（ステップＳ１０８）。
また、シリアルデータ生成部１３ａは、ＡＣＫの入力に基づき、次のバイトを双方向バッファ部１３ｂに出力し、前述したステップＳ１０４〜ステップＳ１０８（第一バイトを、第二バイト、第三バイト又は第四バイトに読み替える）を繰り返す。
【００８１】
そして、双方向バッファ制御部１３ｃは、クロック信号線３２がＨレベルのときに、データ信号線３１をＬレベルからＨレベル（ストップ・ビット）に変化させるように、双方向バッファ部１３ｂを制御して、データ信号線３１を開放する（ステップＳ１０９）。これにより、マスター１０は、一のスレーブ２０へのデータ送信（書き込み）を終了する。
【００８２】
以上のように、本実施形態に係るマスター１０は、フレーム生成部１３が、応答信号受信部１４による検出結果に基づき、シリアルデータの各バイトのフレームにおける、データ信号線３１に対するフレームの送出を完了するタイミングを調整する。これにより、本実施形態に係るマスター１０は、スレーブ２０による応答信号を返信するタイミングが許容範囲を満たしていない場合であっても、バスファイトを発生させるがことなく、デバイス内の回路の破壊を防止できるという作用効果を奏する。
【００８３】
特に、本実施形態に係るマスター１０は、電子機器１００による通常の運用を開始する前に、スレーブ２０に擬似フレームを送信し、スレーブ２０からの応答信号の応答時間を算出する。そして、電子機器１００による通常の運用において、マスター１０は、算出した応答時間に基づき、シリアルデータの各バイトの最下位ビットにおけるデータ信号線３１に対する送出時間を調整する。これにより、本実施形態に係るマスター１０は、スレーブ２０による応答信号を返信するタイミングが許容範囲を満たしていない場合であっても、バスファイトを一度も発生させるがことなく、デバイス内の回路の破壊を防止できるという作用効果を奏する。
【００８４】
また、本実施形態に係るマスター１０は、複数のスレーブ２０における応答信号の送信タイミングが異なる場合であっても、マスター１０の回路を変更することなく、各スレーブ２０による応答信号の送信タイミングに対応することができるという作用効果を奏する。
特に、マスター１０の回路を変更することなく、各スレーブ２０による応答信号の送信タイミングに対応することができるということは、マスター１０又はスレーブ２０の交換や回路の設計変更に伴う製造コストの増加を抑制できるという作用効果を奏する。
【００８５】
なお、本実施形態においては、各スレーブ２０に対して最初に送信するシリアルデータの第一バイトにおけるフレームで擬似フレームを生成しているが、各スレーブ２０に対して最初に送信するシリアルデータの第一バイトでなくてもよい。しかしながら、各スレーブ２０に対して最初に送信するシリアルデータの第一バイトで擬似フレームを生成することは、バスファイトを完全に防止することができるために好ましい。
【００８６】
また、本実施形態においては、擬似フレームを用いてＡＣＫの応答時間を算出しているが、通常のフレームを用いてＡＣＫの応答時間を算出してもよい。この場合には、応答時間の始点が、マスター１０が通常のフレームの最下位ビット（図３（ａ）であれば、BIT0）の立ち下がりエッジをデータ信号線３１に送出した時点である。しかしながら、擬似フレームを用いてＡＣＫの応答時間を算出することは、ＡＣＫの応答時間を算出するためのフレームに対しても、バスファイトを防止することができるために好ましい。
【００８７】
また、以上の説明においては、シリアルバス３０としてＩ２Ｃバスを例に挙げ、マスター１０及びスレーブ２０間のデータ転送について説明したが、シリアルバス３０はＩ２Ｃバスに限られるものではなく、例えば、ＣＰＵバスにも本発明を適用することができる。また、データ転送に用いるバスの種別は、シリアルバス３０に限られるものではなく、パラレルバスにも本発明を適用することができる。
【００８８】
（第２の実施形態）
図７において、本実施形態に係る電子機器１００は、データ信号線３１及びクロック信号線３２とは別に、マスター１０及び各スレーブ２０間を接続し、マスター１０から各スレーブ２０に対してパワーオンリセットの制御を可能にする制御信号線３４を備えている。
【００８９】
スレーブ２０は、外部からの制御信号に基づき、自身の動作を停止するディセーブル機能を有する電源部２０ａを備えている。
マスター１０は、応答時間算出部１４ｂにより算出される応答時間が予め設定された範囲外である場合に、該当するスレーブ２０を停止させる制御信号を、制御信号線３４を介して、該当するスレーブ２０の電源部２０ａに送信するスレーブ制御部１５を備えている。なお、スレーブ制御部１５は、予め設定された範囲としての閾値を保持している。
【００９０】
ここで、予め設定された範囲としては、例えば、フレーム生成部１３が擬似フレームを７ビットのフレームとして生成するのであれば、クロック生成部１２により生成されるクロックにおける一クロックの四分の一周期（Ｔ／４）より大きい範囲を設定する。これにより、応答時間が予め設定された範囲外である場合は、スレーブ２０が擬似フレームを含む第一バイトの最下位ビットに対応するクロックの立ち上がりエッジを認識せずにＡＣＫを返信していることを意味する。すなわち、スレーブ２０からの応答信号の応答時間が予め設定された範囲外である場合は、シリアルバス３０のインタフェースにおける規格を違反するスレーブ２０であることがわかる。
【００９１】
なお、予め設定された範囲としては、擬似フレームをｎビット（０＜＝ｎ＜８，ｎは自然数）のフレームとして生成するのであれば、（１＋４（７−ｎ））Ｔ／４（Ｔは一クロック分の周期）より大きい範囲を、予め設定された範囲として設定することになる。
【００９２】
また、予め設定された範囲としては、サンプリングクロックのクロック数によって設定してもよい。例えば、図４（ａ）に示すサンプリングクロックの３クロック目の立ち上がりエッジが、クロック生成部１２により生成されるクロックの立ち上がりエッジに一致しているのであれば、サンプリングクロックのクロック数が３個より多い範囲を設定する。
【００９３】
つぎに、本実施形態に係る電子機器１００におけるバス制御方法について、図８を用いて説明する。
まず、マスター１０の応答時間算出部１４ｂは、前述した第１の実施形態におけるステップＳ１２により算出した応答時間を、この応答時間の対象デバイスであるスレーブ２０の識別情報と共に、スレーブ制御部１５に出力する（ステップＳ２０１）。
【００９４】
スレーブ制御部１５は、予め設定された範囲である閾値と入力された応答時間とを比較して、応答時間が予め設定された範囲内であるか否かを判断する（ステップＳ２０２）。
ステップＳ２０２において、入力された応答時間が予め設定された範囲内であれば、処理を終了する。
【００９５】
また、ステップＳ２０２において、入力された応答時間が予め設定された範囲外であれば、制御信号線３４を介して、該当するスレーブ２０の電源部２０ａに制御信号を送信する（ステップＳ２０３）。
そして、制御信号を送信されたスレーブ２０は、電源部２０ａに対してディセーブル機能を発動させ、スレーブ２０の電源を落とし（ステップＳ２０４）、処理を終了する。
【００９６】
以上のように、本実施形態に係る電子機器１００においては、シリアルバス３０のインタフェースにおける規格違反のスレーブ２０を故障とみなして停止することで、規格違反のスレーブ２０による誤動作を事前に防止することができるという作用効果を奏する。
【００９７】
特に、規格違反のスレーブ２０は、マスター１０に返信するＡＣＫが、マスター１０からのシリアルデータの各バイトの最下位ビットより上位のビットに重畳する場合がある。このため、仮に、応答時間に基づき、シリアルデータの各バイトのフレームにおける、データ信号線３１に対するフレームの送出を完了するタイミングを調整した場合には、シリアルデータの各バイトの少なくとも最下位ビットが送出されない状態となる。すなわち、マスター１０は、規格違反のスレーブ２０に対して、８ビットからなる正しいデータを送信できないことになる。
【００９８】
［付記］  以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  双方向性を有するバスを介してシリアルデータをデバイスに送信し、当該シリアルデータの各バイトに対する当該デバイスからの応答信号を受信する送受信制御装置において、前記デバイスからの応答信号を検出する検出部と、前記検出部による検出結果に基づき、前記シリアルデータの各バイトのフレームにおける、前記バスに対するフレームの送出を完了するタイミングを調整するフレーム生成部と、を備える送受信制御装置。
【００９９】
（付記２）  プルアップ抵抗が接続された双方向性を有するバスを介してシリアルデータをデバイスに送信し、当該シリアルデータの各バイトに対する当該デバイスからの応答信号を受信する送受信制御装置において、前記デバイスからの応答信号の送信タイミングの基準となるクロックを生成し、前記バスのクロック信号線を介して、前記デバイスに当該クロックを送信するクロック生成部と、前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記デバイスからの応答信号を検出した時間を算出する応答時間算出部と、前記応答時間算出部により算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するフレーム生成部と、を備える送受信制御装置。
【０１００】
（付記３）  付記２に記載の送受信制御装置において、前記フレーム生成部が、前記シリアルデータの各バイトのフレームよりも短い擬似フレームを生成し、前記バスのデータ信号線を介して、前記デバイスに当該擬似フレームを送信し、前記応答時間算出部が、前記擬似フレームを前記データ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記デバイスからの応答信号を検出した時点までの時間を算出する送受信制御装置。
【０１０１】
（付記４）  前記付記２又は３に記載の送受信制御装置において、前記フレーム生成部が、前記シリアルデータを生成するシリアルデータ生成部と、前記バスのデータ信号線に対するデータ転送の方向を切り替える双方向バッファ部と、前記シリアルデータ生成部により生成され、前記双方向バッファ部から送信されるシリアルデータのうち、前記デバイスに対して最初に送信するシリアルデータの第一バイトにおける少なくとも最下位ビットで、前記双方向バッファ部を制御して前記データ転送の方向を受信方向にする双方向バッファ制御部と、を備え、前記双方向バッファ制御部が、前記応答時間算出部により算出した時間に基づき、前記双方向バッファ部から送信されるシリアルデータに対して、当該シリアルデータの各バイトの最下位ビットにおける、前記データ転送の方向を受信方向にするタイミングを調整する送受信制御装置。
【０１０２】
（付記５）  前記付記２乃至４のいずれかに記載の送受信制御装置において、前記クロック生成部により生成されるクロックのクロック周波数より高いクロック周波数を有するサンプリングクロックを生成するサンプリングクロック生成部を備え、前記応答時間算出部が、前記サンプリングクロック生成部により生成したサンプリングクロックに基づき、前記応答時間を算出する送受信制御装置。
【０１０３】
（付記６）  前記付記３に記載の送受信制御装置において、前記シリアルデータの第一バイトが、前記デバイスのアドレスを示す７ビット・アドレスと、当該デバイスに対するデータの送信又は要求を示すデータ方向ビットとに相当し、前記擬似フレームが、前記データ方向ビットを除く、前記７ビット・アドレスを含むフレームである送受信制御装置。
【０１０４】
（付記７）  データ転送を可能にするクロックを生成し、データ転送を開始及び終了する第１のデバイスと、当該第１のデバイスによりアドレスが指定される第２のデバイスと、当該第１のデバイス及び第２のデバイス間を接続するプルアップ抵抗が接続された双方向性を有するバスと、を備える電子機器において、前記第１のデバイスが、前記クロックを生成し、前記バスのクロック信号線を介して、前記第２のデバイスに当該クロックを送信するクロック生成部と、前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記第２のデバイスからの応答信号を検出した時間を算出する応答時間算出部と、前記応答時間算出部により算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するフレーム生成部と、を備える電子機器。
【０１０５】
（付記８）  付記７に記載の電子機器において、前記第１のデバイス及び第２のデバイス間を接続する制御信号線を備え、外部からの制御信号に基づき、自身の動作を停止するディセーブル機能を有する電源部を前記第２のデバイスが備え、前記応答時間算出部により算出される時間が予め設定された範囲外である場合に、該当する第２のデバイスを停止させる制御信号を、前記制御信号線を介して、当該第２のデバイスの電源部に送信するスレーブ制御部を前記第１のデバイスが備える電子機器。
【０１０６】
（付記９）  第１のデバイスが、データ転送を可能にするクロックを生成し、プルアップ抵抗が接続された双方向性を有するバスを介して、シリアルデータを第２のデバイスに送信し、第２のデバイスが、当該シリアルデータの各バイトに対する応答信号を前記第１のデバイスに返信するデータ送信方法において、前記第１のデバイスが、前記第２のデバイスからの応答信号の送信タイミングの基準となるクロックを生成し、前記バスのクロック信号線を介して、前記第２のデバイスに当該クロックを送信するクロック生成ステップと、前記第１のデバイスが、前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記第２のデバイスからの応答信号を検出した時間を算出する応答時間算出ステップと、前記第１のデバイスが、前記応答時間算出ステップにより算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するタイミング調整ステップと、を有するデータ送信方法。
【０１０７】
（付記１０）  プルアップ抵抗が接続された双方向性を有するバスを介してシリアルデータをデバイスに送信し、当該シリアルデータの各バイトに対する当該デバイスからの応答信号を受信する送受信制御装置のコンピュータを機能させる制御プログラムにおいて、コンピュータを、前記デバイスからの応答信号の送信タイミングの基準となるクロックを生成し、前記バスのクロック信号線を介して、前記デバイスに当該クロックを送信するクロック生成手段と、前記シリアルデータを前記バスのデータ信号線に送出後、前記クロックと、前記プルアップ抵抗による前記バスの状態とに基づいて生成される前記デバイスからの応答信号を検出した時間を算出する応答時間算出手段と、前記応答時間算出手段により算出した時間に基づき、前記シリアルデータの各バイトのフレームにおける、前記データ信号線に対するフレームの送出を完了するタイミングを調整するタイミング調整手段として機能させる制御プログラム。
【符号の説明】
【０１０８】
１０    マスター
１１    シリアルタイミング生成部
１２    クロック生成部
１３    フレーム生成部
１３ａ  シリアルデータ生成部
１３ｂ  双方向バッファ部
１３ｃ  双方向バッファ制御部
１３ｄ  応答時間格納部
１４    応答信号受信部
１４ａ  サンプリングクロック生成部
１４ｂ  応答時間算出部
１５    スレーブ制御部
２０    スレーブ
２０ａ  電源部
３０    シリアルバス
３１    データ信号線
３２    クロック信号線
３３    プルアップ抵抗
３４    制御信号線
１００  電子機器
【図１】
0005444911.tif 000002
【図２】
0005444911.tif 000003
【図３】
0005444911.tif 000004
【図４】
0005444911.tif 000005
【図５】
0005444911.tif 000006
【図６】
0005444911.tif 000007
【図７】
0005444911.tif 000008
【図８】
0005444911.tif 000009
【図９】
0005444911.tif 000010