(57)【要約】  本開示は、より確実に通信を行うことができるようにする通信装置、通信方法、プログラム、および、通信システムに関する。I3Cマスタは、I3Cスレーブから最大リード長および最大ライト長を受信する。そして、I3Cスレーブに対してデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が最大リード長および最大ライト長以下となるようにデータの送受信を制御するとともに、データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する。本技術は、例えば、バスＩＦに適用できる。
2018173796.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して通信を行う通信装置であって、
通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得する取得部と、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
を備える通信装置。
【請求項２】
前記送受信制御部は、前記最大転送長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大転送長以下に分割してデータ転送を行い、
前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を送信する
請求項１に記載の通信装置。
【請求項３】
前記第２の通信装置に書き込むデータを転送するライト転送を行うとき、
前記取得部は、前記第２の通信装置によるライト転送における前記最大転送長である最大ライト長を取得し、
前記送受信制御部は、前記最大ライト長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大ライト長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
請求項１に記載の通信装置。
【請求項４】
前記第２の通信装置から読み出したデータを転送するリード転送を行うとき、
前記取得部は、前記第２の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
請求項１に記載の通信装置。
【請求項５】
前記第２の通信装置から読み出したデータを転送するリード転送を行うとき、
前記取得部は、前記第２の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
前記送信部は、転送が要求されたデータ全体のデータ長を示す前記転送長情報を１回だけ送信する
請求項１に記載の通信装置。
【請求項６】
前記第２の通信装置は、
少なくとも前記転送長情報を正常に受信することができないエラーの発生を検出した場合、そのエラーの発生を上位層で処理を行う処理部に通知するエラー通知部を備え、
前記上位層では、通信のリスタートを指示するコマンドと前記データの書き込みを指示するコマンドとの組み合わせを受信するまで、または、通信の終了を指示するコマンドを受信するまで一切の通信を無視する
請求項１に記載の通信装置。
【請求項７】
バスを介して通信を行う通信方法であって、
通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得し、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
ステップを含む通信方法。
【請求項８】
バスを介して通信を行う通信装置のコンピュータに実行させるプログラムであって、
通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得し、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
ステップを含む通信処理をコンピュータに実行させるプログラム。
【請求項９】
バスを介した通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われる通信システムであって、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得する取得部と、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
を備える通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【０００２】
従来、各種のデバイスにおけるレジスタを制御するためのバスＩＦ（Interface）としてCCI（Camera Control Interface）が広く使用されており、CCIでは、物理層にI2C（Inter-Integrated Circuit）規格が採用されている。【０００３】
例えば、CCIでは、データ転送を開始する際に、システムコントローラから被制御デバイスに対し、データの読み出しまたは書き込みが行われる対象となるレジスタの先頭アドレス（Index）が予め通知される。その上で、システムコントローラは、１バイトのデータ転送を行う度に、所望のデータ量の読み出しまたは書き込みがレジスタに対して行われたか否かを判定する。そして、システムコントローラが、所望のデータ量の読み出しまたは書き込みがレジスタに対して行われたと判定した場合に、データ転送を終了する制御が行われる。【０００４】
例えば、特許文献１には、マスタデバイスが、スレーブデバイスのアドレスとライト指示とライト対象のレジスタアドレスとライトデータとをI2Cバスへシリアルに出力することにより、スレーブデバイスがレジスタに対するライトを行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−０１８３１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、CCIでは、物理層にI2C規格が採用されている。このため、伝送レートが最大１Mbpsと低速であることより、さらなる高速化を実現することが求められていた。そこで、次世代の規格として、伝送レートが最大37.5Mbpsと高速なI3C（Improved Inter Integrated Circuit）の規定が策定され、その改定が進められている。また、物理層にI3Cを使用した新たなCCIの検討も行われている。【０００７】
ところで、I3CのHDRモードにおいて、データ転送において転送するデータのデータ長（バイト数）を含んだフレーム構成を採用することを検討したとき、新たなCCIとI3Cとの間で競合が発生することが懸念され、通信を正常に行うことができなくなる恐れがある。【０００８】
本開示は、このような状況に鑑みてなされたものであり、より確実に通信を行うことができるようにするものである。
【課題を解決するための手段】
【０００９】
本開示の一側面の通信装置は、バスを介して通信を行う通信装置であって、通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、前記第１の通信装置は、前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得する取得部と、前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部とを備える。【００１０】
本開示の一側面の通信方法またはプログラムは、バスを介して通信を行う通信方法であって、通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、前記第１の通信装置は、前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得し、前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信するステップを含む。【００１１】
本開示の一側面の通信システムは、バスを介した通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われる通信システムであって、前記第１の通信装置は、前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得する取得部と、前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部とを備える。【００１２】
本開示の一側面においては、第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長が、第２の通信装置から取得され、第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が最大転送長以下となるようにデータの送受信が制御され、そのデータをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報が送信される。
【発明の効果】
【００１３】
本開示の一側面によれば、より確実に通信を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【図２】I3Cマスタを実装したシステムコントローラの構成例を示すブロック図である。
【図３】I3Cスレーブを実装した被制御デバイスの構成例を示すブロック図である。
【図４】DDRモードでのフォーマットを示す図である。
【図５】TSL/TSPモードでのフォーマットを示す図である。
【図６】I3Cマスタにおいて行われる処理を説明するフローチャートである。
【図７】DDRモードでデータを分割して転送するリード転送処理におけるフォーマットを示す図である。
【図８】TSL/TSPモードでデータを分割して転送するリード転送処理におけるフォーマットを示す図である。
【図９】システムコントローラにおいて実行されるデータ転送処理を説明するフローチャートである。
【図１０】DDRモードによるレジスタR/W転送処理を説明するフローチャートである。
【図１１】DDRリード転送処理を説明するフローチャートである。
【図１２】DDRモードでのHDRライト転送処理を説明するフローチャートである。
【図１３】DDRライト転送処理を説明するフローチャートである。
【図１４】TSL/TSPモードによるレジスタR/W転送処理を説明するフローチャートである。
【図１５】TSL/TSPリード転送処理を説明するフローチャートである。
【図１６】TSL/TSPリードでのHDRライト転送処理を説明するフローチャートである。
【図１７】TSL/TSPライト転送処理について説明するフローチャートである。
【図１８】DDRモードのときに被制御デバイスにおいて実行されるデータ転送処理を説明するフローチャートである。
【図１９】DDRリード転送処理を説明するフローチャートである。
【図２０】DDRライト転送処理を説明するフローチャートである。
【図２１】ライト処理を説明するフローチャートである。
【図２２】TSL/TSPモードのときに被制御デバイスにおいて実行されるデータ転送処理を説明するフローチャートである。
【図２３】TSL/TSPリード転送処理を説明するフローチャートである。
【図２４】TSL/TSPライト転送処理を説明するフローチャートである。
【図２５】ライト処理を説明するフローチャートである。
【図２６】I3CスレーブおよびCCIレイヤ処理部によるエラー対策について説明する図である。
【図２７】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１６】
＜バスＩＦの構成例＞
図１は、本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【００１７】
図１に示されているバスＩＦ１１は、I3Cマスタ１２と３台のI3Cスレーブ１３−１乃至１３−３とが、データ信号線１４−１およびクロック信号線１４−２を介して接続されて構成されており、I3Cの規格に準じた通信を行うことができる。
【００１８】
I3Cマスタ１２は、バスＩＦ１１における制御の主導権を有しており、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cスレーブ１３−１乃至１３−３と通信を行うことができる。
【００１９】
I3Cスレーブ１３−１乃至１３−３は、I3Cマスタ１２による制御に従って、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cマスタ１２と通信を行うことができる。なお、I3Cスレーブ１３−１乃至１３−３は、それぞれ同様に構成されており、以下、それらを区別する必要がない場合、単にI3Cスレーブ１３と称し、I3Cスレーブ１３を構成する各ブロックについても同様とする。
【００２０】
データ信号線１４−１およびクロック信号線１４−２は、I3Cマスタ１２およびI3Cスレーブ１３の間で信号を伝送するのに用いられる。例えば、バスＩＦ１１では、データ信号線１４−１を介して、１ビットずつ逐次的にシリアルデータ（SDA：Serial Data）が伝送され、クロック信号線１４−２を介して、所定の周波数のシリアルクロック（SCL：Serial Clock）が伝送される。
【００２１】
I3Cマスタ１２は、データ送信部２１、データ受信部２２、コマンド送信部２３、モード制御部２４、および送受信制御部２５を備えており、これらの各ブロックは、回路やモジュールなどにより構成される。
【００２２】
データ送信部２１は、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cスレーブ１３にデータを送信する。例えば、データ送信部２１は、クロック信号線１４−２を駆動することにより送信するシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行う（電位をＨレベルまたはＬレベルに切り替える）ことにより、I3Cスレーブ１３にデータを送信することができる。
【００２３】
データ受信部２２は、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cスレーブ１３から送信されてくるデータを受信する。例えば、データ受信部２２は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、I3Cスレーブ１３がデータ信号線１４−１に対する駆動を行うことによって、I3Cスレーブ１３から送信されてくるデータを受信することができる。
【００２４】
コマンド送信部２３は、データ送信部２１と同様に、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cスレーブ１３に対し、後述するような各種のコマンドを送信する。
【００２５】
モード制御部２４は、上位層（例えば、後述する図２のCCIレイヤ処理部４２）からの要求に従って、I3Cの規格で規定されている複数の転送モードのうち、いずれかを選択し、その選択した転送モードで通信を行うように送受信制御部２５に対する制御を行う。
【００２６】
例えば、バスＩＦ１１では、データの転送レートに応じて、通常の転送レートでデータ転送を行うSDR（Standard Data Rate）モードと、SDRモードよりも高い転送レートでデータ転送を行うHDR（High Data Rate）モードとが規定されている。また、HDRモードでは、DDR（Double Data Rate）モード、TSP(Ternary Symbol Pure-Bus)モード、および、TSL(Ternary Symbol Legacy-inclusive-Bus)モードの３つの転送モードが規格で定義されている。
【００２７】
従って、モード制御部２４は、SDRモード、DDRモード、TSPモード、および、TSLモードのいずれかを選択し、その選択した転送モードで通信を行うように送受信制御部２５に対する制御を行う。
【００２８】
送受信制御部２５は、モード制御部２４により選択された転送モードで、上位層からの要求に従って、データ送信部２１およびデータ受信部２２によるデータの送受信や、コマンド送信部２３によるコマンドの送信などを制御する。
【００２９】
このようにI3Cマスタ１２は構成されており、必要に応じて転送モードを切り替えて、例えば、レジスタに書き込ませるデータをデータ送信部２１により送信させたり、レジスタから読み出させるデータをデータ受信部２２により受信させたりすることができる。
【００３０】
I3Cスレーブ１３は、データ送信部３１、データ受信部３２、コマンド解釈部３３、モード制御部３４、および送受信制御部３５を備えており、これらの各ブロックは、回路やモジュールなどにより構成される。
【００３１】
データ送信部３１は、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cマスタ１２にデータを送信する。例えば、データ送信部３１は、I3Cマスタ１２により駆動されるクロック信号線１４−２のシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行うことにより、I3Cマスタ１２にデータを送信することができる。
【００３２】
データ受信部３２は、データ信号線１４−１およびクロック信号線１４−２を介して、I3Cマスタ１２から送信されてくるデータを受信する。例えば、データ受信部３２は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、I3Cマスタ１２がデータ信号線１４−１に対する駆動を行うことによって、I3Cマスタ１２から送信されてくるデータを受信することができる。
【００３３】
コマンド解釈部３３は、I3Cマスタ１２のコマンド送信部２３からデータ信号線１４−１およびクロック信号線１４−２を介して送信されてくるコマンドを受信し、そのコマンドを解釈して、コマンドによる指示に基づいた各種の処理を行う。例えば、コマンド解釈部３３は、HDRモードによる通信の開始を指示するコマンドを受信した場合、モード制御部３４に対してHDRモードによる通信が開始されることを通知する処理を行う。また、コマンド解釈部３３は、データの書き込みを指示するコマンドまたはデータの読み出しを指示するコマンドを受信した場合、送受信制御部３５に対して、データの書き込みまたは読み出しを行うことを通知する処理を行う。
【００３４】
モード制御部３４は、コマンド解釈部３３が受信したコマンドによる指示に従って、I3Cマスタ１２のモード制御部２４と同様に、SDRモード、DDRモード、TSPモード、および、TSLモードのいずれかを選択する。そして、モード制御部３４は、その選択した転送モードで通信を行うように送受信制御部２５に対する制御を行う。
【００３５】
送受信制御部３５は、モード制御部２４により選択された転送モードで、コマンド解釈部３３が受信したコマンドに従って、データ送信部３１およびデータ受信部３２によるデータの送受信を制御する。
【００３６】
このようにI3Cスレーブ１３は構成されており、I3Cマスタ１２による制御に応じて転送モードを切り替えて、例えば、レジスタから読み出すデータをデータ送信部３１により送信させたり、レジスタに書き込むデータをデータ受信部３２に受信させたりすることができる。
【００３７】
以上のように構成されるI3Cマスタ１２およびI3Cスレーブ１３は、それぞれシステムコントローラおよび被制御デバイスに実装され、それらが行う通信における物理層での処理を実行することができる。
【００３８】
図２は、図１のI3Cマスタ１２を実装したシステムコントローラの構成例を示すブロック図である。
【００３９】
図２に示すシステムコントローラ４１は、データ信号線１４−１およびクロック信号線１４−２に接続されているI3Cマスタ１２の他、CCIレイヤ処理部４２、CPU４３、および内部バス４４を備えて構成されている。また、図示するように、I3Cマスタ１２は、I3Cマスタ１２より上位の処理を行うCCIレイヤ処理部４２に接続され、CCIレイヤ処理部４２は、内部バス４４を介して、システムコントローラ４１全体の制御を行うCPU４３に接続される。
【００４０】
CCIレイヤ処理部４２は、レジスタアドレス管理部５１、転送長情報保持部５２、ライト転送終了制御部５３、無効データ処理部５４、および転送長情報送信部５５を備えて構成される。
【００４１】
レジスタアドレス管理部５１は、図１のバスＩＦ１１に接続されている各レジスタのアドレスを管理する。
【００４２】
転送長情報保持部５２は、I3Cスレーブ１３との間で行うデータ転送において転送するデータのデータ長（バイト数）を示す転送長情報（Length）を保持する。
【００４３】
ライト転送終了制御部５３は、I3Cマスタ１２からI3Cスレーブ１３に転送したデータをレジスタに書き込むライト転送を終了する際の制御を行う。
【００４４】
無効データ処理部５４は、例えば、データを転送する際の最低単位である１ワードが、２バイト（16bit）として規定されているHDRモードにおいて、奇数バイトのデータを転送する際に利用されるダミーデータを付加したり、削除したりする処理を行う。
【００４５】
転送長情報送信部５５は、転送長情報保持部５２に保持されている転送長情報を、I3Cマスタ１２を介してI3Cスレーブ１３に送信させる。
【００４６】
図３は、図１のI3Cスレーブ１３を実装した被制御デバイスの構成例を示すブロック図である。
【００４７】
図３に示す被制御デバイス６１は、データ信号線１４−１およびクロック信号線１４−２に接続されているI3Cスレーブ１３の他、CCIレイヤ処理部６２、デバイス制御部６３、および内部バス６４を備えて構成されている。また、図示するように、I3Cスレーブ１３は、I3Cスレーブ１３より上位の処理を行うCCIレイヤ処理部６２に接続され、CCIレイヤ処理部６２は、内部バス６４を介して、被制御デバイス６１全体の制御を行うデバイス制御部６３に接続される。
【００４８】
CCIレイヤ処理部６２は、レジスタアドレス管理部７１、レジスタR/W（Read/Write）制御部７２、リード転送終了制御部７３、無効データ処理部７４、および転送長情報保持部７５を備えて構成される。
【００４９】
レジスタアドレス管理部７１は、被制御デバイス６１に備えられているレジスタのアドレスを管理する。
【００５０】
レジスタR/W制御部７２は、I3Cマスタ１２からI3Cスレーブ１３に転送されてくるデータをレジスタに書き込む制御、および、I3Cスレーブ１３からI3Cマスタ１２に送信するためにレジスタからデータを読み出す制御を行う。
【００５１】
リード転送終了制御部７３は、レジスタから読み出したデータをI3Cスレーブ１３からI3Cマスタ１２に転送するリード転送を終了する際の制御を行う。
【００５２】
無効データ処理部７４は、HDRモードにおいて、奇数バイトのデータを転送する際に利用される無効データを付加したり、削除したりする処理を行う。
【００５３】
転送長情報保持部７５は、I3Cマスタ１２との間でデータ転送を行う際に、I3Cマスタ１２から送信されてくる転送長情報（Length）を保持する。
【００５４】
そして、デバイス制御部６３は、例えば、CCIレイヤ処理部６２のレジスタR/W制御部７２による制御に従って、I3Cスレーブ１３が受信したデータをステートレジスタへ書き込む制御を行う。また、デバイス制御部６３は、例えば、I3Cスレーブ１３により送信させるデータをステートレジスタから読み出す制御を行い、CCIレイヤ処理部６２のレジスタR/W制御部７２による制御に従って、そのデータが送信される。
【００５５】
以上のように構成されるシステムコントローラ４１および被制御デバイス６１では、例えば、レジスタへ書き込むデータをシステムコントローラ４１から被制御デバイス６１へ転送したり、レジスタから読み出したデータを被制御デバイス６１からシステムコントローラ４１へ転送したりすることができる。
【００５６】
＜データ転送の第１の処理例＞
図４乃至図６を参照して、バスＩＦ１１においてデータを転送する第１のデータ転送処理の一例について説明する。
【００５７】
図４は、転送モードがDDRモードである場合に、I3Cマスタ１２とI3Cスレーブ１３との間で送受信される信号のフォーマットを示している。図４の上側には、レジスタから読み出したデータをI3Cスレーブ１３からI3Cマスタ１２へ転送するリード転送処理を行う際のフォーマットが示されている。図４の下側には、レジスタに書き込むデータをI3Cマスタ１２からI3Cスレーブ１３へ転送するライト転送処理を行う際のフォーマットが示されている。
【００５８】
リード転送処理を行う場合、まず、I3Cマスタ１２は、HDRモードによる通信の開始またはリスタートを指示するコマンド（ENTHDR or HDR_Restart）を送信する。続いて、I3Cマスタ１２は、レジスタから読み出して転送するデータのデータ長をI3Cスレーブ１３に通知するための書き込みを行うことを指示するライトコマンド（DDR_Cmd(W)）を送信する。そして、I3Cマスタ１２は、ライトコマンドに続いて、データの読み出しを開始する先頭のアドレスを通知するインデックス（Index）、転送するデータのデータ長を示す転送長情報（Length）、および、CRC（Cyclic Redundancy Check）ワードを送信する。その後、I3Cマスタ１２は、HDRモードによる通信のリスタートを指示するコマンド（HDR_Restart）を送信し、データの読み出しを指示するリードコマンド（DDR_Cmd(R)）を送信する。
【００５９】
これに応じて、I3Cスレーブ１３は、インデックスに従ったアドレスの先頭から順に、DDRモードにおける１ワード（16bit）ごとにデータを転送し、転送長情報に従った読み込みバイト数のデータを送信し終わると、CRCワードを送信する。その後、I3Cマスタ１２は、HDRモードによる通信のリスタートまたは終了を指示するコマンド（HDR_Restart or HDR_Exit）を送信する。
【００６０】
ライト転送処理を行う場合、まず、I3Cマスタ１２は、HDRモードによる通信の開始またはリスタートを指示するコマンド（ENTHDR or HDR_Restart）を送信する。続いて、I3Cマスタ１２は、データの書き込みを指示する書き込みコマンド（DDR_Cmd(W)）、データの書き込みを開始する先頭のアドレスを通知するインデックス（Index）、および、転送するデータのデータ長を示す転送長情報（Length）を送信する。そして、I3Cマスタ１２は、インデックスに従ったアドレスの先頭から順に、DDRモードにおける１ワード（16bit）ごとにデータを転送し、転送長情報に従った書き込みバイト数のデータを送信し終わると、CRCワードを送信する。その後、I3Cマスタ１２は、HDRモードによる通信のリスタートまたは終了を指示するコマンド（HDR_Restart or HDR_Exit）を送信する。
【００６１】
図５は、転送モードがTSLモードまたはTSPモードである場合に、I3Cマスタ１２とI3Cスレーブ１３との間で送受信される信号のフォーマットを示している。図５の上側には、レジスタから読み出したデータをI3Cスレーブ１３からI3Cマスタ１２へ転送するリード転送処理を行う際のフォーマットが示されている。図５の下側には、レジスタに書き込むデータをI3Cマスタ１２からI3Cスレーブ１３へ転送するライト転送処理を行う際のフォーマットが示されている。
【００６２】
ここで、TSLモードまたはTSPモードは、図４に示したCRCワードの送信が行われない点でDDRモードとは異なっており、その他の点で共通するフォーマットとなっている。
【００６３】
このように、第１のデータ転送処理では、データを転送する際に、I3Cスレーブ１３からI3Cマスタ１２に転送長情報が送信される。そして、その転送長情報は、システムコントローラ４１側では、CCIレイヤ処理部４２の転送長情報保持部５２に保持され、被制御デバイス６１側では、CCIレイヤ処理部６２の転送長情報保持部７５に保持される。
【００６４】
これにより、例えば、転送が要求されたデータのデータ長が奇数バイトであった場合、１バイトのダミーデータを付加して転送しても、転送長情報に基づいて、そのダミーデータを認識して破棄することができる。これにより、データを転送する際の最低単位である１ワードが２バイト（16bit）であっても、奇数バイトのデータの転送を確実に行うことができる。
【００６５】
ところで、I3Cでは、１回あたりのリード転送において転送可能なバイト数の上限（以下、最大リード長（MRL：Max Read Length）と称する）が規定されている。同様に、I3Cでは、１回あたりのライト転送において転送可能な最大のバイト数の上限（以下、最大ライト長（MWL：Max Write Lengthと称する）が規定されている。通常、最大リード長および最大ライト長は、被制御デバイス６１それぞれの実装上の都合によって設計時点で固定値とする他、例えば、他とリソースをシェアしている場合などには可変とすることができる。
【００６６】
例えば、I3Cマスタ１２は、CCIレイヤ処理部４２からデータ転送が要求されたデータのデータ長が、最大リード長または最大ライト長より長い場合には、最大リード長または最大ライト長以下となるようにデータを分割して転送する制御を行う。
【００６７】
図６は、I3Cマスタ１２において行われる処理について説明するフローチャートである。
【００６８】
ステップＳ１１において、I3Cマスタ１２は、バスＩＦ１１に接続されている各I3Cスレーブ１３に対して、それぞれのI3Cスレーブ１３の最大リード長および最大ライト長の送信を指示するコマンド（GETMWL/MRL）を送信する。そして、I3Cマスタ１２は、そのコマンドに応じて、それぞれのI3Cスレーブ１３から送信されてくる最大リード長および最大ライト長を取得する。
【００６９】
ステップＳ１２において、I3Cマスタ１２は、ステップＳ１１で取得した各I3Cスレーブ１３の最大リード長または最大ライト長を調整する必要があるか否かを判定する。例えば、I3Cマスタ１２は、CCIレイヤ処理部４２からデータ転送が要求されることが想定されるデータのデータ長と、I3Cスレーブ１３の最大リード長および最大ライト長それぞれと比較する。そして、I3Cマスタ１２は、I3Cスレーブ１３の最大リード長および最大ライト長の少なくとも一方が、想定されるデータのデータ長以下である場合、想定されるデータのデータ長以下の最大リード長または最大ライト長を調整する必要があると判定する。また、I3Cマスタ１２は、例えば、I3Cマスタ１２自身の最大リード長および最大ライト長を、想定されるデータのデータ長として比較を行ってもよい。
【００７０】
ステップＳ１２において、I3Cマスタ１２が、I3Cスレーブ１３の最大リード長または最大ライト長を調整する必要があると判定した場合、処理はステップＳ１３に進む。
【００７１】
ステップＳ１３において、I3Cマスタ１２は、調整する必要があると判定されたI3Cスレーブ１３の最大リード長または最大ライト長を調整し、調整後の最大リード長および最大ライト長を設定するコマンド（SETMWL/MRL）をI3Cスレーブ１３に送信する。例えば、I3Cマスタ１２は、CCIレイヤ処理部４２からデータ転送が要求されることが想定されるデータのデータ長以下であるI3Cスレーブ１３の最大リード長または最大ライト長を、その想定されるデータのデータ長となるように調整する。また、I3Cマスタ１２は、例えば、I3Cマスタ１２自身の最大リード長および最大ライト長となるように、I3Cスレーブ１３の最大リード長または最大ライト長を調整してもよい。
【００７２】
ステップＳ１３の処理後、または、ステップＳ１２においてI3Cスレーブ１３の最大リード長または最大ライト長を調整する必要がないと判定された場合、処理はステップＳ１４に進む。
【００７３】
ステップＳ１４において、I3Cマスタ１２は、上位層であるCCIレイヤ処理部４２からデータ転送が要求されるのを待機し、データ転送の要求があると受信する。
【００７４】
ステップＳ１５において、I3Cマスタ１２は、ステップＳ１４でCCIレイヤ処理部４２からデータ転送が要求されたデータのデータ長が、データ転送を行う対象のI3Cスレーブ１３の最大リード長または最大ライト長より長いか否かを判定する。例えば、ステップＳ１３においてI3Cスレーブ１３の最大リード長または最大ライト長が調整されていた場合には、調整後の最大リード長または最大ライト長に基づいて判定が行われる。
【００７５】
ステップＳ１５において、I3Cマスタ１２が、データ転送が要求されたデータのデータ長が、データ転送を行う対象のI3Cスレーブ１３の最大リード長または最大ライト長より長いと判定した場合、処理はステップＳ１６に進む。ステップＳ１６において、I3Cマスタ１２は、データ転送が要求されたデータを、データ転送を行う対象のI3Cスレーブ１３の最大リード長または最大ライト長以下の長さに分割して、リード転送処理またはライト転送処理を行う。
【００７６】
一方、ステップＳ１５において、I3Cマスタ１２が、データ転送が要求されたデータのデータ長が、データ転送を行う対象のI3Cスレーブ１３の最大リード長または最大ライト長より長くない（最大リード長または最大ライト長以下の長さである）と判定した場合、処理はステップＳ１７に進む。ステップＳ１７において、I3Cマスタ１２は、データを分割することなく、通常のリード転送処理またはライト転送処理を行う。
【００７７】
ステップＳ１６またはＳ１７の処理後、処理はステップＳ１４に戻り、I3Cマスタ１２は、上位層であるCCIレイヤ処理部４２からデータ転送が要求されるのを待機して、以下、同様の処理が繰り返して行われる。
【００７８】
このように、I3Cマスタ１２は、I3Cスレーブ１３に設定されている最大リード長または最大ライト長より長いデータのデータ転送が要求された場合、そのデータを分割して転送することができる。
【００７９】
即ち、システムコントローラ４１では、I3Cマスタ１２が、I3Cスレーブ１３の最大リード長および最大ライト長を取得し、I3Cスレーブ１３とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が最大リード長および最大ライト長以下となるように、送受信制御部２５によりデータの送受信を制御することができる。そして、システムコントローラ４１では、CCIレイヤ処理部４２は、転送されるデータのデータ長を示す転送長情報に、最大リード長および最大ライト長以下のデータ長を設定して、I3Cマスタ１２は、データをデータ転送するのに先立って、その転送長情報をI3Cスレーブ１３に送信することができる。
【００８０】
例えば、ステップＳ１７において通常のリード転送処理またはライト転送処理を行うとき、I3Cスレーブ１３は、CCIレイヤ処理部４２において最大リード長および最大ライト長を超えないように設定されたデータ転送を行う。
【００８１】
また、ステップＳ１６において最大リード長または最大ライト長以下の長さに分割してリード転送処理またはライト転送処理を行うとき、I3Cスレーブ１３は、複数回に分けてデータを送信するようにデータ転送を行う。このとき、I3Cスレーブ１３は、例えば、データの転送ごとに転送長情報を送信することができる。または、後述するように、I3Cスレーブ１３は、リード転送処理を行う際に、転送が要求されたデータ全体のデータ長を示す転送長情報を１回だけ送信することができ、これによりオーバヘッドを低減して転送効率が低下することを回避することができる。
【００８２】
ところで、最大リード長および最大ライト長の送信を指示するコマンド（GETMRL,GETMWL）に対応していないI3Cスレーブ１３が存在することも想定される。または、I3Cマスタ１２が意図せずに、最大リード長または最大ライト長を超える長さを転送長情報に設定してしまうことも想定される。
【００８３】
そのため、最大ライト長より長いデータ長のデータを書き込むとき、I3Cスレーブ１３側のFIFO（First In, First Out）が溢れてしまう事態が発生する。
【００８４】
このような事態に対する第１の対策として、I3Cスレーブ１３は、FIFOが溢れるまではデータを通常に書き込み、FIFOが溢れた後のデータを全て破棄し、FIFOが溢れるエラーが発生したことを示すエラーフラグ（over MWL error）を立て、クリアするまでエラーフラグを保持する。そして、I3Cスレーブ１３は、次のHDR終了コマンドまたはHDRリスタートコマンド（HDR_Exit or HDR_Restart）を受信するまでは、一切の信号を無視する。
【００８５】
また、第２の対策として、I3Cスレーブ１３は、最大ライト長に達したら、I3Cスレーブ１３側から通信を中断する処理（Slave Abort）を行う。これに応じて、I3Cマスタ１２は、通信を止めて、HDR終了コマンド（HDR_Exit）により停止させたり、HDRリスタートコマンド（HDR_Restart）を発行して残りのデータの転送を継続したりすることができる。
【００８６】
また、第３の対策として、I3Cスレーブ１３は、転送長情報を受信した時点で、最大ライト長を超えていることを認識することができるので、その後、すぐにI3Cスレーブ１３側から通信を中断する処理（Slave Abort）を行う。これに応じて、I3Cマスタ１２は、通信を止めて、HDR終了コマンド（HDR_Exit）により停止させたり、HDRリスタートコマンド（HDR_Restart）を発行して残りのデータの転送を継続したりすることができる。
【００８７】
さらに、最大リード長より長いデータ長のデータを読み出すときにも対策を行う必要がある。
【００８８】
例えば、第１の対策として、I3Cスレーブ１３は、最後までデータ転送を行うことが困難であることより、リードコマンドを受信したらすぐに、NACKを返して通信を終了させる。そして、I3Cスレーブ１３は、最大リード長より長いデータ長のデータの読み出しが指示されたことによるエラーの発生を示すエラーフラグ(over MRL error)を立て、クリアするまではエラーフラグを保持する。
【００８９】
また、第２の対策として、I3Cスレーブ１３は、最大リード長の上限まで、とりあえずデータをI3Cマスタ１２に転送する。そして、最大リード長に達した時点でエラーフラグ（over MRL error）を立てて、DDRモードの場合は終了パケットであるCRCワードをI3Cマスタ１２に送り、TSP/TSLモードの場合は、データ信号線１４−１およびクロック信号線１４−２に対する駆動を停止して、バスを手放す。
【００９０】
一方、I3Cマスタ１２側では、DDRモードの場合、転送長情報に示すデータ長に達する前に、CRCワードを受理した段階で、I3Cスレーブ１３がエラー（over MRL error）となったことを認識する。そして、I3Cマスタ１２は、CRCエラーが発生していなければ、その時点までのデータを受理する。
【００９１】
また、I3Cマスタ１２側では、TSL/TSPモードの場合、転送長情報に示すデータ長に達する前に、データ信号線１４−１およびクロック信号線１４−２に対する駆動が行われない（トグルしない）状態を検出した段階で、I3Cスレーブ１３がエラー（over MRL error）となったことを認識する。
【００９２】
そして、I3Cマスタ１２は、DDRモードおよびTSL/TSPモードのどちらであっても、I3Cスレーブ１３のエラー（over MRL error）を認識した以降では、最大リード長を超えないデータ長でHDRリード処理を行うように、データの再送信を行う。
【００９３】
＜データ転送の第２の処理例＞
図７乃至図２５を参照して、バスＩＦ１１においてデータを転送する第２のデータ転送処理について、さらに詳細に説明する。
【００９４】
図７には、転送モードがDDRモードである場合に、最大リード長を超えるデータを分割して転送し、I3Cスレーブ１３からI3Cマスタ１２にデータを読み出すリード転送処理を行う際のフォーマットが示されている。なお、図７では、最大リード長が200バイトであるときに、300バイトのデータの転送が要求されたときの例が示されている。
【００９５】
まず、I3Cマスタ１２は、HDRモードによる通信の開始またはリスタートを指示するコマンド（ENTHDR or HDR_Restart）を送信する。続いて、I3Cマスタ１２は、レジスタから読み出して転送するデータのデータ長をI3Cスレーブ１３に通知するための書き込みを行うことを指示するライトコマンド（DDR_Cmd(W)）を送信する。
【００９６】
そして、I3Cマスタ１２は、ライトコマンドに続いて、データの読み出しを開始する先頭のアドレスを通知するインデックス（Index）、転送するデータのデータ長を示す転送長情報（Length）、および、CRCワードを送信する。その後、I3Cマスタ１２は、HDRモードによる通信のリスタートを指示するコマンド（HDR_Restart）を送信し、データの読み出しを指示するリードコマンド（DDR_Cmd(R)）を送信する。図７に示す例では、データの読み出しを開始する先頭のアドレスは０番地とされ、転送するデータのデータ長は300バイトとされており、最大リード長である200バイトごとに分割してデータが転送される。
【００９７】
これに応じて、I3Cスレーブ１３は、インデックスに従って、０番地のアドレスから順に、DDRモードにおける１ワード（16bit）ごとにデータを転送し、最大リード長となる200バイトのデータを送信し終わると、CRCワードを送信する。
【００９８】
その後、I3Cマスタ１２は、HDRモードによる通信のリスタートを指示するコマンド（HDR_Restart）を送信するのに続いて、データの読み出しを指示するリードコマンド（DDR_Cmd(R)）を送信する。
【００９９】
このとき、I3Cスレーブ１３は、転送長情報で示された300バイトのうち、200バイトのデータを既に送信していることより、その続きとなる先頭のアドレスは200番地であって、残りの100バイトを送信する必要があると認識することができる。従って、I3Cスレーブ１３は、200番地のアドレスから順に、DDRモードにおける１ワード（16bit）ごとにデータを転送し、100バイトのデータを送信し終わると、CRCワードを送信する。
【０１００】
これにより、転送が要求された300バイトのデータを読み出したことになり、I3Cマスタ１２は、HDRモードによる通信のリスタートまたは終了を指示するコマンド（HDR_Restart or HDR_Exit）を送信する。
【０１０１】
以上のように、I3Cマスタ１２は、リード転送処理を行う際に、上述の図４を参照して説明したように、I3Cスレーブ１３からデータを読み出す前に、インデックスおよび転送長情報を送信することにより、データの読み出しを開始する先頭のアドレスおよび転送するデータのデータ長をI3Cスレーブ１３に通知する。ここで、I3Cマスタ１２は、例えば、最大リード長を超えたデータを分割して読み出す場合には、最初に、全体のデータについてのインデックスおよび転送長情報を送信する。
【０１０２】
これより、I3Cマスタ１２が、連接して読み出されるデータごとにインデックスおよび転送長情報を送信しなくても、I3Cスレーブ１３において、データを送信するたびに送信残量を更新することで、連接して読み出されるデータのインデックスおよびデータ長を認識することができる。
【０１０３】
これにより、連接して転送されるデータごとにインデックスおよび転送長情報を送信しなくてもよく、その分だけオーバヘッドを削減することができ、データの転送効率を向上させることができる。
【０１０４】
図８には、転送モードがTSLモードまたはTSPモードである場合に、最大リード長を超えるデータを分割して転送し、I3Cスレーブ１３からI3Cマスタ１２にデータを読み出すリード転送処理を行う際のフォーマットが示されている。なお、図８では、図７と同様に、最大リード長が200バイトであるときに、300バイトのデータを転送する例が示されている。
【０１０５】
ここで、TSLモードまたはTSPモードは、図７に示したCRCワードの送信が行われない点でDDRモードとは異なっており、その他の点で共通するフォーマットとなっている。即ち、TSLモードまたはTSPモードにおいて、DDRモードと同様に、データの転送効率を向上させることができる。
【０１０６】
＜システムコントローラのデータ転送処理＞
図９乃至図１７に示すフローチャートを参照して、システムコントローラ４１において実行されるデータ転送処理について説明する。
【０１０７】
ステップＳ２１において、I3Cマスタ１２は、バスＩＦ１１に接続されている各I3Cスレーブ１３に基づいた初期設定プロセス（例えば、上述した図６のステップＳ１１乃至Ｓ１３の処理）を行う。
【０１０８】
ステップＳ２２において、CCIレイヤ処理部４２は、上位層であるCPU４３からデータ転送が要求されるのを待機し、データ転送の要求があると受信する。
【０１０９】
ステップＳ２３において、CCIレイヤ処理部４２は、ステップＳ２２で受信したデータ転送の要求に従って、被制御デバイス６１との間でデータ転送を行う際の転送モードが、DDRモード、TSL/TSPモード、およびSDRモードのいずれであるかを判定する。
【０１１０】
ステップＳ２３において、CCIレイヤ処理部４２が、転送モードがDDRモードであると判定した場合、処理はステップＳ２４に進み、図１０乃至図１３を参照して後述するようにDDRモードによるレジスタR/W転送処理が行われる。
【０１１１】
一方、ステップＳ２３において、CCIレイヤ処理部４２が、転送モードがTSL/TSPモードであると判定した場合、処理はステップＳ２５に進み、図１４乃至図１７を参照して後述するようにTSL/TSPモードによるレジスタR/W転送処理が行われる。
【０１１２】
一方、ステップＳ２３において、CCIレイヤ処理部４２が、転送モードがSDRモードであると判定した場合、処理はステップＳ２６に進み、SDRモードによりレジスタR/W転送が行われる。なお、SDRモードによりレジスタR/W転送が行われる場合には、上述したような転送長情報を送受信する必要はない。
【０１１３】
ステップＳ２４、ステップＳ２５、またはステップＳ２６の処理後、処理はステップＳ２２に戻って、システムコントローラ４１では、以下、同様の処理が繰り返して行われる。
【０１１４】
次に、図１０乃至図１３を参照して、システムコントローラ４１が実行するDDRモードによるレジスタR/W転送処理（図９のステップＳ２４）について説明する。
【０１１５】
図１０は、DDRモードによるレジスタR/W転送処理を説明するフローチャートである。
【０１１６】
ステップＳ３１において、I3Cマスタ１２では、コマンド送信部２３が、バスＩＦ１１に接続されている全てのI3Cスレーブ１３に対して、HDRモードによる通信を開始して、DDRモードで通信を行うHDR開始コマンド（ENTHDR0）を送信する。
【０１１７】
ステップＳ３２において、CCIレイヤ処理部４２は、図９のステップＳ２２で上位層であるCPU４３からデータ転送が要求されたデータのデータ長を、被制御デバイス６１との間で転送されるデータの残り示す転送残量に設定する。
【０１１８】
ステップＳ３３において、CCIレイヤ処理部４２は、CPU４３により要求されたデータの転送方向が、リード転送およびライト転送のどちらであるかを判定する。
【０１１９】
ステップＳ３３において、CCIレイヤ処理部４２が、データの転送方向がリード転送であると判定した場合、処理はステップＳ３４に進み、図１１を参照して後述するようにDDRリード転送処理が行われる。
【０１２０】
一方、ステップＳ３３において、CCIレイヤ処理部４２が、データの転送方向がライト転送であると判定した場合、処理はステップＳ３５に進み、図１３を参照して後述するようにDDRライト転送処理が行われる。
【０１２１】
ステップＳ３４のDDRリード転送処理、または、ステップＳ３５のDDRライト転送処理の処理後、処理はステップＳ３６に進む。
【０１２２】
ステップＳ３６において、CCIレイヤ処理部４２は、上位層であるCPU４３から次のHDRによるデータ転送が要求されたか否かを判定する。
【０１２３】
ステップＳ３６において、CCIレイヤ処理部４２が、次のHDRによるデータ転送が要求されたと判定した場合、処理はステップＳ３７に進む。ステップＳ３７において、I3Cマスタ１２では、コマンド送信部２３が、HDRモードによる通信のリスタートを指示するHDRリスタートコマンドを送信する。その後、処理はステップＳ３２に戻り、以下、同様の処理が繰り返して行われる。
【０１２４】
一方、ステップＳ３６において、CCIレイヤ処理部４２が、次のHDRによるデータ転送が要求されていないと判定した場合、処理はステップＳ３８に進む。
【０１２５】
ステップＳ３８において、I3Cマスタ１２では、コマンド送信部２３が、HDRモードによる通信の終了を指示するコマンドを送信した後、DDRモードによるレジスタR/W転送処理は終了され、処理は図９のステップＳ２２に戻る。
【０１２６】
図１１は、図１０のステップＳ３４において行われるDDRリード転送処理を説明するフローチャートである。
【０１２７】
ステップＳ４１において、CCIレイヤ処理部４２は、図１０のステップＳ３２で設定した転送残量を、被制御デバイス６１に送信するデータのデータ長を示す転送長情報に設定し、転送長情報保持部５２に保持させる。
【０１２８】
ステップＳ４２において、I3Cマスタ１２は、レジスタから読み出して転送するデータのデータ長をI3Cスレーブ１３に通知するために、転送長情報をI3Cスレーブ１３に送信するHDRライト転送処理（図１２参照）を行う。その処理後、I3Cマスタ１２では、コマンド送信部２３が、ステップＳ４３において、HDRリスタートコマンドを送信し、ステップＳ４４において、リードコマンドを送信する。
【０１２９】
ステップＳ４５において、I3Cマスタ１２は、データ信号線１４−１に対する駆動を停止し、I3Cスレーブ１３がデータ信号線１４−１に対する駆動を行って信号を送信してくると、データ受信部２２により信号の受信が開始される。
【０１３０】
ステップＳ４６において、I3Cマスタ１２は、I3Cスレーブ１３から送信されてくる信号のプリアンブルに基づく判定を行う。ステップＳ４６において、I3Cマスタ１２が、プリアンブルに基づいて、I3Cスレーブ１３からデータが送信されてくると判定した場合、処理はステップＳ４７に進む。
【０１３１】
ステップＳ４７において、I3Cマスタ１２では、データ受信部２２が、I3Cスレーブ１３から送信されてくるデータおよびパリティを受信する。
【０１３２】
ステップＳ４８において、I3Cマスタ１２は、ステップＳ４７で受信したパリティを用いて、ステップＳ４７で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cマスタ１２が、パリティエラーが発生していないと判定した場合、処理はステップＳ４９に進む。
【０１３３】
ステップＳ４９において、CCIレイヤ処理部４２は、現在の転送残量が、２バイト以上、１バイト、および０バイトのいずれであるかを判定する。
【０１３４】
ステップＳ４９において、CCIレイヤ処理部４２が、現在の転送残量が２バイト以上であると判定した場合、処理はステップＳ５０に進む。ステップＳ５０において、CCIレイヤ処理部４２は、レジスタから読み出されてI3Cスレーブ１３からI3Cマスタ１２へ転送された２バイトのデータを取得し、ステップＳ５１において、転送残量を２バイト繰り下げて更新する。
【０１３５】
一方、ステップＳ４９において、CCIレイヤ処理部４２が、転送残量が１バイトであると判定した場合、処理はステップＳ５２に進む。ステップＳ５２において、CCIレイヤ処理部４２では、I3Cスレーブ１３からI3Cマスタ１２へ転送されたデータの２バイトのうち、１バイトのダミーデータが無効データ処理部５４により破棄され、レジスタから読み出された１バイトのデータが取得される。その後、I3Cマスタ１２は、ステップＳ５３において、転送残量を１バイト繰り下げて更新する。
【０１３６】
一方、ステップＳ４９において、CCIレイヤ処理部４２が、転送残量が０バイトであると判定した場合、処理はステップＳ５４に進む。即ち、この場合、I3Cスレーブ１３から転送されてくるデータはない（０バイト）ことより、CCIプロトコル違反であるため、CCIレイヤ処理部４２は、I3Cスレーブ１３からI3Cマスタ１２へ転送された２バイトとも破棄する。
【０１３７】
ステップＳ５１、ステップＳ５３、またはステップＳ５４の処理後、処理はステップＳ５５に進み、I3Cマスタ１２は、I3Cスレーブ１３から送信されてくる信号のプリアンブルに基づく判定を行う。
【０１３８】
ステップＳ５５において、I3Cマスタ１２が、プリアンブルに基づいて、I3Cスレーブ１３からデータが送信されてくると判定した場合、処理はステップＳ４７に戻り、以下、同様の処理が繰り返して行われる。
【０１３９】
一方、ステップＳ５５において、I3Cマスタ１２が、プリアンブルに基づいて、CRCワードが送信されてくると判定した場合、処理はステップＳ５６に進み、データ受信部２２はCRCワードを受信する。例えば、I3Cスレーブ１３は、データ転送が要求された全てのデータを送信した場合、または、最大リード長のデータを送信した場合、CRCワードを送信する。
【０１４０】
ステップＳ５７において、I3Cマスタ１２は、ステップＳ５６でデータ受信部２２が受信したCRCワードにエラーが発生しているか否かを判定する。
【０１４１】
ステップＳ５７において、I3Cマスタ１２が、CRCワードにエラーが発生していないと判定した場合、処理はステップＳ５８に進み、データ信号線１４−１に対する駆動を再開する。
【０１４２】
ステップＳ５９において、I3Cマスタ１２は、例えば、ステップＳ５１またはＳ５３で転送残量が更新された後、現在の転送残量が０となったか否かを判定する。例えば、転送長情報により示されるデータ長のデータ、即ち、データ転送が要求された全てのデータが送信された場合には、現在の転送残量は０となっている。これに対し、例えば、転送長情報により示されるデータ長が最大リード長より長いことより、データを分割して転送する場合には、データ転送が要求された全てのデータが送信されていなくても、CRCワードが送信される場合があり、この場合には、現在の転送残量は０となっていない。
【０１４３】
ステップＳ５９において、I3Cマスタ１２が、現在の転送残量が０となっていないと判定した場合、処理はステップＳ４３に戻り、HDRリスタートコマンドの送信から処理が継続して行われる。
【０１４４】
一方、ステップＳ４６において、I3Cマスタ１２が、プリアンブルに基づいて、例えば、I3Cスレーブ１３が正常にデータやコマンドなどを受信することができなかったことを示すNACK応答が送信されてきたと判定した場合、または、フレーミングエラー（Framing Error）が発生したことを検出した場合、処理はステップＳ６０に進む。同様に、I3Cマスタ１２が、ステップＳ４８においてパリティエラーが発生していると判定した場合、ステップＳ５５においてフレーミングエラーであることを検出した場合、ステップＳ５７においてCRCワードにエラーが発生していると判定した場合、処理はステップＳ６０に進む。
【０１４５】
ステップＳ６０において、I3Cマスタ１２は、I3Cスレーブ１３に対してシリアルクロックを１９回送信する。
【０１４６】
そして、ステップＳ６１において、I3Cマスタ１２は、CCIレイヤ処理部４２に対してエラーを通知し、ステップＳ６２において、CCIレイヤ処理部４２は、上位層であるCPU４３に対してエラーを通知する。
【０１４７】
ステップＳ６２の処理後、または、ステップＳ５９において現在の転送残量が０となったと判定された場合、DDRリード転送処理は終了され、処理は図１０のステップＳ３６に進む。
【０１４８】
図１２は、図１１のステップＳ４２において行われるHDRライト転送処理を説明するフローチャートである。
【０１４９】
ステップＳ７１において、コマンド送信部２３がライトコマンドをI3Cスレーブ１３送信し、ステップＳ７２において、データ送信部２１がインデックスをI3Cスレーブ１３に送信する。
【０１５０】
ステップＳ７３において、データ送信部２１が、図９のステップＳ２２で受信したデータ転送の要求に従った転送長情報を、I3Cスレーブ１３に送信する。ステップＳ７４において、データ送信部２１が、CRCワードを送信した後、HDRライト転送処理は終了され、処理は図１１のステップＳ４３に進む。
【０１５１】
図１３は、図１０のステップＳ３５において行われるDDRライト転送処理について説明するフローチャートである。
【０１５２】
ステップＳ８１において、システムコントローラ４１のCCIレイヤ処理部４２は、図１０のステップＳ３２で設定されている転送残量のデータ長が、１回の転送で送信可能なデータ長より長いか否かを判定する。ここで、１回の転送で送信可能なデータ長は、書き込み先となるI3Cスレーブ１３の最大ライト長から、データの書き込みを開始する先頭のアドレスを通知するインデックと、転送するデータのデータ長とを減算した値（＝MWL−Index−Length）である。
【０１５３】
ステップＳ８１において、CCIレイヤ処理部４２が、転送残量のデータ長が、１回の転送で送信可能なデータ長より長いと判定した場合、処理はステップＳ８２に進む。ステップＳ８２において、CCIレイヤ処理部４２は、転送長情報に、１回の転送で送信可能なデータ長を設定して転送長情報保持部５２に保持させ、処理はステップＳ８４に進む。
【０１５４】
一方、ステップＳ８１において、CCIレイヤ処理部４２が、転送残量のデータ長が、１回の転送で送信可能なデータ長より長くない（短い）と判定した場合、処理はステップＳ８３に進む。ステップＳ８３において、CCIレイヤ処理部４２は、転送長情報に、転送残量を設定して転送長情報保持部５２に保持させ、処理はステップＳ８４に進む。
【０１５５】
ステップＳ８４において、コマンド送信部２３は、ライトコマンドをI3Cスレーブ１３に送信し、ステップＳ８５において、データ送信部２１はインデックスをI3Cスレーブ１３に送信する。その後、ステップＳ８６において、転送長情報送信部５５は、転送長情報保持部５２に保持されている転送長情報を、データ送信部２１によりI3Cスレーブ１３に送信させる。
【０１５６】
ステップＳ８７において、CCIレイヤ処理部４２は、現時点で転送長情報保持部５２に保持されている転送長情報を、レジスタに書き込みを行う残りのデータのデータ長として設定する。
【０１５７】
ステップＳ８８において、CCIレイヤ処理部４２は、現在の残りのデータ長が、２バイト以上、１バイト、および０バイトのいずれであるかを判定する。
【０１５８】
ステップＳ８８において、CCIレイヤ処理部４２が、現在の残りのデータ長が、２バイト以上であると判定した場合、処理はステップＳ８９に進む。ステップＳ８９において、CCIレイヤ処理部４２は、I3Cマスタ１２からI3Cスレーブ１３へ転送してレジスタに書き込む２バイトのデータをI3Cマスタ１２に供給し、ステップＳ９０において、残りのデータ長を２バイト繰り下げて更新する。
【０１５９】
一方、ステップＳ８８において、CCIレイヤ処理部４２が、現在の残りのデータ長が、１バイトであると判定した場合、処理はステップＳ９１に進む。ステップＳ９１において、CCIレイヤ処理部４２では、I3Cマスタ１２からI3Cスレーブ１３へ転送してレジスタに書き込む１バイトのデータがI3Cマスタ１２に供給されるとともに、無効データ処理部５４により１バイトのダミーデータが付加される。そして、CCIレイヤ処理部４２は、ステップＳ９２において、残りのデータ長を１バイト繰り下げて更新する。
【０１６０】
ステップＳ９０またはＳ９２の処理後、処理はステップＳ９３に進み、I3Cマスタ１２は、ステップＳ８９またはＳ９１においてCCIレイヤ処理部４２から供給されたデータをデータ送信部２１によりI3Cスレーブ１３に送信し、処理はステップＳ８８に戻る。
【０１６１】
一方、ステップＳ８８において、CCIレイヤ処理部４２が、現在の残りのデータ長が、０バイトであると判定した場合、処理はステップＳ９４に進む。即ち、この場合、図９のステップＳ２２で受信したデータ転送の要求に従った全てのデータの転送が完了しており、ステップＳ９４において、I3Cマスタ１２は、CRCワードを送信する。
【０１６２】
ステップＳ９５において、CCIレイヤ処理部４２は、現在の転送残量から転送長情報を減算して転送残量（＝転送残量−Length）を更新する。
【０１６３】
ステップＳ９６において、CCIレイヤ処理部４２は、更新された転送残量が０となったか否かを判定する。
【０１６４】
ステップＳ９６において、CCIレイヤ処理部４２が、更新された転送残量が０となっていないと判定した場合、処理はステップＳ９７に進む。ステップＳ９７において、I3Cマスタ１２は、HDRモードによる通信のリスタートを指示するコマンドを送信した後、処理はステップＳ８１に戻り、以下、同様の処理が繰り返される。
【０１６５】
一方、ステップＳ９６において、CCIレイヤ処理部４２が、更新された転送残量が０となったと判定した場合、DDRライト転送処理は終了し、処理は図１０のステップＳ３６に進む。
【０１６６】
図１０乃至図１３を参照して説明したように、システムコントローラ４１は、DDRモードによるレジスタR/W転送処理を行うことができる。
【０１６７】
次に、図１４乃至図１７を参照して、TSL/TSPモードによるレジスタR/W転送処理（図９のステップＳ２５）について説明する。
【０１６８】
図１４は、TSL/TSPモードによるレジスタR/W転送処理を説明するフローチャートである。
【０１６９】
ステップＳ１０１において、I3Cマスタ１２は、バスＩＦ１１に接続されている全てのI3Cスレーブ１３に対して、HDRモードによる通信を開始して、TSL/TSPモードで通信を行うHDR開始コマンド（ENTHDR1/2）を送信する。
【０１７０】
ステップＳ１０２において、CCIレイヤ処理部４２は、図９のステップＳ２２で上位層であるCPU４３からデータ転送が要求されたデータのデータ長を、被制御デバイス６１との間で転送されるデータの残り示す転送残量に設定する。
【０１７１】
ステップＳ１０３において、CCIレイヤ処理部４２は、CPU４３により要求されたデータの転送方向が、リード転送およびライト転送のどちらであるかを判定する。
【０１７２】
ステップＳ１０３において、CCIレイヤ処理部４２が、データの転送方向がリード転送であると判定した場合、処理はステップＳ１０４に進み、図１５を参照して後述するようにTSL/TSPリード転送処理が行われる。
【０１７３】
一方、ステップＳ１０３において、CCIレイヤ処理部４２が、データの転送方向がライト転送であると判定した場合、処理はステップＳ１０５に進み、図１７を参照して後述するようにTSL/TSPライト転送処理が行われる。
【０１７４】
ステップＳ１０４のTSL/TSPリード転送処理の処理後、または、ステップＳ１０５のTSL/TSPライト転送処理の処理後、処理はステップＳ１０６に進む。そして、ステップＳ１０６乃至Ｓ１０８において、図１０のステップＳ３６乃至Ｓ３８と同様の処理が行われた後、TSL/TSPモードによるレジスタR/W転送処理は終了され、処理は図９のステップＳ２２に戻る。
【０１７５】
図１５は、図１４のステップＳ１０４において行われるTSL/TSPリード転送処理を説明するフローチャートである。
【０１７６】
ステップＳ１１１乃至Ｓ１１４において、図１１のステップＳ４１乃至Ｓ４４と同様の処理が行われる。そして、ステップＳ１１５において、I3Cマスタ１２は、データ信号線１４−１およびクロック信号線１４−２に対する駆動を停止する。なお、TSL/TSPモードでは、ターンアラウンド（Turnaround）の手順が、DDRモードとは異なっている。
【０１７７】
ステップＳ１１６において、I3Cマスタ１２は、I3Cスレーブ１３から送信されてくるデータを受信したか否かを判定する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
【０１７８】
ステップＳ１１６において、I3Cスレーブ１３から送信されてくるデータを受信したと判定された場合、処理はステップＳ１１７に進み、データ受信部２２は、I3Cスレーブ１３から送信されてくるデータおよびパリティを受信する。
【０１７９】
ステップＳ１１８において、I3Cマスタ１２は、ステップＳ１１７でデータ受信部２２が受信したデータにエラーが含まれているか否かを判定し、エラーが含まれていないと判定した場合、処理はステップＳ１１９に進む。
【０１８０】
ステップＳ１１９乃至Ｓ１２４において、CCIレイヤ処理部４２は、図１１のステップＳ４９乃至Ｓ５４と同様の処理を行う。
【０１８１】
ステップＳ１２５において、I3Cマスタ１２は、I3Cスレーブ１３から送信されてくるデータを受信したか否かを判定し、データを受信したと判定した場合、処理はステップＳ１１７に戻って、以下、同様の処理が繰り返して行われる。
【０１８２】
一方、ステップＳ１２５において、データを受信していないと判定された場合、処理はステップＳ１２６に進み、I3Cマスタ１２は、データ信号線１４−１およびクロック信号線１４−２に対する駆動を再開する。なお、TSL/TSPモードでは、CRCワードの送信は行われないとともに、ターンアラウンドの手順がDDRモードとは異なる。
【０１８３】
一方、ステップＳ１１８において、I3Cマスタ１２が、ステップＳ１１７でデータ受信部２２が受信したデータにエラーが含まれていると判定した場合、処理はステップＳ１２８に進む。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル２×２以上を受信した場合、データにエラーが含まれていると判定される。
【０１８４】
ステップＳ１２８において、I3Cマスタ１２は、信号の変化が停止するのを待機し、信号の変化が停止すると、処理はステップＳ１２９に進む。即ち、TSL/TSPモードでは、エラーリカバリの手順がDDRモードとは異なる。
【０１８５】
また、ステップＳ１１６において、I3Cスレーブ１３から送信されてくるデータを受信していないと判定された場合、例えば、NACK応答（シンボル２×３回）を受信した場合、処理はステップＳ１２９に進む。
【０１８６】
ステップＳ１２９において、I3Cマスタ１２は、CCIレイヤ処理部４２に対してエラーを通知し、ステップＳ１３０において、CCIレイヤ処理部４２は、上位層であるCPU４３に対してエラーを通知する。
【０１８７】
ステップＳ１３０の処理後、または、ステップＳ１２７において現在の転送残量が０となったと判定された場合、TSL/TSPリード転送処理は終了され、処理は図１４のステップＳ１０６に進む。
【０１８８】
図１６は、図１５のステップＳ１１２において行われるHDRライト転送処理を説明するフローチャートである。
【０１８９】
ステップＳ１４１乃至Ｓ１４３において、図１２のステップＳ７１乃至７３と同様の処理が行われ、ライトコマンド、インデックス、および転送長情報が送信されてHDRライト転送処理が終了した後、処理は図１５のステップＳ１１３に進む。即ち、図１６に示すTSL/TSPリード転送処理におけるHDRライト転送処理は、CRCワードを送信しない点で、図１２を参照して上述したDDRリード転送処理におけるHDRライト転送処理と異なっている。
【０１９０】
図１７は、図１４のステップＳ１０５において行われるTSL/TSPライト転送処理について説明するフローチャートである。
【０１９１】
ステップＳ１５１乃至ステップＳ１６３において、図１３のステップＳ８１乃至ステップＳ９３と同様の処理が行われる。そして、ステップＳ１５８において、現在の残りのデータ長が０バイトであると判定された場合、即ち、図９のステップＳ２２で受信したデータ転送の要求に従った全てのデータの転送が完了すると、処理はステップＳ１６４に進む。
【０１９２】
ステップＳ１６４乃至Ｓ１６６において、図１３のステップＳ９５乃至Ｓ９７と同様の処理が行われた後、TSL/TSPライト転送処理は終了され、処理は図１４のステップＳ１０６に進む。即ち、図１７に示すTSL/TSPライト転送処理は、CRCワードを送信しない点で、図１３を参照して上述したDDRライト転送処理と異なっている。
【０１９３】
図１４乃至図１７を参照して説明したように、システムコントローラ４１は、TSL/TSPモードによるレジスタR/W転送処理を行うことができる。
【０１９４】
＜被制御デバイスのデータ転送処理＞
図１８乃至図２５を参照して、被制御デバイス６１において実行されるデータ転送処理について説明する。
【０１９５】
図１８は、システムコントローラ４１が、図１０を参照して上述したDDRモードによるレジスタR/W転送処理を実行するのに応じて被制御デバイス６１において行われるデータ転送処理を説明するフローチャートである。
【０１９６】
例えば、I3Cスレーブ１３が、I3Cマスタ１２から送信されてくる、DDRモードで通信を行うHDR開始コマンド（ENTHDR0）を受信すると処理が開始される。そして、ステップＳ１７１において、I3Cスレーブ１３は、I3Cマスタ１２がHDR開始コマンドに続けて送信してくる信号のプリアンブルに基づく判定を行う。ステップＳ１７１において、I3Cスレーブ１３が、プリアンブルに基づいて、I3Cマスタ１２からコマンドが送信されてくると判定した場合、処理はステップＳ１７２に進む。
【０１９７】
ステップＳ１７２において、I3Cスレーブ１３では、コマンド解釈部３３が、I3Cマスタ１２から送信されてくるコマンドおよびパリティを受信する。
【０１９８】
ステップＳ１７３において、コマンド解釈部３３は、ステップＳ１７２で受信したパリティを用いて、ステップＳ１７２で受信したコマンドにエラーが発生しているか否かを判定する。そして、コマンド解釈部３３が、パリティエラーが発生していないと判定した場合、処理はステップＳ１７４に進む。
【０１９９】
ステップＳ１７４において、コマンド解釈部３３は、ステップＳ１７２で受信したコマンドのコマンドコードが、リードコマンドおよびライトコマンドのどちらであるかを判定する。
【０２００】
ステップＳ１７４において、コマンド解釈部３３が、コマンドコードがリードコマンドであると判定した場合、処理はステップＳ１７５に進み、図１９を参照して後述するようにDDRリード転送処理が行われる。
【０２０１】
一方、ステップＳ１７４において、コマンド解釈部３３が、コマンドコードがライトコマンドであると判定した場合、処理はステップＳ１７６に進み、図２０を参照して後述するようにDDRライト転送処理が行われる。
【０２０２】
ステップＳ１７５のDDRリード転送処理、または、ステップＳ１７６のDDRライト転送処理の処理後、処理はステップＳ１７９に進む。
【０２０３】
一方、ステップＳ１７１において、プリアンブルに基づいて、フレーミングエラーが発生したことが検出された場合、または、ステップＳ１７３において、パリティエラーが発生していると判定された場合、処理はステップＳ１７７に進む。
【０２０４】
ステップＳ１７７において、I3Cスレーブ１３は、CCIレイヤ処理部６２に対してエラーを通知し、ステップＳ１７８において、CCIレイヤ処理部６２は、転送残量を０に設定した後、処理はステップＳ１７９に進む。
【０２０５】
ステップＳ１７９において、I3Cスレーブ１３は、コマンド解釈部３３がHDRモードによる通信のリスタートを指示するコマンドと、HDRモードによる通信の終了を指示するコマンドとの、どちらを受信したか否かを判定する。
【０２０６】
ステップＳ１７９において、コマンド解釈部３３が、HDRモードによる通信のリスタートを指示するコマンドを受信したと判定した場合、処理はステップＳ１７１に戻り、以下、同様の処理が繰り返して行われる。
【０２０７】
一方、ステップＳ１７９において、コマンド解釈部３３が、HDRモードによる通信の終了を指示するコマンドを受信したと判定した場合、被制御デバイス６１におけるデータ転送処理は終了される。
【０２０８】
図１９は、図１８のステップＳ１７５において行われるDDRリード転送処理を説明するフローチャートである。
【０２０９】
ステップＳ１８１において、CCIレイヤ処理部６２は、現在の転送残量が、０バイトより大きくかつ最大リード長未満、最大リード長以上、および０バイトのいずれであるかを判定する。
【０２１０】
ステップＳ１８１において、CCIレイヤ処理部６２が、現在の転送残量は０バイトより大きくかつ最大リード長未満であると判定した場合、処理はステップＳ１８２に進む。ステップＳ１８２において、CCIレイヤ処理部６２は、現在のリードコマンドに応じて送信するデータの送信残量に、現在の転送残量を設定する。
【０２１１】
一方、ステップＳ１８１において、CCIレイヤ処理部６２が、現在の転送残量は最大リード長以上であると判定した場合、処理はステップＳ１８３に進む。ステップＳ１８３において、CCIレイヤ処理部６２は、現在のリードコマンドに応じて送信するデータの送信残量に、最大リード長を設定する。
【０２１２】
ステップＳ１８２またはＳ１８３の処理後、処理はステップＳ１８４に進み、I3Cスレーブ１３は、データ信号線１４−１に対する駆動を開始する。
【０２１３】
ステップＳ１８５において、CCIレイヤ処理部６２は、現在のリードコマンドに応じて送信する送信残量が、２バイト以上、１バイト、および０バイトのいずれであるかを判定する。
【０２１４】
ステップＳ１８５において、CCIレイヤ処理部６２が、現在のリードコマンドに応じて送信するデータの送信残量が、２バイト以上であると判定した場合、処理はステップＳ１８６に進む。
【０２１５】
ステップＳ１８６において、CCIレイヤ処理部６２は、レジスタから２バイトのデータを読み出す。そして、CCIレイヤ処理部６２は、ステップＳ１８７において、ステップＳ１８６で読み出した２バイトのデータをI3Cスレーブ１３に供給する。ステップＳ１８８において、CCIレイヤ処理部６２は、インデックスを２バイト繰り上げ、現在のコマンドに応じて送信するデータの送信残量を２バイト繰り下げ、転送残量を２バイト繰り下げる更新を行う。
【０２１６】
一方、ステップＳ１８５において、CCIレイヤ処理部６２が、現在のリードコマンドに応じて送信するデータの送信残量が、１バイトであると判定した場合、処理はステップＳ１８９に進む。
【０２１７】
ステップＳ１８９において、CCIレイヤ処理部６２は、レジスタから１バイトのデータを読み出す。そして、CCIレイヤ処理部６２は、ステップＳ１９０において、ステップＳ１８９で読み出した１バイトのデータに１バイトのダミーデータを付加してI3Cスレーブ１３に供給する。ステップＳ１９１において、CCIレイヤ処理部６２は、インデックスを１バイト繰り上げ、現在のコマンドに応じて送信するデータの送信残量を１バイト繰り下げ、転送残量を１バイト繰り下げる更新を行う。
【０２１８】
ステップＳ１８８またはＳ１９１の処理後、処理はステップＳ１９２に進み、I3Cスレーブ１３は、ステップＳ１８７またはＳ１９０においてCCIレイヤ処理部６２から供給されたデータを、データ送信部３１によりI3Cマスタ１２に送信する。
【０２１９】
ステップＳ１９３において、I3Cスレーブ１３は、I3Cマスタ１２により通信を途中で遮断することを指示するマスタアボートが行われたか否かを判定する。
【０２２０】
ステップＳ１９３において、I3Cスレーブ１３が、マスタアボートが行われていないと判定した場合、処理はステップＳ１８５に戻り、以下、同様の処理が繰り返される。一方、ステップＳ１９３において、I3Cスレーブ１３が、マスタアボートが行われたと判定した場合、処理はステップＳ１９５に進む。
【０２２１】
一方、ステップＳ１８５において、CCIレイヤ処理部６２が、現在のリードコマンドに応じて送信する送信残量が、０バイトであると判定した場合、処理はステップＳ１９４に進む。ステップＳ１９４において、I3Cスレーブ１３は、CRCワードを送信して、処理はステップＳ１９５に進む。
【０２２２】
ステップＳ１９５において、I3Cスレーブ１３は、データ信号線１４−１に対する駆動を停止する。
【０２２３】
一方、ステップＳ１８１において、現在の転送残量が０バイトであると判定された場合、処理はステップＳ１９６に進む。即ち、この場合、CCIプロトコル違反であるため、ステップＳ１９６において、I3Cスレーブ１３はNACKをI3Cマスタ１２に送信する。
【０２２４】
ステップＳ１９５またはＳ１９６の処理後、DDRリード転送処理は終了され、処理は図１８のステップＳ１７９に進む。
【０２２５】
図２０は、図１８のステップＳ１７６において行われるDDRライト転送処理を説明するフローチャートである。
【０２２６】
ステップＳ２０１において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくる信号のプリアンブルに基づく判定を行う。
【０２２７】
ステップＳ２０１において、I3Cスレーブ１３が、プリアンブルに基づいて、I3Cマスタ１２からデータが送信されてくると判定した場合、処理はステップＳ２０２に進む。
【０２２８】
ステップＳ２０２において、I3Cスレーブ１３では、データ受信部３２が、I3Cマスタ１２から送信されてくるデータおよびパリティを受信する。
【０２２９】
ステップＳ２０３において、I3Cスレーブ１３は、ステップＳ２０２で受信したパリティを用いて、ステップＳ２０２で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cスレーブ１３が、パリティエラーが発生していないと判定した場合、処理はステップＳ２０４に進む。
【０２３０】
ステップＳ２０４において、CCIレイヤ処理部６２は、ステップＳ２０２でデータ受信部３２が受信したデータ、即ち、I3Cマスタ１２が送信したインデックスを取得する。
【０２３１】
ステップＳ２０５において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくる信号のプリアンブルに基づいて、データが送信されてくるのか、CRCワードが送信されてくるのか、エラーが発生しているのかいずれであるかを判定する。
【０２３２】
ステップＳ２０５において、I3Cスレーブ１３が、データが送信されてくると判定した場合、処理はステップＳ２０６に進む。
【０２３３】
ステップＳ２０６において、I3Cスレーブ１３では、データ受信部３２が、I3Cマスタ１２から送信されてくるデータおよびパリティを受信する。
【０２３４】
ステップＳ２０７において、I3Cスレーブ１３は、ステップＳ２０６で受信したパリティを用いて、ステップＳ２０６で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cスレーブ１３が、パリティエラーが発生していないと判定した場合、処理はステップＳ２０８に進む。
【０２３５】
ステップＳ２０８において、CCIレイヤ処理部６２は、ステップＳ２０６でデータ受信部３２が受信したデータ、即ち、I3Cマスタ１２が送信した転送長情報を、転送残量として取得する。
【０２３６】
ステップＳ２０９において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくる信号のプリアンブルに基づいて、データが送信されてくるのか、CRCワードが送信されてくるのか、エラーが発生しているのかいずれであるかを判定する。
【０２３７】
ステップＳ２０９において、I3Cスレーブ１３が、データが送信されてくると判定した場合、処理はステップＳ２１０に進んでライト処理（図２１）が行われる。
【０２３８】
一方、ステップＳ２０９において、I3Cスレーブ１３が、CRCワードが送信されてくると判定した場合、処理はステップＳ２１１に進み、データ受信部３２はCRCワードを受信する。
【０２３９】
ステップＳ２１２において、I3Cスレーブ１３は、ステップＳ２１１でデータ受信部３２が受信したCRCワードにエラーが発生しているか否かを判定する。ステップＳ２１２において、CRCワードにエラーが発生していないと判定された場合、処理はステップＳ２１３に進み、I3Cスレーブ１３は、ランダムリードであると判断する。
【０２４０】
一方、ステップＳ２０５において、I3Cスレーブ１３が、CRCワードが送信されてくると判定した場合、処理はステップＳ２１４に進み、データ受信部３２はCRCワードを受信する。
【０２４１】
ステップＳ２１５において、I3Cスレーブ１３は、ステップＳ２１４でデータ受信部３２が受信したCRCワードにエラーが発生しているか否かを判定する。ステップＳ２１５において、I3Cスレーブ１３が、CRCワードにエラーが発生していないと判定した場合、処理はステップＳ２１６に進む。即ち、この場合、CCIプロトコル違反であるため、ステップＳ２１６において、CCIレイヤ処理部６２は、転送残量を０に設定する。
【０２４２】
一方、ステップＳ２０１、ステップＳ２０５、またはステップＳ２０９において、プリアンブルに基づいてフレーミングエラーが発生したことが検出された場合、処理はステップＳ２１７に進む。同様に、ステップＳ２０３およびＳ２０７において、パリティエラーが発生していると判定された場合、処理はステップＳ２１７に進む。さらに、ステップＳ２１２またはＳ２１５において、CRCエラーが発生していると判定された場合、処理はステップＳ２１７に進む。
【０２４３】
ステップＳ２１７において、I3Cスレーブ１３は、CCIレイヤ処理部６２に対してエラーを通知し、ステップＳ２１８において、CCIレイヤ処理部６２は、転送残量を０に設定する。
【０２４４】
そして、ステップＳ２１０、ステップＳ２１３、ステップＳ２１６、またはステップＳ２１８の処理後、DDRライト転送処理は終了され、処理は図１８のステップＳ１７９に進む。
【０２４５】
図２１は、図２０のステップＳ２１０において行われるライト処理を説明するフローチャートである。
【０２４６】
ステップＳ２２１において、I3Cスレーブ１３では、データ受信部３２が、I3Cマスタ１２から送信されてくるデータおよびパリティを受信する。
【０２４７】
ステップＳ２２２において、I3Cスレーブ１３は、ステップＳ２２１で受信したパリティを用いて、ステップＳ２２１で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cスレーブ１３が、パリティエラーが発生していないと判定した場合、処理はステップＳ２２３に進み、CCIレイヤ処理部６２は、正常にデータを受信することができたことより、ライト転送を開始すると判断する。
【０２４８】
ステップＳ２２４において、CCIレイヤ処理部６２は、転送残量が、２バイト以上、１バイト、および０バイトのいずれであるかを判定する。
【０２４９】
ステップＳ２２４において、転送残量が２バイト以上であると判定された場合、処理はステップＳ２２５に進み、CCIレイヤ処理部６２は、I3Cスレーブ１３が受信した２バイトのデータを、レジスタに書き込むデータとして取得する。そして、CCIレイヤ処理部６２は、ステップＳ２２６において、その２バイトのデータのレジスタ書き込み処理を行い、ステップＳ２２７において、インデックスを２バイト繰り上げ、転送残量を２バイト繰り下げる更新を行う。
【０２５０】
一方、ステップＳ２２４において、転送残量が１バイトであると判定された場合、処理はステップＳ２２８に進む。ステップＳ２２８において、CCIレイヤ処理部６２では、I3Cスレーブ１３が受信した２バイトのデータのうち、ダミーデータの１バイトが無効データ処理部７４により破棄され、残りの１バイトがレジスタに書き込むデータとして取得される。そして、CCIレイヤ処理部６２は、ステップＳ２２９において、その１バイトのデータのレジスタ書き込み処理を行い、ステップＳ２３０において、インデックスを１バイト繰り上げ、転送残量を１バイト繰り下げる更新を行う。
【０２５１】
一方、ステップＳ２２４において、転送残量が０バイトであると判定された場合、処理はステップＳ２３１に進む。即ち、この場合、CCIプロトコル違反であるため、ステップＳ２３１において、CCIレイヤ処理部６２は、I3Cスレーブ１３が受信したデータを２バイトとも破棄する。
【０２５２】
ステップＳ２２７、ステップＳ２３０、またはステップＳ２３１の処理後、処理はステップＳ２３２に進む。ステップＳ２３２において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくる信号のプリアンブルに基づいて、データが送信されてくるのか、CRCワードが送信されてくるのか、エラーが発生しているのかいずれであるかを判定する。
【０２５３】
ステップＳ２３２において、I3Cスレーブ１３が、データが送信されてくると判定した場合、処理はステップＳ２２１に戻り、以下、同様の処理が繰り返される。
【０２５４】
一方、ステップＳ２３２において、I3Cスレーブ１３が、CRCワードが送信されてくると判定した場合、処理はステップＳ２３３に進み、データ受信部３２はCRCワードを受信する。
【０２５５】
ステップＳ２３４において、I3Cスレーブ１３は、ステップＳ２３３でデータ受信部３２が受信したCRCワードにエラーが発生しているか否かを判定する。ステップＳ２３４において、CRCワードにエラーが発生していないと判定された場合、処理はステップＳ２３５に進む。即ち、この場合、正常にCRCワードを受信することができたことより、CCIレイヤ処理部６２は、ステップＳ２３５において、ライト転送を終了すると判断し、ステップＳ２３６において、転送残量を０に設定する。
【０２５６】
一方、ステップＳ２２２において、パリティエラーが発生したと判定された場合、ステップＳ２３２において、プリアンブルに基づいてフレーミングエラーが発生したと判定された場合、または、ステップＳ２３４において、CRCエラーが発生していると判定された場合、処理はステップＳ２３７に進む。
【０２５７】
ステップＳ２３７において、I3Cスレーブ１３は、CCIレイヤ処理部６２に対してエラーを通知し、ステップＳ２３８において、CCIレイヤ処理部６２は、転送残量を０に設定する。
【０２５８】
そして、ステップＳ２３６またはＳ２３８の処理後、ライト処理は終了され、処理は図１８のステップＳ１７９に進む。
【０２５９】
図１８乃至図２１を参照して説明したように、被制御デバイス６１は、DDRモードによるレジスタR/W転送処理を行うことができる。
【０２６０】
図２２は、システムコントローラ４１が、図１４を参照して上述したTSL/TSPモードによるレジスタR/W転送処理を実行するのに応じて被制御デバイス６１において行われるデータ転送処理を説明するフローチャートである。
【０２６１】
例えば、I3Cスレーブ１３が、I3Cマスタ１２から送信されてくる、DDRモードで通信を行うHDR開始コマンド（ENTHDR1/2）を受信すると処理が開始される。そして、ステップＳ２４１において、I3Cスレーブ１３では、コマンド解釈部３３が、I3Cマスタ１２から送信されてくるコマンドおよびパリティを受信する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
【０２６２】
ステップＳ２４２において、コマンド解釈部３３は、ステップＳ１７２で受信したコマンドにエラーが発生しているか否かを判定する。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル２×２以上を受信した場合、コマンドにエラーが発生していると判定される。
【０２６３】
ステップＳ２４２において、コマンド解釈部３３が、エラーが発生していないと判定した場合、処理はステップＳ２４３に進む。
【０２６４】
ステップＳ２４３において、コマンド解釈部３３は、ステップＳ２４２で受信したコマンドのコマンドコードが、リードコマンドおよびライトコマンドのどちらであるかを判定する。
【０２６５】
ステップＳ２４３において、コマンド解釈部３３が、コマンドコードがリードコマンドであると判定した場合、処理はステップＳ２４４に進み、図２３を参照して後述するようにTSL/TSPリード転送処理が行われる。
【０２６６】
一方、ステップＳ２４３において、コマンド解釈部３３が、コマンドコードがライトコマンドであると判定した場合、処理はステップＳ２４５に進み、図２４を参照して後述するようにTSL/TSPライト転送処理が行われる。
【０２６７】
ステップＳ２４４のTSL/TSPリード転送処理、または、ステップＳ２４５のTSL/TSPライト転送処理の処理後、処理はステップＳ２４８に進む。
【０２６８】
一方、ステップＳ２４２において、コマンド解釈部３３が、エラーが発生していると判定した場合、処理はステップＳ２４６に進む。そして、ステップＳ２４６乃至Ｓ２４８において、図１８のステップＳ１７７乃至Ｓ１７９と同様の処理が行われる。
【０２６９】
図２３は、図２２のステップＳ２４４において行われるTSL/TSPリード転送処理を説明するフローチャートである。
【０２７０】
ステップＳ２５１乃至Ｓ２５３において、図１９のステップＳ１８１乃至Ｓ１８３と同様の処理が行われる。そして、ステップＳ２５２またはＳ２５３の処理後、ステップＳ２５４において、I3Cスレーブ１３は、データ信号線１４−１およびクロック信号線１４−２に対する駆動を開始する。
【０２７１】
その後、ステップＳ２５５乃至Ｓ２６２において、図１９のステップＳ１８５乃至Ｓ１９２と同様の処理が行われ、ステップＳ２５５で現在のリードコマンドに応じて送信するデータの送信残量が０バイトであると判定されるまで、処理が繰り返して行われる。なお、TSL/TSPモードでは、DDRモードと異なり、マスタアボートは行われない。
【０２７２】
ステップＳ２５５において、送信残量が０バイトであると判定されると、処理はステップＳ２６３に進み、I3Cスレーブ１３は、転送終了を示す信号（シンボル２×３回）を送信する。なお、TSL/TSPモードでは、DDRモードと異なり、CRCワードの送信は行われない。
【０２７３】
一方、ステップＳ２５１において、現在の転送残量が０バイトであると判定された場合、処理はステップＳ２６４に進む。即ち、この場合、CCIプロトコル違反であるため、I3Cスレーブ１３は、ステップＳ２６４において、データ信号線１４−１およびクロック信号線１４−２に対する駆動を開始し、ステップＳ２６５において、NACK（シンボル２×３回）を送信する。なお、TSL/TSPモードでは、NACKの形式がDDRモードとは異なっている。
【０２７４】
ステップＳ２６３またはＳ２６５の処理後、処理はステップＳ２６６に進む。ステップＳ６６において、I3Cスレーブ１３は、データ信号線１４−１およびクロック信号線１４−２に対する駆動を停止した後、TSL/TSPリード転送処理は終了され、処理は図２２のステップＳ２４８に進む。なお、TSL/TSPモードでは、ターンアラウンドの手順が、DDRモードとは異なっている。
【０２７５】
図２４は、図２２のステップＳ２４５において行われるTSL/TSPライト転送処理を説明するフローチャートである。
【０２７６】
ステップＳ２７１において、I3Cスレーブ１３では、データ受信部３２が、I3Cマスタ１２から送信されてくるデータおよびパリティを受信する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
【０２７７】
ステップＳ２７２において、I3Cスレーブ１３は、ステップＳ２７１で受信したデータにエラーが発生しているか否かを判定する。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル２×２以上を受信した場合、データにエラーが発生していると判定される。
【０２７８】
ステップＳ２７２において、データにエラーが発生していないと判定された場合、処理はステップＳ２７３に進み、CCIレイヤ処理部６２は、ステップＳ２７１でデータ受信部３２が受信したデータ、即ち、I3Cマスタ１２が送信したインデックスを取得する。
【０２７９】
ステップＳ２７４において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくるデータを受信したか否かを判定する。
【０２８０】
ステップＳ２７４において、I3Cマスタ１２から送信されてくるデータを受信したと判定された場合、処理はステップＳ２７５に進み、データ受信部３２は、I3Cマスタ１２から送信されてくるデータおよびパリティを受信する。
【０２８１】
ステップＳ２７６において、I3Cスレーブ１３は、ステップＳ２７２と同様に、ステップＳ２７５で受信したデータにエラーが発生しているか否かを判定し、エラーが発生していないと判定した場合、処理はステップＳ２７７に進む。
【０２８２】
ステップＳ２７７において、CCIレイヤ処理部６２は、ステップＳ２７５でデータ受信部３２が受信したデータ、即ち、I3Cマスタ１２が送信した転送長情報を、転送残量として取得する。
【０２８３】
ステップＳ２７８において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくるデータを受信したか否かを判定する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
【０２８４】
ステップＳ２７８において、I3Cスレーブ１３が、データを受信したと判定した場合、処理はステップＳ２７９に進んでライト処理（図２５）が行われる。
【０２８５】
一方、ステップＳ２７８において、データを受信していないと判定された場合、処理はステップＳ２８０に進み、I3Cスレーブ１３は、ランダムリードであると判断する。
【０２８６】
一方、ステップＳ２７４において、I3Cマスタ１２から送信されてくるデータを受信していないと判定された場合、処理はステップＳ２８１に進む。即ち、この場合、CCIプロトコル違反であるため、ステップＳ２８１において、CCIレイヤ処理部６２は、転送残量を０に設定する。なお、TSL/TSPモードでは、DDRモードと異なり、CRCワードの送信は行われない。
【０２８７】
一方、ステップＳ２７２またはＳ２７６において、受信したデータにエラーが発生していると判定された場合、処理はステップＳ２８２に進む。ステップＳ２８２において、I3Cスレーブ１３は、CCIレイヤ処理部６２に対してエラーを通知し、ステップＳ２８３において、CCIレイヤ処理部６２は、転送残量を０に設定する。
【０２８８】
そして、ステップＳ２７９、ステップＳ２８０、ステップＳ２８１、またはステップＳ２８３の処理後、TSL/TSPライト転送処理は終了され、処理は図２２のステップＳ２４８に進む。
【０２８９】
図２５は、図２４のステップＳ２７９において行われるライト処理を説明するフローチャートである。
【０２９０】
ステップＳ２９１において、I3Cスレーブ１３では、データ受信部３２が、I3Cマスタ１２から送信されてくるデータおよびパリティを受信する。
【０２９１】
ステップＳ２９２において、I3Cスレーブ１３は、ステップＳ２９１で受信したデータにエラーが発生しているか否かを判定する。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル２×２以上を受信した場合、データにエラーが発生していると判定される。
【０２９２】
ステップＳ２９２において、I3Cスレーブ１３が、データにエラーが発生していないと判定した場合、処理はステップＳ２９３に進み、CCIレイヤ処理部６２は、正常にデータを受信することができたことより、ライト転送を開始すると判断する。
【０２９３】
ステップＳ２９４乃至Ｓ３０１において、図２１のステップＳ２２４乃至Ｓ２３１と同様の処理が行われた後、ステップＳ３０２において、I3Cスレーブ１３は、I3Cマスタ１２から送信されてくるデータを受信したか否かを判定する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
【０２９４】
ステップＳ３０２において、I3Cスレーブ１３が、データを受信したと判定した場合、処理はステップＳ２９１に戻り、以下、同様の処理が繰り返して行われる。
【０２９５】
一方、ステップＳ３０２において、I3Cスレーブ１３が、データを受信していないと判定した場合、処理はステップＳ３０３に進む。そして、CCIレイヤ処理部６２は、データが送信されてこないことより、ステップＳ３０３において、ライト転送を終了すると判断し、ステップＳ３０４において、転送残量を０に設定する。
【０２９６】
一方、ステップＳ２９２において、I3Cスレーブ１３が、データにエラーが発生していると判定した場合、処理はステップＳ３０５に進む。ステップＳ３０５において、I3Cスレーブ１３は、CCIレイヤ処理部６２に対してエラーを通知し、ステップＳ３０６において、CCIレイヤ処理部６２は、転送残量を０に設定する。
【０２９７】
そして、ステップＳ３０４またはＳ３０６の処理後、ライト処理は終了され、処理は図２２のステップＳ２４８に進む。
【０２９８】
図２２乃至図２５を参照して説明したように、被制御デバイス６１は、TSL/TSPモードによるレジスタR/W転送処理を行うことができる。
【０２９９】
＜I3CスレーブおよびCCIレイヤ処理部によるエラー対策＞
図２６を参照して、I3CスレーブおよびCCIレイヤ処理部によるエラー対策について説明する。図２６には、TSL/TSPモードによるリード転送処理において連続的にデータを読み出す際にエラーが発生したときの処理の一例が示されている。
【０３００】
例えば、HDRモード（TSP/TSL/DDR）において、I3Cスレーブ１３が何らかのエラーを検出したとき、I3Cスレーブ１３は、HDR終了コマンド（HDR_Exit）またはHDRリスタートコマンド（HDR_Restart）を受信するまで、一切の通信を無視し、いずれか一方を検出すると、通信を復帰するように規定されている。
【０３０１】
ここで、図２６に示すように、例えば、アドレス設定用のライトコマンド（TSL/TSP_Cmd(W)）を受信してからリードコマンド（TSL/TSP_Cmd(R)）の直前のHDRリスタートコマンドを受信するまでの間にエラーが発生した場合の処理について説明する。即ち、このタイミングでエラーが発生すると、I3Cスレーブ１３は、エラーを検出してからHDRリスタートコマンドを受信するまでの間（無視区間）の処理を停止することになる。従って、この場合、インデックス（Index）および転送長情報（Length）は、CCIレイヤ処理部６２に通知されないことになる。
【０３０２】
そして、その後、I3Cスレーブ１３は、HDRリスタートコマンドを受信することにより通信を復帰し、HDRリスタートコマンドに続いて送信されるリードコマンドをCCIレイヤ処理部６２に転送する。しかしながら、CCIレイヤ処理部６２は、インデックスおよび転送長情報を把握していないため、どこからデータを読み出すべきかが分からない状態が発生してしまう。
【０３０３】
そこで、本実施の形態のI3Cスレーブ１３は、エラーを検出した場合には、そのエラーの検出をCCIレイヤ処理部６２に通知（例えば、図２０のステップＳ２１７や図２４のステップＳ２８２など）するように規定される。そして、このエラーの通知に応じて、CCIレイヤ処理部６２は、転送残量を０に設定（例えば、図２０のステップＳ２１８や図２４のステップＳ２８３など）するように規定される。
【０３０４】
これにより、CCIレイヤ処理部６２が、例えば、エラーの発生によってインデックスおよび転送長情報を認識できない場合にリードコマンドを受信しても、転送残量が０であると判定される結果、CCIプロトコル違反となる。従って、CCIレイヤ処理部６２は、I3Cスレーブ１３がエラーを検出した後、HDRリスタートコマンドおよびライトコマンドの組み合わせ（HDR_Restart＋TSL/TSP_Cmd(W)）を受信するまで、または、HDR終了コマンドを受信するまで、一切の通信を無視することができる。
【０３０５】
このように、CCIレイヤ処理部６２が、どこからデータを読み出すべきか分からない状態が発生してしまうことを回避して、I3Cスレーブ１３の規定と同様の動作を行うことができる。従って、I3Cスレーブ１３とCCIレイヤ処理部６２とのエラー対応にズレが発生することが回避され、確実にリード処理を実行することができる。
【０３０６】
従って、被制御デバイス６１は、エラーの可能性のあるデータをレジスタに書き込むことや、エラーの可能性があるデータをレジスタから読み出すことを回避することができ、そのようなエラーによって通信が不安定になることもなく、より確実に通信を行うことができる。
【０３０７】
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、１のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【０３０８】
また、上述した一連の処理（通信方法）は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【０３０９】
図２７は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０３１０】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３、およびEEPROM（Electronically Erasable and Programmable Read Only Memory）１０４は、バス１０５により相互に接続されている。バス１０５には、さらに、入出力インタフェース１０６が接続されており、入出力インタフェース１０６が外部に接続される。
【０３１１】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、ROM１０２およびEEPROM１０４に記憶されているプログラムを、バス１０５を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ（CPU１０１）が実行するプログラムは、ROM１０２に予め書き込んでおく他、入出力インタフェース１０６を介して外部からEEPROM１０４にインストールしたり、更新したりすることができる。
【０３１２】
＜構成の組み合わせ例＞
なお、本技術は以下のような構成も取ることができる。
（１）
バスを介して通信を行う通信装置であって、
通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得する取得部と、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
を備える通信装置。
（２）
前記送受信制御部は、前記最大転送長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大転送長以下に分割してデータ転送を行い、
前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を送信する
上記（１）に記載の通信装置。
（３）
前記第２の通信装置に書き込むデータを転送するライト転送を行うとき、
前記取得部は、前記第２の通信装置によるライト転送における前記最大転送長である最大ライト長を取得し、
前記送受信制御部は、前記最大ライト長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大ライト長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
上記（１）または（２）に記載の通信装置。
（４）
前記第２の通信装置から読み出したデータを転送するリード転送を行うとき、
前記取得部は、前記第２の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
上記（１）から（３）までのいずれかに記載の通信装置。
（５）
前記第２の通信装置から読み出したデータを転送するリード転送を行うとき、
前記取得部は、前記第２の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
前記送信部は、転送が要求されたデータ全体のデータ長を示す前記転送長情報を１回だけ送信する
上記（１）から（３）までのいずれかに記載の通信装置。
（６）
前記第２の通信装置は、
少なくとも前記転送長情報を正常に受信することができないエラーの発生を検出した場合、そのエラーの発生を上位層で処理を行う処理部に通知するエラー通知部を備え、
前記上位層では、通信のリスタートを指示するコマンドと前記データの書き込みを指示するコマンドとの組み合わせを受信するまで、または、通信の終了を指示するコマンドを受信するまで一切の通信を無視する
上記（１）から（５）までのいずれかに記載の通信装置。
（７）
バスを介して通信を行う通信方法であって、
通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得し、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
ステップを含む通信方法。
（８）
バスを介して通信を行う通信装置のコンピュータに実行させるプログラムであって、
通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われ、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得し、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
ステップを含む通信処理をコンピュータに実行させるプログラム。
（９）
バスを介した通信の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う少なくとも１台以上の第２の通信装置とにより通信が行われる通信システムであって、
前記第１の通信装置は、
前記第２の通信装置が１回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第２の通信装置から取得する取得部と、
前記第２の通信装置とデータ転送を行う際に、１回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
を備える通信システム。
【０３１３】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０３１４】
１１  バスＩＦ，  １２  I3Cマスタ，  １３  I3Cスレーブ，  １４−１  データ信号線，  １４−２  クロック信号線，  ２１  データ送信部，  ２２  データ受信部，  ２３  コマンド送信部，  ２４  モード制御部，  ２５  送受信制御部，  ３１  データ送信部，  ３２  データ受信部，  ３３  コマンド解釈部，  ３４  モード制御部，  ３５  受信制御部，  ４１  システムコントローラ，  ４２  CCIレイヤ処理部，  ４３  CPU，  ４４  内部バス，  ５１  レジスタアドレス管理部，  ５２  転送長情報保持部，  ５３  ライト転送終了制御部，  ５４  無効データ処理部，  ５５  転送長情報送信部，  ６１  被制御デバイス，  ６２  CCIレイヤ処理部，  ６３  デバイス制御部，  ６４  内部バス，  ７１  レジスタアドレス管理部，  ７２  レジスタR/W制御部，  ７３  リード転送終了制御部，  ７４  無効データ処理部，  ７５  転送長情報保持部
【図１】
2018173796.tif 000003
【図２】
2018173796.tif 000004
【図３】
2018173796.tif 000005
【図４】
2018173796.tif 000006
【図５】
2018173796.tif 000007
【図６】
2018173796.tif 000008
【図７】
2018173796.tif 000009
【図８】
2018173796.tif 000010
【図９】
2018173796.tif 000011
【図１０】
2018173796.tif 000012
【図１１】
2018173796.tif 000013
【図１２】
2018173796.tif 000014
【図１３】
2018173796.tif 000015
【図１４】
2018173796.tif 000016
【図１５】
2018173796.tif 000017
【図１６】
2018173796.tif 000018
【図１７】
2018173796.tif 000019
【図１８】
2018173796.tif 000020
【図１９】
2018173796.tif 000021
【図２０】
2018173796.tif 000022
【図２１】
2018173796.tif 000023
【図２２】
2018173796.tif 000024
【図２３】
2018173796.tif 000025
【図２４】
2018173796.tif 000026
【図２５】
2018173796.tif 000027
【図２６】
2018173796.tif 000028
【図２７】
2018173796.tif 000029
【国際調査報告】
2018173796.tif 000030
2018173796.tif 000031