(57)【要約】【課題】より確実に通信を行う。【解決手段】CCI（I3C SDR）処理部は、I3Cマスタからリードアクセスが要求されたときに、インデックスの状態を判定する。そして、エラー対応部は、インデックスの状態に基づいてエラーの発生を検出し、I3Cマスタにより少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、I3Cマスタから送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、I3Cスレーブ１３を制御する。本技術は、例えば、I3Cバスに適用できる。【選択図】図２
2019033331.tif 000002
【特許請求の範囲】
【請求項１】
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定する上位階層通信処理部と、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有する
通信装置。
【請求項２】
前記下位階層は、
前記主導的な通信装置から送信されてくるライトデータを受信して、前記上位階層へ送付するライト受信処理を行うライト受信処理部と、
前記ライトデータにおけるパリティエラーの発生を検出し、前記上位階層に前記パリティエラーの発生を通知する下位階層エラー対応部と
を有し、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記パリティエラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
請求項１に記載の通信装置。
【請求項３】
前記下位階層は、前記上位階層から受領したリードデータを、前記主導的な通信装置へ送信するリード受信処理を行うリード受信処理部をさらに備え、
前記下位階層エラー対応部は、前記リードデータの送信中に前記バス上の信号が一致していないことが検出されたことに基づいてエラーの発生を検出し、前記上位階層に前記エラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記エラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
請求項１に記載の通信装置。
【請求項４】
前記下位階層エラー対応部は、前記主導的な通信装置から送信されてくる通信のスタートまたはリスタートに続く１ワード目が、禁止アドレスであったことに基づいて、または、前記バスに接続されている全ての従属的な通信装置を対象としたリードコマンドであったことに基づいてエラーの発生を検出し、前記上位階層に前記エラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記エラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
請求項１に記載の通信装置。
【請求項５】
前記下位階層エラー対応部は、前記バスに接続されている１または複数の従属的な通信装置に対して一斉に送信されるコモンコマンドコードにおけるパリティエラーの発生を検出し、前記上位階層に前記パリティエラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記パリティエラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
請求項１に記載の通信装置。
【請求項６】
前記下位階層エラー対応部は、前記バスに接続されている１または複数の従属的な通信装置に対して一斉に送信されるコモンコマンドコードに従って行われる処理において発生したエラーに基づいて、前記上位階層に前記エラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記エラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
請求項１に記載の通信装置。
【請求項７】
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置が、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定することと、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信方法。
【請求項８】
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置のコンピュータに、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定することと、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信処理を実行させるためのプログラム。
【請求項９】
バスを介した通信を制御する主導的な通信装置であって、
制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にする上位階層通信処理部を有する
通信装置。
【請求項１０】
前記上位階層通信処理部は、前記下位階層によりエラーが検出された後に、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した後に、前記下位階層において通信を復帰した次の転送開始時において、カレントリードの使用を禁止する
請求項９に記載の通信装置。
【請求項１１】
バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える通主導的な信装置が、
前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にすること
を含む通信方法。
【請求項１２】
バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置置のコンピュータに、
前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にすること
を含む通信処理を実行させるためのプログラム。
【請求項１３】
バスを介した通信を制御する主導的な通信装置と、前記主導的な通信装置による制御に従って通信を行う従属的な通信装置が接続されて構成される通信システムであって、
前記従属的な通信装置は、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定する上位階層通信処理部と、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有し、
前記主導的な通信装置は、
前記従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にする上位階層通信処理部を有する
通信システム。
【請求項１４】
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定する上位階層通信処理部と、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有する
通信装置。
【請求項１５】
前記上位階層通信処理部は、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータの要求を判定し、
前記上位階層エラー対応部は、前記最大転送バイト数を超えるバイト数のリードデータの要求に基づいて、Ｔビットを用いて転送を強制的に終了する
請求項１４に記載の通信装置。
【請求項１６】
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置が、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定することと、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信方法。
【請求項１７】
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置のコンピュータに、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定することと、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信処理を実行させるためのプログラム。
【請求項１８】
バスを介した通信を制御する主導的な通信装置であって、
制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除する
通信装置。
【請求項１９】
バスを介した通信を制御する主導的な通信装置であって、かつ、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置であって、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除すること
を含む通信方法。
【請求項２０】
バスを介した通信を制御する主導的な通信装置であって、かつ、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置のコンピュータに、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除すること
を含む通信処理を実行させるためのプログラム。
【請求項２１】
バスを介した通信を制御する主導的な通信装置と、前記主導的な通信装置による制御に従って通信を行う従属的な通信装置が接続されて構成される通信システムであって、
前記従属的な通信装置は、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定する上位階層通信処理部と、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有し、
前記主導的な通信装置は、
制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除する
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【０００２】
従来、各種のデバイスにおけるレジスタを制御するためのバスＩＦ（Interface）としてCCI（Camera Control Interface）が広く使用されており、CCIでは、物理層にI2C（Inter-Integrated Circuit）規格が採用されている。また、近年、I2Cの高速化を実現することが求められており、次世代の規格としてI3C（Improved Inter Integrated Circuit）の規定が策定され、その改定が進められている。
【０００３】
例えば、I2CおよびI3Cは、バスＩＦを介した通信の主導権を有するマスタによる制御に従って、バスＩＦに接続されているスレーブと通信を行うことができるように構成される。さらに、I3Cでは、I2Cのデバイスと通信を行うことができるように互換性を維持する機能や、バスＩＦに途中からスレーブが参加することを可能とするホットジョインと称される機能、複数のマスタどうしでマスタ権限を譲渡する機能などが提供される。
【０００４】
また、特許文献１には、I3Cにおいて、通信のスタートやストップなどの誤検出に伴って通信不能となることを回避するようにエラー検出方法を定義することで、より確実に通信を行うことが可能な通信装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１７／０６１３３０号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、I2Cと、I2Cの上位層規格であるCCIは、規格上、エラーを検出する機能は定義されていなかったのに対し、I3Cの規格では、エラーの検出方法および復帰方法が定義されている。しかしながら、例えば、後述するようなインデックスのエラー、または、FIFO（First In, First Out）オーバーフローが発生した場合には、通信を正常に行うことができない状態になる恐れがある。そこで、それらのエラーに対する対策を施して、より確実に通信を行えるようにすることが求められている。
【０００７】
本開示は、このような状況に鑑みてなされたものであり、より確実に通信を行うことができるようにするものである。
【課題を解決するための手段】
【０００８】
本開示の第１の側面の通信装置は、バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、前記上位階層は、前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスが未定義の状態であるか否かを判定する上位階層通信処理部と、前記インデックスが未定義の状態であると判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令する上位階層エラー対応部とを有する。
【０００９】
本開示の第１の側面の通信方法は、バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置が、前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスが未定義の状態であるか否かを判定することと、前記インデックスが未定義の状態であると判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令することとを含む。
【００１０】
本開示の第１の側面のプログラムは、バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置のコンピュータに、前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスが未定義の状態であるか否かを判定することと、前記インデックスが未定義の状態であると判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令することとを含む通信処理を実行させる。
【００１１】
本開示の第１の側面においては、主導的な通信装置からリードアクセスが要求されたときに、インデックスが未定義の状態であるか否かが判定され、インデックスが未定義の状態であると判定されたことに基づいてエラーの発生が検出され、主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、下位階層に指令される。
【００１２】
本開示の第２の側面の通信装置は、バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、前記上位階層は、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にする上位階層通信処理部を有する。
【００１３】
本開示の第２の側面の通信方法は、バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える通主導的な信装置が、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にすることを含む。
【００１４】
本開示の第２の側面のプログラムは、バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置置のコンピュータに、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にすることを含む通信処理を実行させる。
【００１５】
本開示の第２の側面においては、下位階層によりエラーが検出された場合、または、従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスがクリアされ、未定義の状態にされる。
【００１６】
本開示の第３の側面の通信システムは、バスを介した通信を制御する主導的な通信装置と、前記通信装置による制御に従って通信を行う従属的な通信装置が接続されて構成される通信システムであって、前記従属的な通信装置は、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、前記上位階層は、前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスが未定義の状態であるか否かを判定する上位階層通信処理部と、前記インデックスが未定義の状態であると判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令する上位階層エラー対応部とを有し、前記主導的な通信装置は、前記従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、前記上位階層は、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にする上位階層通信処理部を有する。
【００１７】
本開示の第３の側面においては、主導的な通信装置からリードアクセスが要求されたときに、インデックスが未定義の状態であるか否かが判定され、インデックスが未定義の状態であると判定されたことに基づいてエラーの発生が検出され、主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、下位階層に指令される。一方、下位階層によりエラーが検出された場合、または、従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスがクリアされ、未定義の状態にされる。
【００１８】
本開示の第４の側面の通信装置は、バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、前記上位階層は、一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータを受信したか否かを判定する上位階層通信処理部と、前記最大転送バイト数を超えるバイト数のライトデータを受信したと判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令する上位階層エラー対応部とを有する。
【００１９】
本開示の第４の側面の通信方法は、バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置が、一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータを受信したか否かを判定することと、前記最大転送バイト数を超えるバイト数のライトデータを受信したと判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令することとを含む。
【００２０】
本開示の第４の側面のプログラムは、バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置のコンピュータに、一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータを受信したか否かを判定することと、前記最大転送バイト数を超えるバイト数のライトデータを受信したと判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令することとを含む通信処理を実行させる。
【００２１】
本開示の第４の側面においては、一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータを受信したか否かが判定され、最大転送バイト数を超えるバイト数のライトデータを受信したと判定されたことに基づいてエラーの発生が検出され、主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、下位階層に指令される。
【００２２】
本開示の第５の側面の通信装置は、バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除する。なお、主導的な通信装置の下位階層で上記エラーを検出ししてもよく、その場合には、インデックスをクリアするように主導的な通信装置の上位階層に下位階層が通知する。
【００２３】
本開示の第５の側面の通信方法は、バスを介した通信を制御する主導的な通信装置であって、かつ、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置であって、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除することを含む。
【００２４】
本開示の第５の側面のプログラムは、バスを介した通信を制御する主導的な通信装置であって、かつ、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置のコンピュータに、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除することを含む通信処理を実行させる。
【００２５】
本開示の第５の側面においては、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーが検出されるとともにインデックスがクリアされ、通信を終了させて、リスタートまたはストップを送信した後に、エラーが解除される。
【００２６】
本開示の第６の側面の通信システムは、バスを介した通信を制御する主導的な通信装置と、前記通信装置による制御に従って通信を行う従属的な通信装置が接続されて構成される通信システムであって、前記従属的な通信装置は、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、前記上位階層は、一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータを受信したか否かを判定する上位階層通信処理部と、前記最大転送バイト数を超えるバイト数のライトデータを受信したと判定されたことに基づいてエラーの発生を検出し、前記主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、前記下位階層に指令する上位階層エラー対応部とを有し、前記主導的な通信装置は、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備え、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除する。なお、主導的な通信装置の下位階層で上記エラーを検出ししてもよく、その場合には、インデックスをクリアするように主導的な通信装置の上位階層に下位階層が通知する。
【００２７】
本開示の第６の側面においては、一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータを受信したか否かが判定され、最大転送バイト数を超えるバイト数のライトデータを受信したと判定されたことに基づいてエラーの発生が検出され、主導的な通信装置により通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際には常にNACK応答を行うように、下位階層に指令される。一方、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーが検出されるとともにインデックスがクリアされ、通信を終了させて、リスタートまたはストップを送信した後に、エラーが解除される。なお、主導的な通信装置の下位階層で上記エラーを検出ししてもよく、その場合には、インデックスをクリアするように主導的な通信装置の上位階層に下位階層が通知する。
【発明の効果】
【００２８】
本開示の第１乃至第６の側面によれば、より確実に通信を行うことができる。
【００２９】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００３０】
【図１】本技術を適用したI3Cバスの一実施の形態の構成例を示すブロック図である。
【図２】I3Cバスを利用したI3C通信システムの構成例を示すブロック図である。
【図３】I3CスレーブのI3C（SDR）処理部の構成例を示すブロック図である。
【図４】I3CスレーブのI3C（DDR）処理部の構成例を示すブロック図である。
【図５】マスタ側のI3C階層で行われる通信処理を説明するフローチャートである。
【図６】マスタ側のCCI階層で行われる通信処理を説明するフローチャートである。
【図７】スレーブ側のCCI階層で行われるSDR通信処理を説明するフローチャートである。
【図８】スレーブ側のCCI階層で行われるCCI（I3C DDR）処理を説明するフローチャートである。
【図９】エラー対応処理を説明するフローチャートである。
【図１０】スレーブ側のI3C階層で行われるSDR通信処理を説明するフローチャートである。
【図１１】確認応答処理を説明するフローチャートである。
【図１２】ライト受信処理を説明するフローチャートである。
【図１３】CCC受信処理を説明するフローチャートである。
【図１４】リード受信処理を説明するフローチャートである。
【図１５】HDR開始処理を説明するフローチャートである。
【図１６】スレーブ側のI3C階層で行われるI3C（DDR）処理を説明するフローチャートである。
【図１７】DDRライト処理を説明するフローチャートである。
【図１８】DDRリード処理を説明するフローチャートである。
【図１９】DDR確認応答処理を説明するフローチャートである。
【図２０】フレーミングエラー対応処理を説明するフローチャートである。
【図２１】パリティエラー対応処理を説明するフローチャートである。
【図２２】CRCエラー対応処理を説明するフローチャートである。
【図２３】インデックスのエラーについて説明する図である。
【図２４】SS0エラーを検出方法および復帰方法の定義を示す図である。
【図２５】ランダムリード中にS2エラーが発生したときのSS0エラーの動作例を示す図である。
【図２６】ランダムライト中にS2エラーが発生したときのSS0エラーの動作例を示す図である。
【図２７】S0エラーを検出したときの動作例を示す図である。
【図２８】S1エラーが発生したときの動作例を示す図である。
【図２９】S3エラーが発生したときの動作例を示す図である。
【図３０】S4エラーが発生したときの動作例を示す図である。
【図３１】S5エラーが発生したときの動作例を示す図である。
【図３２】S6エラーが発生したときの動作例を示す図である。
【図３３】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００３１】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００３２】
＜バスＩＦの構成例＞
図１は、本技術を適用したI3Cバスの一実施の形態の構成例を示すブロック図である。
【００３３】
図１に示されているI3Cバス１１は、I3Cマスタ１２と３台のI3Cスレーブ１３−１乃至１３−３とが、シリアルデータSDAを伝送するデータ信号線１４と、シリアルクロックSCLを伝送するクロック信号線１５とを介して接続されて構成される。
【００３４】
I3Cマスタ１２は、I3Cバス１１における通信の主導権を有しており、データ信号線１４およびクロック信号線１５を介して、I3Cスレーブ１３−１乃至１３−３との通信を制御する。
【００３５】
I3Cスレーブ１３−１乃至１３−３は、I3Cマスタ１２による制御に従って、I3Cバス１１を介した通信を行うことができる。なお、以下適宜、I3Cスレーブ１３−１乃至１３−３それぞれを区別する必要がない場合、単に、I3Cスレーブ１３と称する。
【００３６】
このように構成されるI3Cバス１１では、I3Cの規格に準じた通信が行われる。例えば、I3Cバス１１では、データの転送レートに応じて、通常の転送レートでデータ転送を行うSDR（Single Data Rate）モードと、SDRモードよりも高い転送レートでデータ転送を行うHDR（High Data Rate）モードとが規定されている。また、HDRモードでは、DDR（Double Data Rate）モード、TSP（Ternary Symbol Pure-Bus）モード、および、TSL（Ternary Symbol Legacy-inclusive-Bus）モードの３つの転送モードが規格で定義されている。
【００３７】
また、I3Cでは、コモンコマンドコード（CCC ：Common Command Code）を利用して、１台または複数台のI3Cスレーブ１３に対して一斉にコマンドを送信したり、動的に割り当てられるアドレス（DAA：Dynamic Address Assignment）を設定したりすることができる。
【００３８】
＜I3C通信システムの構成例＞
図２は、I3Cバス１１を利用したI3C通信システム２１の構成例を示すブロック図である。
【００３９】
図２に示す構成では、I3Cマスタ１２は、マスタデバイス２２の物理層（下位階層）として組み込まれ、マスタデバイス２２は、I3Cマスタ１２に対して上位階層となるCCIマスタ１６を備える。また、I3Cマスタ１２およびCCIマスタ１６は、I3Cドライバ１７を介して接続されている。
【００４０】
また、I3Cスレーブ１３は、スレーブデバイス２３の物理層（下位階層）として組み込まれ、スレーブデバイス２３は、I3Cスレーブ１３に対して上位となるCCIスレーブ１８を備える。
【００４１】
I3Cマスタ１２は、エラーの発生が検出されたときに、そのエラーに対して対応する処理を行うエラー対応部３１、および、I3Cスレーブ１３において信号の確認応答処理を行った結果に応じて送信してくるACK応答またはNACK応答を確認するACK確認部３２を有している。
【００４２】
I3Cスレーブ１３は、I3Cの通信がSDRモードであるときの物理層での通信処理を行うI3C（SDR）処理部４１、I3Cの通信がDDRモードであるときの物理層での通信処理を行うI3C（DDR）処理部４２、および、エラーの発生が検出されたときに、そのエラーに対して対応する処理を行うエラー対応部４３を有している。
【００４３】
CCIマスタ１６は、I3Cの通信がSDRモードであるときの上位階層としての通信処理を行うCCI（I3C SDR）処理部５１、および、I3Cの通信がDDRモードであるときの上位階層としての通信処理を行うCCI（I3C DDR）処理部５２を有している。
【００４４】
CCIスレーブ１８は、I3Cの通信がSDRモードであるときの上位階層としての通信処理を行うCCI（I3C SDR）処理部６１、I3Cの通信がDDRモードであるときの上位階層としての通信処理を行うCCI（I3C DDR）処理部６２、および、エラーの発生が検出されたときに、そのエラーに対して対応する処理を行うエラー対応部６３を有している。
【００４５】
図３は、I3Cスレーブ１３のI3C（SDR）処理部４１の構成例を示すブロック図である。
【００４６】
図３に示すように、I3C（SDR）処理部４１は、確認応答処理部７１、ライト受信処理部７２、CCC受信処理部７３、リード受信処理部７４、HDR開始処理部７５、および、エラー対応部７６を備えて構成される。
【００４７】
確認応答処理部７１は、図１１のフローチャートを参照して説明するような確認応答処理を行う。例えば、確認応答処理部７１は、I3Cの規定に従ってI3C階層としてはACKでよいと判定しても、CCI階層からNACK応答するように指令があったときには、ACK応答を行わずに、NACK応答を行う。
【００４８】
ライト受信処理部７２は、図１２のフローチャートを参照して説明するようなライト受信処理を行う。例えば、ライト受信処理部７２は、I3Cマスタ１２から送信されてくるライトデータを受信し、CCIスレーブ１８へ送付する際に、そのライトデータにパリティエラーが発生しているか否かを判定する。そして、ライトデータにパリティエラーが発生していると判定された場合、エラー対応部７６によって、ライトデータにパリティエラーが発生していることを示すS2エラーが、CCIスレーブ１８に通知される。
【００４９】
CCC受信処理部７３は、図１３のフローチャートを参照して説明するようなCCC受信処理を行う。例えば、CCC受信処理部７３は、I3Cマスタ１２から送信されてくるCCCにパリティエラーが発生しているか否かを判定する。そして、CCCにパリティエラーが発生していると判定された場合、エラー対応部７６によって、CCCにパリティエラーが発生していることを示すS1エラーが、CCIスレーブ１８に通知される。
【００５０】
リード受信処理部７４は、図１４のフローチャートを参照して説明するようなリード受信処理を行う。例えば、リード受信処理部７４は、CCIスレーブ１８から受領したリードデータを、I3Cバス１１を介して送信しているときに、I3Cバス１１上の信号を監視して、その信号がリードデータと一致しているか否かを判定する。そして、I3Cバス１１上の信号がリードデータと一致していないと判定された場合、エラー対応部７６によって、I3Cバス１１上の信号がリードデータと一致していないことを示すS6エラーが、CCIスレーブ１８に通知される。
【００５１】
HDR開始処理部７５は、図１５のフローチャートを参照して説明するようなHDR開始処理を行う。例えば、HDR開始処理部７５は、I3Cマスタ１２から送信されてくるHDRモードの開始を指示するCCC（ENTHDRx）に従って、DDRモード、TSPモード、およびTSLモードの何れを開始するか判定し、その判定の結果を示すモードを、CCIスレーブ１８に通知する。
【００５２】
エラー対応部７６は、確認応答処理部７１、ライト受信処理部７２、CCC受信処理部７３、およびリード受信処理部７４が、それぞれ行う処理の中で、エラーの発生に対して対応する各種の処理を行う。
【００５３】
図４は、I3Cスレーブ１３のI3C（DDR）処理部４２の構成例を示すブロック図である。
【００５４】
図４に示すように、I3C（DDR）処理部４２は、DDRライト処理部８１、DDRリード処理部８２、DDR確認応答処理部８３、および、エラー対応部８４を備えて構成される。
【００５５】
DDRライト処理部８１は、図１７のフローチャートを参照して説明するようなDDRライト処理を行う。例えば、DDRライト処理部８１は、データの配置（フレーミング）や、パリティ、CRCワードなどに従って、I3Cマスタ１２から送信されてくるライトデータにエラーが発生しているか否かを判定する。
【００５６】
DDRリード処理部８２は、図１８のフローチャートを参照して説明するようなDDRリード処理を行う。例えば、DDRリード処理部８２は、CCIスレーブ１８から受領したリードデータをI3Cマスタ１２に送信する。
【００５７】
DDR確認応答処理部８３は、図１９のフローチャートを参照して説明するようなDDR確認応答処理を行う。例えば、DDR確認応答処理部８３は、I3Cの規定に従ってI3C階層としてはACKでよいと判定しても、CCI階層からNACK応答するように指令があったときには、ACK応答を行わずに、NACK応答を行う。
【００５８】
エラー対応部８４は、図２０のフローチャートを参照して説明するようなフレーミングエラー対応処理、図２１のフローチャートを参照して説明するようなパリティエラー対応処理、および、図２２のフローチャートを参照して説明するようなCRCエラー対応処理を行う。例えば、エラー対応部８４は、それぞれのエラーが発生したことをCCIスレーブ１８に通知する。
【００５９】
以上のようにI3C通信システム２１は構成されており、I3Cマスタ１２およびI3Cスレーブ１３がI3Cバス１１を介して通信を行い、I3Cマスタ１２は主導的に通信を制御し、I3Cスレーブ１３はI3Cマスタ１２による制御に従って従属的に通信を行う。また、マスタデバイス２２では、CCIマスタ１６が上位層とし、I3Cマスタ１２が下位層として通信処理を行う。同様に、スレーブデバイス２３では、CCIスレーブ１８が上位層とし、I3Cスレーブ１３が下位層として通信処理を行う。
【００６０】
なお、例えば、CCIマスタ１６が有するCCI（I3C SDR）処理部５１およびCCI（I3C DDR）処理部５２は、ソフトウエアによって実装され、I3Cマスタ１２が有するエラー対応部３１およびACK確認部３２は、半導体回路のようなハードウエアで実装される。同様に、CCIスレーブ１８が有するCCI（I3C SDR）処理部６１、CCI（I3C DDR）処理部６２、およびエラー対応部６３は、ソフトウエアによって実装され、I3Cスレーブ１３が有するI3C（SDR）処理部４１、I3C（DDR）処理部４２、およびエラー対応部４３は、半導体回路のようなハードウエアで実装される。もちろん、このような実装方法が考えられるが必ずしもこれに限定されることはなく、その他の実装方法を採用してもよい。
【００６１】
＜I3Cバスの通信処理＞
図５乃至図２２を参照して、I3C通信システム２１で行われる通信処理の一例について説明する。
【００６２】
図５は、I3Cマスタ１２によりマスタ側のI3C階層で行われる通信処理を説明するフローチャートである。
【００６３】
例えば、マスタデバイス２２に電力が供給されて、I3Cマスタ１２が起動すると処理が開始され、ステップＳ１１において、I3Cマスタ１２は、CCIマスタ１６からの指示に応じて、I3Cスレーブ１３との通信をSDRモードおよびDDRモードのどちらで行うかを判定する。
【００６４】
ステップＳ１１において、SDRモードで通信を行うと判定された場合、処理はステップＳ１２に進み、I3Cマスタ１２は、I3Cスレーブ１３とSDRモードで通常の通信を行うSDR通常処理を行う。例えば、I3Cマスタ１２は、エラー対応部３１がエラーを検出するまで、ACK確認部３２がNACK応答を受信するまで、または、通信が終了するまでSDR通常処理を行う。そして、SDR通常処理が終了したとき、処理はステップＳ１３に進む。
【００６５】
ステップＳ１３において、I3Cマスタ１２は、ステップＳ１２のSDR通常処理を終了したのは、通信終了によるものなのか、エラー検出またはNACK受信によるものなのかを判定する。
【００６６】
ステップＳ１３において、SDR通常処理を終了したのは通信終了によるものであると判定された場合、処理はステップＳ１２に戻り、I3Cマスタ１２は、SDR通常処理による通信を継続して行う。
【００６７】
一方、ステップＳ１３において、SDR通常処理を終了したのはエラー検出またはNACK受信によるものであると判定された場合、処理はステップＳ１４に進み、I3Cマスタ１２は、エラー検出またはNACK受信があったことをI3Cドライバ１７に通知する。
【００６８】
ステップＳ１５において、I3Cドライバ１７は、エラー検出またはNACK受信があったことを、CCIマスタ１６のCCI（I3C SDR）処理部５１に通知する。そして、ステップＳ１６において、I3Cドライバ１７は、I3C規格が定める復帰方法に従って、復帰処理を実施するようにI3Cマスタ１２に対する指令を行う。なお、ステップＳ１５およびＳ１６の処理はソフトウエアによる処理が可能である。
【００６９】
ステップＳ１７において、I3Cマスタ１２は、ステップＳ１６でのI3Cドライバ１７からの指令に従って復帰処理を実行した後、処理はステップＳ１２に戻り、以下、同様の処理が繰り返して行われる。例えば、I3Cマスタ１２のエラー対応部３１は、マスタアボートを送信し、ストップまたはリスタートを送信した後、エラーを解除する。これにより、I3Cスレーブ１３をエラーから復帰させる。
【００７０】
一方、ステップＳ１１において、DDRモードで通信を行うと判定された場合、処理はステップＳ１８に進み、I3Cマスタ１２は、I3Cスレーブ１３とDDRモードで通常の通信を行うDDR通常処理を行う。例えば、I3Cマスタ１２は、エラー対応部３１がエラーを検出するまで、ACK確認部３２がNACK応答を受信するまで、または、通信が終了するまでDDR通常処理を行う。そして、DDR通常処理が終了したとき、処理はステップＳ１９に進む。
【００７１】
ステップＳ１９において、I3Cマスタ１２は、ステップＳ１８のDDR通常処理を終了したのは、通信終了によるものなのか、エラー検出またはNACK受信によるものなのかを判定する。
【００７２】
ステップＳ１９において、DDR通常処理を終了したのは通信終了によるものであると判定された場合、処理はステップＳ１８に戻り、I3Cマスタ１２は、DDR通常処理による通信を継続して行う。
【００７３】
一方、ステップＳ１９において、DDR通常処理を終了したのはエラー検出またはNACK受信によるものであると判定された場合、処理はステップＳ２０に進み、I3Cマスタ１２は、エラー検出またはNACK受信があったことをI3Cドライバ１７に通知する。
【００７４】
ステップＳ２１において、I3Cドライバ１７は、エラー検出またはNACK受信があったことを、CCIマスタ１６のCCI（I3C DDR）処理部５２に通知する。そして、ステップＳ２２において、I3Cドライバ１７は、I3C規格が定める復帰方法に従って、復帰処理を実施するようにI3Cマスタ１２に対する指令を行う。なお、ステップＳ２１およびＳ２２の処理はソフトウエアによる処理が可能である。
【００７５】
ステップＳ２３において、I3Cマスタ１２は、ステップＳ２２でのI3Cドライバ１７からの指令に従って復帰処理を実行した後、処理はステップＳ１８に戻り、以下、同様の処理が繰り返して行われる。例えば、I3Cマスタ１２のエラー対応部３１は、マスタアボートを送信し、ストップまたはリスタートを送信した後、エラーを解除する。これにより、I3Cスレーブ１３をエラーから復帰させる。
【００７６】
図６は、CCIマスタ１６によりマスタ側のCCI階層で行われる通信処理を説明するフローチャートである。なお、この通信処理はソフトウエアによる処理が可能である。
【００７７】
例えば、マスタデバイス２２に電力が供給されてCCIマスタ１６が起動し、図示しない上位の制御部から通信を行うように指示があると処理が開始され、ステップＳ３１において、CCIマスタ１６は、SDRモードおよびDDRモードのどちらで通信を行うかを判定する。例えば、CCIマスタ１６は、通信の開始時にはSDRモードで通信を行うと判定し、その後にDDRモードに通信を切り替える処理が行われていれば、DDRモードで通信を行うと判定する。
【００７８】
ステップＳ３１において、CCIマスタ１６が、SDRモードで通信を行うと判定した場合、処理はステップＳ３２に進み、CCI（I3C SDR）処理部５１は、SDR通常処理を行う。例えば、CCI（I3C SDR）処理部５１は、図５のステップＳ１４でI3Cドライバ１７からエラー検出またはNACK受信があったという報告をI3Cマスタ１２から受領するまで、または、通信が終了するまでSDR通常処理を行う。そして、SDR通常処理が終了したとき、処理はステップＳ３３に進む。
【００７９】
ステップＳ３３において、CCI（I3C SDR）処理部５１は、SDR通常処理を終了したのは、通信終了によるものなのか、エラー検出またはNACK受信があったという報告を受領したことによるものなのかを判定する。
【００８０】
ステップＳ３３において、SDR通常処理を終了したのは通信終了によるものであると判定された場合、処理はステップＳ３２に戻り、CCI（I3C SDR）処理部５１は、SDR通常処理による通信を継続して行う。
【００８１】
一方、ステップＳ３３において、SDR通常処理が終了したのはエラー検出またはNACK受信があったという報告を受領したことによるものであると判定された場合、処理はステップＳ３４に進む。
【００８２】
ステップＳ３４において、CCI（I3C SDR）処理部５１は、内部のインデックスをクリアし、無効化する。
【００８３】
ステップＳ３５において、CCI（I3C SDR）処理部５１は、次の転送は、現在のアドレス位置のデータを読み出すCCI（SDR）カレントリードであるか否かを判定する。
【００８４】
ステップＳ３５において、次の転送はCCI（SDR）カレントリードでないと判定された場合、処理はステップＳ３２に戻り、次の転送からSDR通常処理が再開される。
【００８５】
一方、ステップＳ３５において、次の転送はCCI（SDR）カレントリードであると判定された場合、処理はステップＳ３６に進む。ステップＳ３６において、CCI（I3C SDR）処理部５１は、カレントリードを禁止して、ランダムリードに変更し、または、カレントリードをスキップする。ステップＳ３６の処理後、処理はステップＳ３２に戻り、以下、同様の処理が繰り返して行われる。
【００８６】
一方、ステップＳ３１において、CCIマスタ１６が、DDRモードで通信を行うと判定した場合、処理はステップＳ３７に進み、CCI（I3C DDR）処理部５２は、DDR通常処理を行う。例えば、CCI（I3C DDR）処理部５２は、図５のステップＳ２１でI3Cドライバ１７からエラー検出またはNACK受信があったという報告を受領するまで、MD0エラーまたはMD1エラーが検出されるまで、または、通信が終了するまでDDR通常処理を行う。そして、DDR通常処理が終了したとき、処理はステップＳ３８に進む。
【００８７】
ステップＳ３８において、CCI（I3C DDR）処理部５２は、DDR通常処理を終了したのは、通信終了によるものなのか、エラー検出またはNACK受信があったという報告を受領したことによるものなのか、あるいは、MD0エラーまたはMD1エラーが検出されたことによるものなのかを判定する。
【００８８】
ステップＳ３８において、DDR通常処理を終了したのは通信終了によるものであると判定された場合、処理はステップＳ３７に戻り、CCI（I3C DDR）処理部５２は、DDR通常処理による通信を継続して行う。
【００８９】
一方、ステップＳ３３において、DDR通常処理が終了したのはエラー検出またはNACK受信があったという報告を受領したことによるもの、あるいは、MD0エラーまたはMD1エラーが検出されたことによるものであると判定された場合、処理はステップＳ３９に進む。
【００９０】
ステップＳ３９において、CCI（I3C DDR）処理部５２は、は、内部のインデックスをクリアし、無効化する。
【００９１】
ステップＳ４０において、CCI（I3C DDR）処理部５２は、次の転送は、現在のアドレス位置のデータを読み出すCCI（DDR）カレントリードであるか否かを判定する。
【００９２】
ステップＳ４０において、次の転送はCCI（DDR）カレントリードでないと判定された場合、処理はステップＳ３７に戻り、次の転送からDDR通常処理が再開される。
【００９３】
一方、ステップＳ４０において、次の転送はCCI（DDR）カレントリードであると判定された場合、処理はステップＳ４１に進む。ステップＳ４１において、CCI（I3C DDR）処理部５２は、カレントリードを禁止して、ランダムリードに変更し、または、カレントリードをスキップする。ステップＳ４１の処理後、処理はステップＳ３７に戻り、以下、同様の処理が繰り返して行われる。
【００９４】
図７は、CCIスレーブ１８のCCI（I3C SDR）処理部６１によりスレーブ側のCCI階層で行われるSDR通信処理を説明するフローチャートである。
【００９５】
例えば、スレーブデバイス２３に電力が供給されてCCIスレーブ１８が起動すると処理が開始される。ステップＳ５１において、CCI（I3C SDR）処理部６１は、I3Cマスタ１２により通信のスタートまたはリスタートが行われて、その通信のスタートまたはリスタートをI3Cスレーブ１３が検出するまで処理を待機する。そして、通信のスタートまたはリスタートをI3Cスレーブ１３が検出すると、処理はステップＳ５２に進む。
【００９６】
ステップＳ５２において、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３がI3Cマスタ１２から送信されてくる信号を受信するのを待機する。そして、CCI（I3C SDR）処理部６１は、I3Cマスタ１２から送信されてきた信号をI3Cスレーブ１３が受信し、その信号をI3Cスレーブ１３から受領すると、処理はステップＳ５３に進む。
【００９７】
ステップＳ５３において、CCI（I3C SDR）処理部６１は、ステップＳ５２で受領した信号に基づいて、HDRモード遷移するか否かを判定する。
【００９８】
ステップＳ５３において、CCI（I3C SDR）処理部６１が、HDRモード遷移しないと判定した場合、処理はステップＳ５４に進む。
【００９９】
ステップＳ５４において、CCI（I3C SDR）処理部６１は、ステップＳ５２で受領した信号に基づくワードついて、エラーが発生しているエラー受信、または、正常に受信することができた正常ワード受信のどちらであるかを判定する。
【０１００】
ステップＳ５４において、CCI（I3C SDR）処理部６１が、エラー受信であると判定した場合、処理はステップＳ５５に進み、エラー対応部６３は、インデックスをクリアし、無効化する。その後、処理はステップＳ５１に戻り、以下、同様の処理が繰り返して行われる。
【０１０１】
一方、ステップＳ５４において、CCI（I3C SDR）処理部６１が、正常ワード受信であると判定した場合、処理はステップＳ５６に進む。ステップＳ５６において、CCI（I3C SDR）処理部６１は、正常に受信したワードの意味を判定する。
【０１０２】
ステップＳ５６において、CCI（I3C SDR）処理部６１が、ワードの意味がスレーブアドレスおよびライトコマンドであると判定した場合、処理はステップＳ５７に進む。ステップＳ５７において、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３から次に受領するワードをサブアドレスとして扱うものとし、処理はステップＳ５２に戻る。
【０１０３】
一方、ステップＳ５６において、CCI（I3C SDR）処理部６１が、ワードの意味がサブアドレスであると判定した場合、処理はステップＳ５８に進む。ステップＳ５８において、CCI（I3C SDR）処理部６１は、そのワードの値をインデックスに保持する。
【０１０４】
ステップＳ５９において、CCI（I3C SDR）処理部６１は、サブアドレスのｎバイトの受領が完了したか否かを判定する。
【０１０５】
ステップＳ５９において、CCI（I3C SDR）処理部６１が、サブアドレスのｎバイトの受領が完了していないと判定した場合、処理はステップＳ５７に進み、以下、上述した処理が行われる。
【０１０６】
一方、ステップＳ５９において、CCI（I3C SDR）処理部６１が、サブアドレスのｎバイトの受領が完了したと判定した場合、処理はステップＳ６０に進む。ステップＳ６０において、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３から次に受領するワードをライトデータとして扱うものとし、処理はステップＳ５２に戻る。
【０１０７】
一方、ステップＳ５６において、CCI（I3C SDR）処理部６１が、ワードの意味がライトデータであると判定した場合、処理はステップＳ６１に進む。ステップＳ６１において、CCI（I3C SDR）処理部６１は、そのデータの値を、保持しているインデックス番地に書き込む。
【０１０８】
ステップＳ６２において、CCI（I3C SDR）処理部６１は、インデックスをインクリメント（＋１）し、ステップＳ６３において、ストップまたはリスタート（Repeated Start）をI3Cスレーブ１３から受領したか否かを判定する。
【０１０９】
ステップＳ６３において、CCI（I3C SDR）処理部６１が、ストップまたはリスタートを受領していないと判定した場合、処理はステップＳ６０に進み、以下、上述した処理が行われる。
【０１１０】
一方、ステップＳ６３において、CCI（I3C SDR）処理部６１が、ストップまたはリスタートを受領したと判定した場合、処理はステップＳ６４に進む。ステップＳ６４において、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３から次に受領するワードをライトデータとしないこととした後、処理はステップＳ７６に進む。
【０１１１】
一方、ステップＳ５６において、CCI（I3C SDR）処理部６１が、ワードの意味がスレーブアドレスおよびリードコマンドであると判定した場合、処理はステップＳ６５に進む。
【０１１２】
ステップＳ６５において、CCI（I3C SDR）処理部６１は、保持しているインデックス値が有効であるか否かを判定する。
【０１１３】
ステップＳ６５において、CCI（I3C SDR）処理部６１が、保持しているインデックス値が有効である（例えば、インデックスが正しく定義されている）と判定した場合、処理はステップＳ６６に進む。ステップＳ６６において、CCI（I3C SDR）処理部６１は、保持しているインデックス番地のデータを読み込む。
【０１１４】
ステップＳ６７において、CCI（I3C SDR）処理部６１は、ステップＳ６６で読み込んだデータをI3Cスレーブ１３に渡し、ステップＳ６８において、インデックスをインクリメント（＋１）する。
【０１１５】
ステップＳ６９において、CCI（I3C SDR）処理部６１は、次のリードデータの準備が完了したか否かを判定する。ステップＳ６９において、CCI（I3C SDR）処理部６１が、次のリードデータの準備が完了したと判定した場合、処理はステップＳ７０に進み、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３からマスタアボートを受信した連絡があったか否かを判定する。
【０１１６】
ステップＳ７０において、CCI（I3C SDR）処理部６１が、I3Cスレーブ１３からマスタアボートを受信した連絡がなかったと判定した場合、処理はステップＳ６７に戻り、データの読み込みが続けて行われる。
【０１１７】
一方、ステップＳ６９において、次のリードデータの準備が完了していないと判定された場合、または、ステップＳ７０において、I3Cスレーブ１３からマスタアボートを受信した連絡があったと判定された場合、処理はステップＳ７１に進む。ステップＳ７１において、CCI（I3C SDR）処理部６１は、ストップまたはリスタートを待機した後、I3Cスレーブ１３からストップまたはリスタートを受領すると、処理はステップＳ７６に進む。
【０１１８】
一方、ステップＳ６５において、CCI（I3C SDR）処理部６１が、保持しているインデックス値が有効でない（例えば、インデックスが未定義であって無効である）と判定した場合、処理はステップＳ７２に進む。ステップＳ７２において、エラー対応部６３は、CCI（I3C SDR）処理部６１により保持しているインデックス値が有効でないと判定されたことに基づいて、SS0エラーが発生したことを検出する。
【０１１９】
ステップＳ７３において、エラー対応部６３は、I3Cスレーブ１３に対して、SS0エラーを解除するまでNACK応答を行うことを指令する。
【０１２０】
ステップＳ７４において、エラー対応部６３は、ストップまたはリスタートを待機した後、I3Cスレーブ１３からストップまたはリスタートを受領すると、処理はステップＳ７５に進む。
【０１２１】
ステップＳ７５において、エラー対応部６３は、ステップＳ７４でストップまたはリスタートを受領したのに応じて、SS0エラーを解除した後、処理はステップＳ７６に進む。
【０１２２】
ステップＳ７６において、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３からストップまたはリスタートのどちらを受領したのかを判定する。
【０１２３】
ステップＳ７６において、CCI（I3C SDR）処理部６１が、リスタートを受領したと判定した場合には処理はステップＳ５２に戻り、ストップを受領したと判定した場合には処理はステップＳ５１に戻って、以下、同様の処理が繰り返して行われる。
【０１２４】
一方、ステップＳ５３において、CCI（I3C SDR）処理部６１が、HDRモード遷移すると判定した場合、処理はステップＳ７７に進む。
【０１２５】
ステップＳ７７において、CCI（I3C SDR）処理部６１は、ステップＳ５３でHDRモードに遷移すると判定した信号に従って、モードを判定する。
【０１２６】
ステップＳ７７において、CCI（I3C SDR）処理部６１は、ステップＳ５３でHDRモードに遷移すると判定した信号がENTHDR0である場合、DDRモードに遷移すると判定し、処理はステップＳ７８に進む。ステップＳ７８において、CCI（I3C DDR）処理部６２が、CCI（I3C DDR）処理（後述する図８）を実行した後、処理はステップＳ８１に進む。
【０１２７】
一方、ステップＳ７７において、CCI（I3C SDR）処理部６１は、ステップＳ５３でHDRモードに遷移すると判定した信号がENTHDR1である場合、TSPモードに遷移すると判定し、処理はステップＳ７９に進む。ステップＳ７９においてCCI（I3C TSP）処理が実行された後、処理はステップＳ８１に進む。
【０１２８】
一方、ステップＳ７７において、CCI（I3C SDR）処理部６１は、ステップＳ５３でHDRモードに遷移すると判定した信号がENTHDR2である場合、TSLモードに遷移すると判定し、処理はステップＳ８０に進む。ステップＳ８０においてCCI（I3C TSL）処理が実行された後、処理はステップＳ８１に進む。
【０１２９】
ステップＳ８１において、CCI（I3C SDR）処理部６１は、I3Cスレーブ１３からストップまたはリスタートを受領するのを待機した後、ストップまたはリスタートを受領すると処理はステップＳ７６に進み、以下、上述した処理が行われる。
【０１３０】
図８は、CCIスレーブ１８のCCI（I3C DDR）処理部６２によりスレーブ側のCCI階層で行われるCCI（I3C DDR）処理（図７のステップＳ７８）を説明するフローチャートである。
【０１３１】
ステップＳ９１において、CCI（I3C DDR）処理部６２は、I3Cスレーブ１３がI3Cマスタ１２から送信されてくる信号を受信するのを待機する。そして、CCI（I3C DDR）処理部６２は、I3Cマスタ１２から送信されてきた信号をI3Cスレーブ１３が受信し、その信号をI3Cスレーブ１３から受領すると、処理はステップＳ９２に進む。
【０１３２】
ステップＳ９２において、CCI（I3C DDR）処理部６２は、ステップＳ９１で受領した信号に基づくワードついて、エラーが発生しているエラー受信、または、正常に受信することができた正常ワード受信のどちらであるかを判定する。
【０１３３】
ステップＳ９２において、CCI（I3C DDR）処理部６２が、エラー受信であると判定した場合、処理はステップＳ９３に進み、エラー対応部６３は、インデックスをクリアし、無効化する。その後、処理はステップＳ９４に進み、CCI（I3C DDR）処理部６２は、HDR ExitまたはHDR Restartを待機した後、I3Cスレーブ１３からHDR ExitまたはHDR Restartを受領すると、処理はステップＳ１１６に進む。
【０１３４】
一方、ステップＳ９２において、CCI（I3C DDR）処理部６２が、正常ワード受信であると判定した場合、処理はステップＳ９５に進む。ステップＳ９５において、CCI（I3C DDR）処理部６２は、正常に受信したワードの意味を判定する。
【０１３５】
ステップＳ９５において、CCI（I3C DDR）処理部６２が、ワードの意味がライトコマンドおよびスレーブアドレスであると判定した場合、処理はステップＳ９６に進む。ステップＳ９６において、CCI（I3C DDR）処理部６２は、I3Cスレーブ１３から次に受領するワードを送受信バイト数（LENGTH）として扱うものとし、処理はステップＳ９１に戻る。
【０１３６】
一方、ステップＳ９５において、CCI（I3C DDR）処理部６２が、ワードの意味が送受信バイト数であると判定した場合、処理はステップＳ９７に進む。ステップＳ９７において、CCI（I3C DDR）処理部６２は、送受信バイト数の値（Ｌバイト）を保持する。
【０１３７】
ステップＳ９８において、CCI（I3C DDR）処理部６２は、送受信バイト数について、所定バイト分の受領が完了したか否かを判定する。ステップＳ９８において、CCI（I3C DDR）処理部６２が、所定バイト分の受領が完了していないと判定した場合、処理はステップＳ９６に進み、以下、上述した処理が行われる。
【０１３８】
一方、ステップＳ９８において、CCI（I3C DDR）処理部６２が、所定バイト分の受領が完了したと判定した場合、処理はステップＳ９９に進む。ステップＳ９９において、CCI（I3C DDR）処理部６２は、I3Cスレーブ１３から次に受領するワードをサブアドレスとして扱うものとし、処理はステップＳ９１に戻る。
【０１３９】
一方、ステップＳ９５において、CCI（I3C DDR）処理部６２が、ワードの意味がサブアドレスであると判定した場合、処理はステップＳ１００に進む。ステップＳ１００において、CCI（I3C DDR）処理部６２は、そのサブアドレスの値をインデックスに保持する。
【０１４０】
ステップＳ１０１において、CCI（I3C DDR）処理部６２は、サブアドレスについて、所定バイト分の受領が完了したか否かを判定する。ステップＳ１０１において、CCI（I3C DDR）処理部６２が、所定バイト分の受領が完了していないと判定した場合には処理はステップＳ９９に進み、以下、上述した処理が行われ、所定バイト分の受領が完了したと判定した場合には処理はステップＳ９１に戻る。
【０１４１】
一方、ステップＳ９５において、CCI（I3C DDR）処理部６２が、ワードの意味がライトデータであると判定した場合、処理はステップＳ１０２に進む。ステップＳ１０２において、CCI（I3C DDR）処理部６２は、そのデータを、保持しているインデックス番地に書き込む。
【０１４２】
ステップＳ１０３において、CCI（I3C DDR）処理部６２は、インデックスをインクリメント（＋１）し、ステップＳ１０４において、これまでに受信したライトデータが送受信バイト数（Ｌバイト）を超えたか否かを判定する。
【０１４３】
ステップＳ１０４において、CCI（I3C DDR）処理部６２が、ライトデータが送受信バイト数（Ｌバイト）を超えたと判定した場合、処理はステップＳ１０５に進む。ステップＳ１０５において、エラー対応部６３は、SD1エラーが発生したことを検出し、エラー対応処理（後述する図９）を行った後、処理はステップＳ１１６に進む。
【０１４４】
一方、ステップＳ１０４において、CCI（I3C DDR）処理部６２が、ライトデータが送受信バイト数（Ｌバイト）を超えていないと判定した場合、処理はステップＳ１０６に進む。ステップＳ１０６において、CCI（I3C DDR）処理部６２は、これまでに受信したライトデータが所定バイト数（Ｋバイト）を超えたか否かを判定する。
【０１４５】
ステップＳ１０６において、CCI（I3C DDR）処理部６２が、ライトデータが所定バイト数（Ｋバイト）を超えたと判定した場合、処理はステップＳ１０７に進む。ステップＳ１０７において、エラー対応部６３は、SD2エラーが発生したことを検出し、エラー対応処理（後述する図９）を行った後、処理はステップＳ１１６に進む。一方、ステップＳ１０６において、CCI（I3C DDR）処理部６２が、ライトデータが所定バイト数（Ｋバイト）を超えていないと判定した場合には処理はステップＳ９１に戻る。
【０１４６】
一方、ステップＳ９５において、CCI（I3C DDR）処理部６２が、ワードの意味がCRCワードであると判定した場合、処理はステップＳ９４に進み、以下、上述した処理が行われる。
【０１４７】
一方、ステップＳ９５において、CCI（I3C DDR）処理部６２が、ワードの意味がリードコマンドおよびスレーブアドレスであると判定した場合、処理はステップＳ１０８に進む。ステップＳ１０８において、CCI（I3C DDR）処理部６２は、保持しているインデックス値が有効であるか否かを判定する。
【０１４８】
一方、ステップＳ１０８において、CCI（I3C DDR）処理部６２が、保持しているインデックス値が有効である（例えば、インデックスが正しく定義されている）と判定した場合、処理はステップＳ１０９に進む。ステップＳ１０９において、CCI（I3C DDR）処理部６２は、保持しているインデックス番地のデータを読み込む。
【０１４９】
ステップＳ１１０において、CCI（I3C DDR）処理部６２は、ステップＳ１０９で読み込んだデータをI3Cスレーブ１３に渡し、ステップＳ１１１において、インデックスをインクリメント（＋１）する。
【０１５０】
ステップＳ１１２において、CCI（I3C DDR）処理部６２は、これまでに送信したリードデータが送受信バイト数（Ｌバイト）を超えたか否かを判定する。ステップＳ１１２において、CCI（I3C DDR）処理部６２が、リードデータが送受信バイト数（Ｌバイト）を超えていないと判定した場合、処理はステップＳ１１３に進む。
【０１５１】
ステップＳ１１３において、CCI（I3C DDR）処理部６２は、I3Cスレーブ１３からマスタアボートを受信した連絡があったか否かを判定する。ステップＳ１１３において、CCI（I3C DDR）処理部６２が、I3Cスレーブ１３からマスタアボートを受信した連絡がなかったと判定した場合、処理はステップＳ１１０に戻り、データの読み込みが続けて行われる。一方、ステップＳ１１３において、CCI（I3C DDR）処理部６２が、I3Cスレーブ１３からマスタアボートを受信した連絡があったと判定した場合、処理はステップＳ９４に進み、以下、上述した処理が行われる。
【０１５２】
一方、ステップＳ１１２において、リードデータが送受信バイト数（Ｌバイト）を超えたと判定された場合、処理はステップＳ１１４に進む。ステップＳ１１４において、CCI（I3C DDR）処理部６２は、ＣＲＣワードを送信し、その後、処理はステップＳ９４に進み、以下、上述した処理が行われる。
【０１５３】
一方、ステップＳ１０８において、CCI（I3C DDR）処理部６２が、保持しているインデックス値が有効でない（例えば、インデックスが未定義であって無効である）と判定した場合、処理はステップＳ１１５に進む。ステップＳ１１５において、エラー対応部６３は、CCI（I3C SDR）処理部６１が、保持しているインデックス値が有効でないと判定したことに基づいて、SD0エラーが発生したことを検出し、エラー対応処理（後述する図９）を行った後、処理はステップＳ１１６に進む。
【０１５４】
ステップＳ１１６において、CCI（I3C DDR）処理部６２は、I3Cスレーブ１３からHDR RestartまたはHDR Exitのどちらを受領したのかを判定する。
【０１５５】
ステップＳ１１６において、CCI（I3C DDR）処理部６２が、HDR Restartを受領したと判定した場合、処理はステップＳ９１に戻り、以下、同様の処理が繰り返して行われる。一方、ステップＳ１１６において、CCI（I3C DDR）処理部６２が、HDR Exitを受領したと判定した場合、処理は終了される。
【０１５６】
図９は、図８のステップＳ１０５、ステップＳ１０７、またはステップＳ１１５において、CCIスレーブ１８のエラー対応部６３により行われるエラー対応処理を説明するフローチャートである。
【０１５７】
ステップＳ１２１において、エラー対応部６３は、I3Cスレーブ１３に対して、エラー（SD0エラー、SD1エラー、またはSD2エラー）を解除するまでNACK応答を行うことを指令する。
【０１５８】
ステップＳ１２２において、エラー対応部６３は、HDR ExitまたはHDR Restartを待機した後、I3Cスレーブ１３からHDR ExitまたはHDR Restartを受領すると、処理はステップＳ１２３に進む。
【０１５９】
ステップＳ１２３において、エラー対応部６３は、ステップＳ１２２でHDR ExitまたはHDR Restartを受領したのに応じて、エラー（SD0エラー、SD1エラー、またはSD2エラー）を解除した後、処理は終了される。
【０１６０】
図１０は、I3C（SDR）処理部４１によりスレーブ側のI3C階層で行われるSDR通信処理を説明するフローチャートである。
【０１６１】
例えば、スレーブデバイス２３に電力が供給されてI3Cスレーブ１３が起動すると処理が開始される。ステップＳ１３１において、I3C（SDR）処理部４１は、I3Cマスタ１２により通信のスタートまたはリスタートが行われて、その通信のスタートまたはリスタートを検出するまで処理を待機する。そして、I3C（SDR）処理部４１が、通信のスタートまたはリスタートを検出すると、処理はステップＳ１３２に進む。
【０１６２】
ステップＳ１３２において、I3C（SDR）処理部４１は、通信のスタートまたはリスタートに続いて送信されてくる１ワード目を確認し、ステップＳ１３３において、その１ワード目が禁止アドレスであるか否かを判定する。
【０１６３】
ステップＳ１３３において、I3C（SDR）処理部４１が、１ワード目が禁止アドレスであると判定した場合、処理はステップＳ１３４に進む。ステップＳ１３４において、エラー対応部４３は、I3C（SDR）処理部４１により１ワード目が禁止アドレスであると判定されたことに基づいて、S0エラーが発生したことを検出する。
【０１６４】
ステップＳ１３５において、エラー対応部４３は、CCIスレーブ１８に対してS0エラーが発生したことを通知する。
【０１６５】
ステップＳ１３６において、I3C（SDR）処理部４１は、HDR Exitを待機する。ステップＳ１３７において、I3C（SDR）処理部４１は、HDR Exitを受信したか否かを判定し、HDR Exitを受信していないと判定した場合、処理はステップＳ１３６に戻り、HDR Exitの待機が継続される。
【０１６６】
一方、ステップＳ１３７において、I3C（SDR）処理部４１が、HDR Exitを受信したと判定した場合、処理はステップＳ１３８に進む。ステップＳ１３８において、エラー対応部４３は、ステップＳ１３７でI3C（SDR）処理部４１がHDR Exitを受信したのに応じて、S0エラーを解除した後、処理はステップＳ１５０に進む。
【０１６７】
一方、ステップＳ１３３において、I3C（SDR）処理部４１が、１ワード目が禁止アドレスでないと判定した場合、処理はステップＳ１３９に進む。ステップＳ１３９において、I3C（SDR）処理部４１は、１ワード目がI3Cバス１１に接続されている全てのI3Cスレーブ１３を対象としたリードコマンド（7’h7E+R）であるか否かを判定する。
【０１６８】
ステップＳ１３９において、I3C（SDR）処理部４１が、１ワード目がリードコマンド（7’h7E+R）であると判定した場合、処理はステップＳ１３４に進んでS0エラーが発生したことが検出され、以下、上述した処理が行われる。
【０１６９】
一方、ステップＳ１３９において、I3C（SDR）処理部４１が、１ワード目がリードコマンド（7’h7E+R）でないと判定した場合、処理はステップＳ１４０に進む。ステップＳ１４０において、I3C（SDR）処理部４１は、１ワード目がI3Cバス１１に接続されている全てのI3Cスレーブ１３を対象としたライトコマンド（7’h7E+W）であるか否かを判定する。
【０１７０】
ステップＳ１４０において、I3C（SDR）処理部４１が、１ワード目がライトコマンド（7’h7E+W）であると判定した場合、処理はステップＳ１４１に進み、確認応答処理部７１による確認応答処理（後述する図１１）が行われる。
【０１７１】
ステップＳ１４２において、I3C（SDR）処理部４１は、ステップＳ１４１の確認応答処理においてACK応答またはNACK応答のどちらが行われたかを判定する。
【０１７２】
ステップＳ１４２において、I3C（SDR）処理部４１が、ACK応答が行われたと判定した場合、処理はステップＳ１４３に進む。ステップＳ１４３において、I3C（SDR）処理部４１は、次にリスタートが来たか否かを判定し、次にリスタートが来たと判定した場合には処理はステップＳ１３２に戻る。
【０１７３】
一方、ステップＳ１４３において、I3C（SDR）処理部４１が、次にリスタートが来ていないと判定した場合には処理はステップＳ１４４に進む。即ち、この場合、１ワード目はCCCであり、CCC受信処理部７３によるCCC受信処理（後述する図１３）が行われた後、処理はステップＳ１５０に進む。
【０１７４】
一方、１４２において、I3C（SDR）処理部４１が、NACK応答が行われたと判定した場合、処理はステップＳ１４５に進み、ストップまたはリスタートを待機した後、ストップまたはリスタートを受信すると、処理はステップＳ１５０に進む。
【０１７５】
一方、ステップＳ１４０において、I3C（SDR）処理部４１が、１ワード目がライトコマンド（7’h7E+W）でないと判定した場合、処理はステップＳ１４６に進む。即ち、この場合、１ワード目は、I3Cバス１１に接続されている複数のI3Cスレーブ１３のうちの、いずれか１台のアドレスであり、ステップＳ１４６において、I3C（SDR）処理部４１は、その１ワード目が自分のアドレスと一致しているか否かを判定する。
【０１７６】
ステップＳ１４６において、I3C（SDR）処理部４１が、１ワード目が自分のアドレスと一致していないと判定した場合、処理はステップＳ１４５に進む。即ち、この場合、その１ワード目は他のI3Cスレーブ１３のアドレスであるため、I3C（SDR）処理部４１は、ステップＳ１４５において、ストップまたはリスタートを待機する。
【０１７７】
一方、ステップＳ１４６において、I3C（SDR）処理部４１が、１ワード目が自分のアドレスと一致していると判定した場合、処理はステップＳ１４７に進む。ステップＳ１４７において、I3C（SDR）処理部４１は、自分のアドレスとともに送信されてきたコマンドが、ライトコマンドまたはリードコマンドのどちらであるかを判定する。
【０１７８】
ステップＳ１４７において、I3C（SDR）処理部４１が、ライトコマンドであると判定した場合、処理はステップＳ１４８に進み、ライト受信処理部７２によるライト受信処理（後述する図１２）が行われた後、処理はステップＳ１５０に進む。
【０１７９】
一方、ステップＳ１４７において、I3C（SDR）処理部４１が、リードコマンドであると判定した場合、処理はステップＳ１４９に進み、リード受信処理部７４によるリード受信処理（後述する図１４）が行われた後、処理はステップＳ１５０に進む。
【０１８０】
ステップＳ１５０において、I3C（SDR）処理部４１は、ストップまたはリスタートのどちらを受信したのかを判定する。
【０１８１】
ステップＳ１５０において、I3C（SDR）処理部４１が、リスタートを受信したと判定した場合には処理はステップＳ１３２に戻り、ストップを受信したと判定した場合には処理はステップＳ１３１に戻って、以下、同様の処理が繰り返して行われる。
【０１８２】
図１１は、図１０のステップＳ１４１において、確認応答処理部７１により行われる確認応答処理を説明するフローチャートである。
【０１８３】
ステップＳ１６１において、確認応答処理部７１は、I3Cスレーブ１３として、上述したライトコマンド（7’h7E+W）に対してACK応答でよいか否かを判定する。例えば、確認応答処理部７１は、コマンドやデータなどを正常に受信することができた場合、ACK応答を行うと判定し、コマンドやデータなどにエラーが発生している場合、ACK応答を行わない（即ち、NACK応答する）と判定する。
【０１８４】
ステップＳ１６１において、確認応答処理部７１が、I3Cスレーブ１３としてACK応答でよいと判定した場合、処理はステップＳ１６２に進む。
【０１８５】
ステップＳ１６２において、エラー対応部７６は、ステップＳ１６１において確認応答処理部７１によるACK応答でよいとした判定結果に対して、CCIスレーブ１８からNACKに上書きする要求があるか否かを判定する。例えば、CCIスレーブ１８は、上述したようにSS0エラーが解除されるまでは、I3Cの規格によらず、NACKに上書きするように要求する。
【０１８６】
ステップＳ１６２において、エラー対応部７６が、CCIスレーブ１８からNACKに上書きする要求がないと判定した場合、処理はステップＳ１６３に進み、確認応答処理部７１は、ACK応答を行った後、処理は終了される。
【０１８７】
一方、ステップＳ１６１において、確認応答処理部７１が、I3Cスレーブ１３としてACK応答でよくない（即ち、NACK応答する）と判定した場合、処理はステップＳ１６４に進む。同様に、ステップＳ１６２において、エラー対応部７６が、CCIスレーブ１８からNACKに上書きする要求があると判定した場合、処理はステップＳ１６４に進む。ステップＳ１６４において、確認応答処理部７１は、NACK応答を行った後、処理は終了される。
【０１８８】
図１２は、図１０のステップＳ１４８において、ライト受信処理部７２により行われるライト受信処理を説明するフローチャートである。
【０１８９】
ステップＳ１７１において、ライト受信処理部７２は、受信したスレーブアドレスおよびライトコマンドをCCIスレーブ１８へ送付する。
【０１９０】
ステップＳ１７２において、確認応答処理部７１による確認応答処理（上述した図１１）が行われ、ステップＳ１７３において、ライト受信処理部７２は、その確認応答処理においてACK応答またはNACK応答のどちらが行われたかを判定する。
【０１９１】
ステップＳ１７３において、ライト受信処理部７２が、ACK応答が行われたと判定した場合、処理はステップＳ１７４に進む。ステップＳ１７４において、ライト受信処理部７２は、次のワードをライトデータとして受信し、CCIスレーブ１８へ送付する。
【０１９２】
ステップＳ１７５において、ライト受信処理部７２は、ステップＳ１７３で受信したライトデータにパリティエラーがあるか否かを判定する。
【０１９３】
ステップＳ１７５において、パリティエラーがないと判定された場合、処理はステップＳ１７６に進み、ライト受信処理部７２は、次にリスタートまたはストップが来たか否かを判定する。ステップＳ１７６において、ライト受信処理部７２が、次にリスタートまたはストップが来ていないと判定した場合、処理はステップＳ１７４に戻り、以下、同様の処理が繰り返される。
【０１９４】
一方、ステップＳ１７６においてリスタートまたはストップが来たと判定された場合、処理は終了される。
【０１９５】
一方、ステップＳ１７５において、ライト受信処理部７２が、パリティエラーがあると判定した場合、処理はステップＳ１７７に進む。ステップＳ１７７において、エラー対応部７６は、ライト受信処理部７２によりパリティエラーがあると判定されたことに基づいて、S2エラーが発生したことを検出する。
【０１９６】
ステップＳ１７８において、エラー対応部７６は、CCIスレーブ１８に対してS2エラーが発生したことを通知する。
【０１９７】
ステップＳ１７９において、ライト受信処理部７２は、ストップまたはリスタートを待機し、ステップＳ１８０において、ストップまたはリスタートを受信したか否かを判定する。
【０１９８】
ステップＳ１８０において、ライト受信処理部７２が、ストップまたはリスタートを受信していないと判定した場合、処理はステップＳ１７９に戻り、ストップまたはリスタートの待機が継続される。
【０１９９】
一方、ステップＳ１８０において、ライト受信処理部７２が、ストップまたはリスタートを受信したと判定した場合、処理はステップＳ１８１に進む。ステップＳ１８１において、エラー対応部４３は、ステップＳ１８０でライト受信処理部７２がストップまたはリスタートを受信したのに応じて、Ｓ2エラーを解除した後、処理は終了される。
【０２００】
一方、ステップＳ１７３において、ライト受信処理部７２が、NACK応答が行われたと判定した場合、処理はステップＳ１８２に進む。ステップＳ１８２において、ライト受信処理部７２は、ストップまたはリスタートを待機した後、ストップまたはリスタートを受信すると、処理は終了される。
【０２０１】
図１３は、図１０のステップＳ１４４において、CCC受信処理部７３により行われるCCC受信処理を説明するフローチャートである。
【０２０２】
ステップＳ１９１において、CCC受信処理部７３は、CCCにパリティエラーがあるか否かを判定する。
【０２０３】
ステップＳ１９１において、CCC受信処理部７３が、パリティエラーがあると判定した場合、処理はステップＳ１９２に進む。ステップＳ１９２において、エラー対応部７６は、CCC受信処理部７３によりパリティエラーがあると判定されたのに基づいて、S1エラーが発生したことを検出する。
【０２０４】
ステップＳ１９３において、エラー対応部７６は、CCIスレーブ１８に対してS1エラーが発生したことを通知する。
【０２０５】
ステップＳ１９４において、CCC受信処理部７３は、HDR Exitを待機し、ステップＳ１９５において、CCC受信処理部７３は、HDR Exitを受信したか否かを判定する。ステップＳ１９５において、CCC受信処理部７３が、HDR Exitを受信していないと判定した場合、処理はステップＳ１９４に戻り、HDR Exitの待機が継続される。
【０２０６】
一方、ステップＳ１９５において、CCC受信処理部７３が、HDR Exitを受信したと判定した場合、処理はステップＳ１９６に進む。ステップＳ１９６において、エラー対応部７６は、ステップＳ１９５でCCC受信処理部７３がHDR Exitを受信したのに応じて、S1エラーを解除した後、処理は終了される。
【０２０７】
一方、ステップＳ１９１において、CCC受信処理部７３が、パリティエラーがないと判定した場合、処理はステップＳ１９７に進む。ステップＳ１９７において、CCC受信処理部７３は、CCCによる指示内容を判定する。
【０２０８】
ステップＳ１９７において、CCC受信処理部７３が、CCCによる指示内容がダイナミックアドレスの割り当てを指示するCCC（ENTDAA）である場合、処理はステップＳ１９８に進む。
【０２０９】
ステップＳ１９８において、ダイナミックアドレスを割り当てるCCC（ENTDAA）処理が行われる。
【０２１０】
ステップＳ１９９において、エラー対応部７６は、ステップＳ１９８のCCC（ENTDAA）処理において、S3エラーの発生を検出したか否かを判定する。
【０２１１】
ステップＳ１９９において、エラー対応部７６が、S3エラーの発生を検出したと判定した場合、処理はステップＳ２００に進む。ステップＳ２００において、エラー対応部７６は、CCIスレーブ１８に対してS3エラーの発生を検出したことを通知する。
【０２１２】
一方、ステップＳ１９９において、エラー対応部７６が、S3エラーの発生を検出しなかったと判定した場合、処理はステップＳ２０１に進む。ステップＳ２０１において、エラー対応部７６は、ステップＳ１９８のCCC（ENTDAA）処理において、S4エラーの発生を検出したか否かを判定する。
【０２１３】
ステップＳ２０１において、エラー対応部７６が、S4エラーの発生を検出したと判定した場合、処理はステップＳ２００に進む。この場合、ステップＳ２００において、エラー対応部７６は、CCIスレーブ１８に対してS4エラーを検出したことを通知する。
【０２１４】
ステップＳ２００の処理後、処理はステップＳ２０２に進む。同様に、ステップＳ２０１において、エラー対応部７６が、S4エラーの発生を検出しなかったと判定した場合、即ち、S3エラーおよびS4エラーのどちらの発生も検出されていない場合、処理はステップＳ２０２に進む。
【０２１５】
ステップＳ２０２において、CCC受信処理部７３は、ストップを受信したか否かを判定する。ステップＳ２０２において、CCC受信処理部７３が、ストップを受信していないと判定した場合には処理はステップＳ１９８に戻り、以下、同様の処理が繰り返され、ストップを受信したと判定した場合には処理は終了される。
【０２１６】
一方、ステップＳ１９７において、CCC受信処理部７３が、CCCによる指示内容が各種の情報の送信を要求して取得することを指示するCCC（GET系）である場合、処理はステップＳ２０３に進む。
【０２１７】
ステップＳ２０３において、各種の情報の送信を要求して取得するCCC（GET系）処理が行われる。
【０２１８】
ステップＳ２０４において、エラー対応部７６は、ステップＳ２０３のCCC（GET系）処理において、S5エラーの発生を検出したか否かを判定する。
【０２１９】
ステップＳ２０４において、エラー対応部７６が、S5エラーの発生を検出したと判定した場合、処理はステップＳ２０５に進む。ステップＳ２０５において、エラー対応部７６は、CCIスレーブ１８に対してS5エラーを検出したことを通知する。
【０２２０】
ステップＳ２０５の処理後、または、ステップＳ２０４でS5エラーが検出されなかったと判定された場合、処理はステップＳ２０６に進む。ステップＳ２０６において、CCC受信処理部７３は、ストップまたはリスタートを受信したか否かを判定する。
【０２２１】
ステップＳ２０６において、CCC受信処理部７３が、ストップまたはリスタートを受信していないと判定した場合には処理はステップＳ２０３に戻り、以下、同様の処理が繰り返され、ストップまたはリスタートを受信したと判定した場合には処理は終了される。
【０２２２】
一方、ステップＳ１９７において、CCC受信処理部７３が、CCCによる指示内容がHDRモードを開始すること指示するCCC（ENTHDRx）である場合、処理はステップＳ２０７に進む。
【０２２３】
ステップＳ２０７において、HDR開始処理部７５によりHDRモードを開始するCCC（ENTHDRx）処理が行われる。
【０２２４】
ステップＳ２０８では、ステップＳ２０７のCCC（ENTHDRx）処理において、HDR Exitと、ストップまたはリスタートとを受信したか否かが判定される。そして、HDR Exitと、ストップまたはリスタートとを受信したと判定されるまで、CCC（ENTHDRx）処理が継続して行われ、HDR Exitと、ストップまたはリスタートとを受信したと判定されると処理は終了される。
【０２２５】
なお、図１３では、CCC（ENTDAA）処理、CCC（GET系）処理、およびCCC（ENTHDRx）処理について例示したが、その他、多数のCCCが用いられる。
【０２２６】
図１４は、図１０のステップＳ１４９において、リード受信処理部７４により行われるリード受信処理を説明するフローチャートである。
【０２２７】
ステップＳ２１１において、リード受信処理部７４は、受信したスレーブアドレスおよびリードコマンドをCCIスレーブ１８へ送付する。
【０２２８】
ステップＳ２１２において、確認応答処理部７１による確認応答処理（上述した図１１）が行われ、ステップＳ２１３において、リード受信処理部７４は、その確認応答処理においてACK応答またはNACK応答のどちらが行われたかを判定する。
【０２２９】
ステップＳ２１３において、リード受信処理部７４が、ACK応答が行われたと判定した場合、処理はステップＳ２１４に進む。ステップＳ２１４において、リード受信処理部７４は、CCIスレーブ１８から受領したリードデータをI3Cマスタ１２へ送信する。
【０２３０】
ステップＳ２１５において、リード受信処理部７４は、送信中のI3Cバス１１上の信号が送信データと一致しているか否かを判定する。
【０２３１】
ステップＳ２１５において、リード受信処理部７４が、送信中のI3Cバス１１上の信号が送信データと一致していると判定した場合、処理はステップＳ２１６に進む。ステップＳ２１６において、リード受信処理部７４は、CCIスレーブ１８から次のリードデータを受領したか否かを判定する。
【０２３２】
ステップＳ２１６において、リード受信処理部７４が、CCIスレーブ１８から次のリードデータを受領していないと判定した場合、処理はステップＳ２１７に進む。ステップＳ２１７において、リード受信処理部７４は、データエンド（End-of-Data）をI3Cマスタ１２に送信する。その後、リード受信処理部７４は、ストップまたはリスタートを待機した後、ストップまたはリスタートを受信すると、処理は終了される。
【０２３３】
一方、ステップＳ２１６において、リード受信処理部７４が、CCIスレーブ１８から次のリードデータを受領したと判定した場合、処理はステップＳ２１８に進む。ステップＳ２１８において、リード受信処理部７４は、I3Cマスタ１２からのアボート要求を受領したか否かを判定する。
【０２３４】
ステップＳ２１８において、リード受信処理部７４が、I3Cマスタ１２からのアボート要求を受領していないと判定した場合、処理はステップＳ２１４に戻り、以下、同様の処理が繰り返される。
【０２３５】
一方、ステップＳ２１８において、リード受信処理部７４が、I3Cマスタ１２からのアボート要求を受領したと判定した場合、処理はステップＳ２１９に進む。ステップＳ２１９において、リード受信処理部７４は、アボート要求を受領したことをCCIスレーブ１８へ通知する。その後、リード受信処理部７４は、ストップまたはリスタートを待機した後、ストップまたはリスタートを受信すると、処理は終了される。
【０２３６】
一方、ステップＳ２１５において、リード受信処理部７４が、送信中のI3Cバス１１上の信号が送信データと一致していないと判定した場合、処理はステップＳ２２０に進む。ステップＳ２２０において、エラー対応部７６は、ステップＳ２１５でリード受信処理部７４により送信中のI3Cバス１１上の信号が送信データと一致していないと判定されたことに基づいて、S6エラーが発生したことを検出する。
【０２３７】
ステップＳ２２１において、エラー対応部７６は、CCIスレーブ１８に対してS6エラーが発生したことを通知し、ステップＳ２２２において、リード受信処理部７４は、リードデータの送信を停止する。
【０２３８】
ステップＳ２２３において、リード受信処理部７４は、ストップまたはリスタートを待機し、ステップＳ２２４において、ストップまたはリスタートを受信したか否かを判定する。ステップＳ２２４において、リード受信処理部７４が、ストップまたはリスタートを受信していないと判定した場合、処理はステップＳ２２３に戻り、ストップまたはリスタートの待機が継続される。
【０２３９】
一方、ステップＳ２２４において、リード受信処理部７４が、ストップまたはリスタートを受信したと判定した場合、処理はステップＳ２２５に進む。ステップＳ２２５において、エラー対応部４３は、ステップＳ２２４でリード受信処理部７４がストップまたはリスタートを受信したのに応じて、Ｓ6エラーを解除した後、処理は終了される。
【０２４０】
一方、ステップＳ２１３において、リード受信処理部７４が、NACK応答が行われたと判定した場合、処理はステップＳ２２６に進む。ステップＳ２２６において、リード受信処理部７４は、ストップまたはリスタートを待機する。そして、リード受信処理部７４は、ストップまたはリスタートを受信すると、処理は終了される。
【０２４１】
図１５は、図１３のステップＳ２０７において、HDR開始処理部７５により行われるHDR開始処理を説明するフローチャートである。
【０２４２】
ステップＳ２３１において、HDR開始処理部７５は、受信したCCC（ENTHDRx）に従って、HDRのモードを判定する。
【０２４３】
ステップＳ２３１において、HDR開始処理部７５が、受信したCCCがENTHDR0であると判定した場合、DDRモードを開始すると判定し、処理はステップＳ２３２に進む。ステップＳ２３２において、HDR開始処理部７５は、CCIスレーブ１８に対してDDRモードを開始することを通知し、ステップＳ２３３において、I3C（DDR）処理部４２によりDDR処理（後述する図１６）が行われた後、処理は終了される。
【０２４４】
一方、ステップＳ２３１において、HDR開始処理部７５が、受信したCCCがENTHDR1であると判定した場合、TSPモードを開始すると判定し、処理はステップＳ２３４に進む。ステップＳ２３４において、HDR開始処理部７５は、CCIスレーブ１８に対してTSPモードを開始することを通知し、ステップＳ２３５においてTSP処理が行われた後、処理は終了される。
【０２４５】
一方、ステップＳ２３１において、HDR開始処理部７５が、受信したCCCがENTHDR2であると判定した場合、TSLモードを開始すると判定し、処理はステップＳ２３６に進む。ステップＳ２３６において、HDR開始処理部７５は、CCIスレーブ１８に対してTSLモードを開始することを通知し、ステップＳ２３７においてTSL処理が行われた後、処理は終了される。
【０２４６】
一方、ステップＳ２３１において、HDR開始処理部７５が、受信したCCCが、ENTHDR0，ENTHDR1、およびENTHDR2以外の、その他であると判定した場合、処理はステップＳ２３８に進む。ステップＳ２３８において、HDR開始処理部７５は、HDR Exitを待機した後、HDR Exitを受信すると、処理は終了される。
【０２４７】
図１６は、図１５のステップＳ２３３において、I3C（DDR）処理部４２によりスレーブ側のI3C階層で行われるI3C（DDR）処理を説明するフローチャートである。
【０２４８】
ステップＳ２４１において、I3C（DDR）処理部４２は、CCC（ENTHDRx）に続けて送信されてくるプリアンブルを確認し、プリアンブルを判定する。
【０２４９】
ステップＳ２４１において、I3C（DDR）処理部４２が、プリアンブルが2’b01であると判定した場合、処理はステップＳ２４２に進む。
【０２５０】
ステップＳ２４２において、I3C（DDR）処理部４２は、コマンドを待機し、コマンドを受信すると処理はステップＳ２４３に進む。ステップＳ２４３において、I3C（DDR）処理部４２は、スレーブアドレスを待機し、スレーブアドレスを受信すると処理はステップＳ２４４に進む。
【０２５１】
ステップＳ２４４において、I3C（DDR）処理部４２は、ステップＳ２４２で受信したコマンド、および、ステップＳ２４３で受信したスレーブアドレスに、パリティエラーが発生しているか否かを判定する。ステップＳ２４４において、I3C（DDR）処理部４２が、パリティエラーが発生していないと判定した場合、処理はステップＳ２４５に進む。
【０２５２】
ステップＳ２４５において、I3C（DDR）処理部４２は、ステップＳ２４３で受信したアドレスが、自分のアドレスと一致しているか否かを判定し、自分のアドレスと一致していると判定した場合、処理はステップＳ２４６に進む。ステップＳ２４６において、I3C（DDR）処理部４２は、ステップＳ２４２で受信したコマンド、および、ステップＳ２４３で受信したスレーブアドレスをCCIスレーブ１８へ送付する。
【０２５３】
ステップＳ２４７において、I3C（DDR）処理部４２は、ステップＳ２４２で受信したコマンドが、ライトコマンドまたはリードコマンドのどちらであるかを判定する。
【０２５４】
ステップＳ２４７において、I3C（DDR）処理部４２が、ライトコマンドであると判定した場合、処理はステップＳ２４８に進み、DDRライト処理部８１によりDDRライト処理が行われた後、処理はステップＳ２５２に進む。
【０２５５】
一方、ステップＳ２４７において、I3C（DDR）処理部４２が、リードコマンドであると判定した場合、処理はステップＳ２４９に進み、DDRリード処理部８２によりDDRリード処理が行われた後、処理はステップＳ２５２に進む。
【０２５６】
一方、ステップＳ２４４において、I3C（DDR）処理部４２が、パリティエラーが発生していると判定した場合、処理はステップＳ２５０に進み、エラー対応部８４によるパリティエラー対応処理（後述する図２１）が行われた後、処理はステップＳ２５２に進む。
【０２５７】
一方、ステップＳ２４１において、I3C（DDR）処理部４２が、プリアンブルが2'b00であると判定された場合、処理はステップＳ２５２に進む。
【０２５８】
一方、ステップＳ２４１において、I3C（DDR）処理部４２が、プリアンブルが2’b01および2’b00以外の、その他であると判定した場合、処理はステップＳ２５１に進み、エラー対応部８４によるフレーミングエラー対応処理（後述する図２０）が行われた後、処理はステップＳ２５２に進む。
【０２５９】
ステップＳ２５２において、I3C（DDR）処理部４２は、HDR ExitまたはHDR Restartを待機する。そして、I3C（DDR）処理部４２がHDR ExitまたはHDR Restartを受信すると、処理はステップＳ２５３に進む。
【０２６０】
ステップＳ２５３において、I3C（DDR）処理部４２は、ステップＳ２５２でHDR ExitまたはHDR Restartのどちらを受信したのかを判定する。ステップＳ２５３において、I3C（DDR）処理部４２が、HDR Restartを受信したと判定した場合には処理はステップＳ２４１に戻って、以下、同様の処理が行われ、HDR Exitを受信したと判定した場合には処理は終了される。
【０２６１】
図１７は、図１６のステップＳ２４８において、DDRライト処理部８１により行われるDDRライト処理を説明するフローチャートである。
【０２６２】
ステップＳ２６１において、DDRライト処理部８１は、プリアンブルを確認し、プリアンブルを判定する。
【０２６３】
ステップＳ２６１において、DDRライト処理部８１が、プリアンブルが2’b10であると判定した場合、処理はステップＳ２６２に進む。
【０２６４】
ステップＳ２６２において、DDRライト処理部８１は、ライトデータを待機し、ライトデータを受信すると処理はステップＳ２６３に進む。
【０２６５】
ステップＳ２６３において、DDRライト処理部８１は、ステップＳ２６２で受信したライトデータに、パリティエラーが発生しているか否かを判定する。ステップＳ２６３において、DDRライト処理部８１が、パリティエラーが発生していないと判定した場合、処理はステップＳ２６４に進む。
【０２６６】
ステップＳ２６４において、DDRライト処理部８１は、ステップＳ２６２で受信したライトデータをCCIスレーブ１８へ送付する。
【０２６７】
ステップＳ２６５において、DDRライト処理部８１は、プリアンブルを確認し、プリアンブルを判定する。
【０２６８】
ステップＳ２６５において、DDRライト処理部８１が、プリアンブルが2’b11であると判定した場合、処理はステップＳ２６２に戻り、以下、ライトデータの受信が継続して行われる。
【０２６９】
一方、ステップＳ２６５において、DDRライト処理部８１が、プリアンブルが2’b01であると判定した場合、処理はステップＳ２６６に進む。ステップＳ２６６において、DDRライト処理部８１は、CRCを待機し、CRCを受信すると処理はステップＳ２６７に進む。
【０２７０】
ステップＳ２６７において、DDRライト処理部８１は、ヘッダ（4’hC）を受信したか否かを判定する。ステップＳ２６７において、DDRライト処理部８１が、ヘッダ（4’hC）を受信したと判定した場合、処理はステップＳ２６８に進む。
【０２７１】
ステップＳ２６８において、DDRライト処理部８１は、ステップＳ２６６で受信したCRCにCRCエラーが発生しているか否かを判定する。ステップＳ２６８において、DDRライト処理部８１が、CRCエラーが発生していないと判定した場合、処理はステップＳ２６９に進む。
【０２７２】
ステップＳ２６９において、DDRライト処理部８１は、ステップＳ２６６で受信したCRCのワードをCCIスレーブ１８へ送付した後、処理は終了される。
【０２７３】
一方、ステップＳ２６８において、DDRライト処理部８１が、CRCエラーが発生していると判定した場合、処理はステップＳ２７０に進む。ステップＳ２７０において、エラー対応部８４によるCRCエラー対応処理（後述する図２２）が行われた後、処理は終了される。
【０２７４】
一方、ステップＳ２６７において、DDRライト処理部８１が、ヘッダ（4’hC）を受信していないと判定した場合、処理はステップＳ２７１に進む。ステップＳ２７１において、エラー対応部８４によるフレーミングエラー対応処理（後述する図２０）が行われた後、処理は終了される。
【０２７５】
一方、ステップＳ２６５において、DDRライト処理部８１が、プリアンブルが2’b00であると判定した場合、処理は終了される。
【０２７６】
一方、ステップＳ２６５において、DDRライト処理部８１が、プリアンブルが2'b11，2'b01，2’b00以外の、その他であると判定した場合、処理はステップＳ２７２に進む。ステップＳ２７２において、エラー対応部８４によるフレーミングエラー対応処理（後述する図２０）が行われた後、処理は終了される。
【０２７７】
一方、ステップＳ２６３において、DDRライト処理部８１が、パリティエラーが発生していると判定した場合、処理はステップＳ２７３に進む。ステップＳ２７３において、エラー対応部８４によるパリティエラー対応処理（後述する図２１）が行われた後、処理は終了される。
【０２７８】
ステップＳ２６１において、DDRライト処理部８１が、プリアンブルが2’b00であると判定した場合、処理は終了される。
【０２７９】
ステップＳ２６１において、DDRライト処理部８１が、プリアンブルが2’b10，2’b00以外の、その他であると判定した場合、処理はステップＳ２７４に進む。ステップＳ２７４において、エラー対応部８４によるフレーミングエラー対応処理（後述する図２０）が行われた後、処理は終了される。
【０２８０】
図１８は、図１６のステップＳ２４９において、DDRリード処理部８２により行われるDDRリード処理を説明するフローチャートである。
【０２８１】
ステップＳ２８１において、DDR確認応答処理部８３によるDDR確認応答処理が行われ、ステップＳ２８２において、DDRリード処理部８２は、その確認応答処理においてACK応答またはNACK応答のどちらが行われたかを判定する。
【０２８２】
ステップＳ２８２において、DDRリード処理部８２が、ACK処理が行われたと判定した場合、処理はステップＳ２８３に進む。ステップＳ２８３において、DDRリード処理部８２は、CCIスレーブ１８から受領したリードデータをI3Cマスタ１２へ送信する。
【０２８３】
ステップＳ２８４において、DDRリード処理部８２は、CCIスレーブ１８から次のリードデータを受領したか否かを判定する。
【０２８４】
ステップＳ２８４において、DDRリード処理部８２が、CCIスレーブ１８から次のリードデータを受領したと判定した場合、処理はステップＳ２８５に進み、プリアンブル（preamble[1]=1’b1）を送信する。
【０２８５】
ステップＳ２８６において、DDRリード処理部８２は、受信したプリアンブル（preamble[0]）の受信は、1’b1または1’b0のどちらであるかを判定する。
【０２８６】
ステップＳ２８６において、DDRリード処理部８２が、1’b1であると判定した場合、処理はステップＳ２８３に戻り、以下、同様の処理が繰り返して行われ、1’b0であると判定した場合、処理は終了される。
【０２８７】
一方、ステップＳ２８４において、DDRリード処理部８２が、CCIスレーブ１８から次のリードデータを受領していないと判定した場合、処理はステップＳ２８７に進む。ステップＳ２８７において、DDRリード処理部８２は、プリアンブル（2’b01）を送信し、ステップＳ２８８においてＣＲＣワードを送信した後、処理は終了される。
【０２８８】
一方、ステップＳ２８２において、DDRリード処理部８２が、NACK処理が行われたと判定した場合、処理は終了される。
【０２８９】
図１９は、図１８のステップＳ２８１において、DDR確認応答処理部８３により行われるDDR確認応答処理を説明するフローチャートである。
【０２９０】
ステップＳ２９１において、DDR確認応答処理部８３は、I3Cスレーブ１３として、上述したリードコマンドに対してACK応答でよいか否かを判定する。例えば、DDR確認応答処理部８３は、コマンドやデータなどを正常に受信することができた場合、ACK応答を行うと判定し、コマンドやデータなどにエラーが発生している場合、ACK応答を行わない（即ち、NACK応答する）と判定する。
【０２９１】
ステップＳ２９１において、DDR確認応答処理部８３が、I3Cスレーブ１３としてACK応答でよいと判定した場合、処理はステップＳ２９２に進む。
【０２９２】
ステップＳ２９２において、エラー対応部８４は、ステップＳ２９１においてDDR確認応答処理部８３によるACK応答でよいとした判定結果に対して、CCIスレーブ１８からNACKに上書きする要求があるか否かを判定する。例えば、CCIスレーブ１８は、上述したようにSS0エラーが解除されるまでは、I3Cの規格によらず、NACKに上書きするように要求する。
【０２９３】
ステップＳ２９２において、エラー対応部８４が、CCIスレーブ１８からNACKに上書きする要求がないと判定した場合、処理はステップＳ２９３に進み、DDR確認応答処理部８３は、ACK応答を行う。
【０２９４】
一方、ステップＳ２９１において、DDR確認応答処理部８３が、I3Cスレーブ１３としてACK応答でよくない（即ち、NACK応答する）と判定した場合、処理はステップＳ２９４に進む。同様に、ステップＳ２９２において、エラー対応部８４が、CCIスレーブ１８からNACKに上書きする要求があると判定した場合、処理はステップＳ２９４に進む。ステップＳ２９４において、確認応答処理部７１は、NACK応答を行った後、処理は終了される。
【０２９５】
図２０は、図１６のステップＳ２５１、並びに、図１７のステップＳ２７１，Ｓ２７２、およびＳ２７４において、エラー対応部８４により行われるフレーミングエラー対応処理を説明するフローチャートである。
【０２９６】
ステップＳ３０１において、エラー対応部８４は、CCIスレーブ１８に、フレーミングエラーを通知し、処理は終了される。
【０２９７】
図２１は、図１６のステップＳ２５０、および、図１７のステップＳ２７３において、エラー対応部８４により行われるパリティエラー対応処理を説明するフローチャートである。
【０２９８】
ステップＳ３１１において、エラー対応部８４は、CCIスレーブ１８に、パリティエラーを通知し、処理は終了される。
【０２９９】
図２２は、図１７のステップＳ２７０において、エラー対応部８４により行われるCRCエラー対応処理を説明するフローチャートである。
【０３００】
ステップＳ３２１において、エラー対応部８４は、CCIスレーブ１８に、CRCエラーを通知し、処理は終了される。
【０３０１】
以上のように、I3Cバス１１を利用したI3C通信システム２１において、スレーブデバイス２３では、I3Cスレーブ１３の階層でエラーを検出すると、そのエラーを検出したワードから、I3Cスレーブ１３が復帰し、SDRモードおよびDDRモードともにスレーブアドレスとライトコマンドとを受信するまで、CCIスレーブ１８の階層は、I3Cスレーブ１３からの一切の受信データを無視する。これは、ライト転送の後には必ず、サブアドレスが付随しているからである。
【０３０２】
なお、本実施の形態の第１の変形例として、例えば、スレーブデバイス２３では、I3Cスレーブ１３がエラーを検出すると、そのエラーを検出したワードからI3Cスレーブ１３が復帰して、CCIスレーブ１８のCCI（I3C SDR）処理部６１およびCCI（I3C DDR）処理部６２がともにスレーブアドレスおよびライトコマンドを受信するまで、I3Cスレーブ１３からの一切の受信データを無視するようにしてもよい。これは、スレーブアドレスおよびライトコマンドの後には必ず、サブアドレスが付随しているからである。
【０３０３】
この間、I3Cスレーブ１３は、I3C規格に沿ってACK応答またはNACK応答を行おうとするが、例外的に、CCI（I3C SDR）のスレーブアドレスおよびリードコマンドの次のACK応答は、CCIスレーブ１８によりNACK応答に上書きされる。このような上書きを行うのは、他の箇所、例えば、７E+Wの次にNACK応答すると、I3Cマスタ１２およびI3Cスレーブ１３が１対１の構成である場合、意図せずに、I3C規格で規定されているM2エラー（No response to Broadcast Address）が検出されて誤動作するからである。なお、必要に応じて、特定のコマンドだけは、NACK応答に上書きしないように実装してもよい。
【０３０４】
また、本実施の形態の第２の変形例として、I3Cバス１１を利用したI3C通信システム２１において、スレーブデバイス２３は、I3Cスレーブ１３の階層でエラーを検出したら、そのエラーを検出したワードからI3Cスレーブ１３が復帰し、SDRモードおよびDDRモードともに次のスタートまたはリスタートと、スレーブアドレスと、ライトコマンドと、インデックスとを受信するまで、CCIスレーブ１８の階層は、I3Cスレーブ１３からの一切の受信データを無視する。この間、I3Cスレーブ１３は、I3C規格に沿ってACK応答またはNACK応答を行おうとするが、例外的に、CCI（I3C SDR）のスレーブアドレスおよびリードコマンドの次のACK応答は、CCIスレーブ１８によりNACK応答に上書きされる。これにより、インデックスは確実に受信することができる。
【０３０５】
＜インデックスのエラー対策について＞
図２３乃至図３２を参照して、インデックスのエラー対策について、さらに説明する。
【０３０６】
まず、図２３を参照して、インデックスのエラーについて説明する。
【０３０７】
図２３には、一例として、CCI(I3C SDR)規格での、ランダムロケーションからのシングルリード（Single Read from Random Location）において発生するS2エラーが示されている。ここで、I3Cスレーブ１３は、I3C規格上のS2エラーをレジスタアドレス（Sub Address[7:0]）の受信中に検出した場合、I3C規格上、次のストップ（Ｐ）またはリスタート（Ｓｒ）を検出するまで、受信信号を一切無視することになる。このため、CCIスレーブ１８は、サブアドレス以降について、図２３に示すように、ストップ（Ｐ）まで一切の信号を受信することができず、インデックスを更新することができない。
【０３０８】
一方、I3Cスレーブ１３は、次のリスタートでS2エラーから復帰し、リードコマンドを受信し、そのリードコマンドをCCIスレーブ１８に通知する。しかしながら、CCIスレーブ１８は、インデックスを更新できなかったため、どのレジスタアドレスに対するリードコマンドであるのか正しく解釈することができない。その結果、以前に設定したレジスタアドレスに対するリードデータをI3Cマスタ１２に送信してしまう恐れがある。
【０３０９】
さらに、インデックスの更新が、以前に設定したレジスタアドレスに基づいて計算されてしまうため、次にカレントリードが続いた場合、そのまま間違ったリードデータをI3Cマスタ１２に送信することになる。即ち、１つのエラーによって連鎖的にエラーが発生してしまうが、その値が誤っていることにI3Cマスタ１２が気付くことは非常に困難である。
【０３１０】
そこで、I3C通信システム２１では、図２４に示すように、SS0エラーの検出方法および復帰方法を定義する。
【０３１１】
例えば、スレーブデバイス２３では、CCIスレーブ１８の階層において新たに定義されるSS0エラーが利用される。即ち、I3Cスレーブ１３は、I3Cで規定されているS0エラー乃至S6エラーの発生を検出すると、それぞれのエラーが発生したことをCCIスレーブ１８に通知し、CCIスレーブ１８は、それまで記憶していたインデックスの情報をクリアする。
【０３１２】
そして、CCIスレーブ１８は、インデックスがクリアされた状態で、I3Cスレーブ１３がリードコマンドを受信した場合、SS0エラーの発生を検出すること（図７のステップＳ７２）ができる。このように、SS0エラーの発生を検出すると、図２４に示すように、CCIスレーブ１８は、ストップまたはリスタートを受信するまで、一切の通信を無視する。
【０３１３】
このとき、I3Cスレーブ１３がACK応答またはNACK応答をする場合には、I3Cの規定によらず、SS0エラーから復帰するまでは、CCIスレーブ１８は、I3Cスレーブ１３に対してNACK応答をするように指令（図７のステップＳ７３）する。
【０３１４】
また、図２５には、ランダムリード中にS2エラーが発生したときのSS0エラーの動作例が示されており、図２６には、ランダムライト中にS2エラーが発生したときのSS0エラーの動作例が示されている。
【０３１５】
図示するように、CCIスレーブ１８は、リスタート（Ｓｒ）の後のリードコマンドを受信する時に、SS0エラーを検出することができるようになるため、誤ったレジスタアドレスに対するリードデータをI3Cマスタ１２に送信することは回避される。
【０３１６】
なお、CCIスレーブ１８は、S2エラーおよびS6エラーに対しては、確実に、インデックスをクリアする必要がある。これに対し、例えば、S0エラーおよびS1エラーに対しては、I3Cマスタ１２が、必ず、NACK応答後にランダムリードを確実に行うように実装されていれば、CCIスレーブ１８は、インデックスをクリアしなくても正常に通信を行うことができる。しかしながら、万が一、I3Cマスタ１２が意図せずにI3C規格に違反した場合に、そのような違反を容易に検出できるようにするため、CCIスレーブ１８は、インデックスをクリアするようにした方が良い。また、S3エラーおよびS5エラーについても同様である。
【０３１７】
また、マスタデバイス２２において、I3Cマスタ１２は、I3Cで規定されているM0エラー乃至M2エラーの発生を検出した場合、または、NACK応答を受信した場合、エラーの検出またはNACK応答の受信をCCI（I3C SDR）処理部５１に通知（図５のステップＳ１４およびＳ１５）する。これに応じて、CCI（I3C SDR）処理部５１は、それまで記憶していたインデックス情報をクリアする。
【０３１８】
さらに、I3Cマスタ１２は、M0エラー乃至M2エラーの検出またはNACK応答の受信をした場合、I3C規格で定める手順に従ってエラーから復帰（図５のステップＳ１７）する。その後、CCI（I3C SDR）処理部５１は、次の転送の開始時には、CCI（SDR）カレントリード（Sequential or Single Read Starting from the Current Location）を使用することを禁止する。即ち、CCIスレーブ１８において、エラー発生時にインデックスがクリアされており、次の転送でカレントリードを使用した場合には、必ずSS0エラーが発生してしまうため、その使用が禁止される。
【０３１９】
図２７には、S0エラーが発生したときの動作例が示されている。
【０３２０】
図２７に示すように、I3Cスレーブ１３においてS0エラーが検出されると、CCIスレーブ１８のインデックスがクリアされる。その後、I3Cスレーブ１３は、I3Cの規格に従ってNACK応答を行い続け、HDR Exitを受信すると、S0エラーが解除される。その後、CCIスレーブ１８は、スレーブアドレスおよびリードコマンドを受信すると、SS0エラーを検出してNACK応答し、ストップ（Ｐ）を受信することで、SS0エラーが解除される。
【０３２１】
図２８には、S1エラーが発生したときの動作例が示されている。
【０３２２】
図２８に示すように、I3Cスレーブ１３は、パリティエラーの発生に応じて、S1エラーの発生を検出し、CCIスレーブ１８のインデックスがクリアされて、I3Cスレーブ１３は、NACK応答を行い続ける。その後、I3Cスレーブ１３が、HDR Exitを受信すると、S1エラーが解除される。そして、CCIスレーブ１８は、スレーブアドレスおよびリードコマンドを受信すると、SS0エラーを検出してNACK応答し、ストップ（Ｐ）を受信することで、SS0エラーが解除される。
【０３２３】
図２９には、S3エラーが発生したときの動作例が示されている。
【０３２４】
図２９に示すように、I3Cスレーブ１３は、パリティエラーの発生に応じて、S3エラーの発生を検出し、CCIスレーブ１８のインデックスがクリアされて、I3Cスレーブ１３は、NACK応答を行う。その後、I3Cスレーブ１３が、リスタート（Ｓｒ）を受信すると、S3エラーが解除される。
【０３２５】
図３０には、S4エラーが発生したときの動作例が示されている。
【０３２６】
図３０に示すように、I3Cスレーブ１３は、例えば、ダイナミックアドレスの割り当てを指示するCCC（ENTDAA）のうちの7E/R以外のアドレスヘッダを受信したとき、そのデータにエラーが発生しているのに応じて、S4エラーの発生を検出し、CCIスレーブ１８のインデックスがクリアされて、I3Cスレーブ１３は、NACK応答を行う。その後、I3Cスレーブ１３が、リスタート（Ｓｒ）を受信すると、S4エラーが解除される。
【０３２７】
図３１には、S5エラーが発生したときの動作例が示されている。
【０３２８】
図３１に示すように、I3Cスレーブ１３は、コモンコマンドコード（GETBCR CCC）を送信するトランザクションが確定した後に、I3Cマスタ１２から送信されてくるデータにエラーが発生しているに応じて、S5エラーの発生を検出する。これに応じて、CCIスレーブ１８のインデックスがクリアされて、I3Cスレーブ１３は、NACK応答を行う。その後、I3Cスレーブ１３が、ストップ（Ｐ）を受信すると、S5エラーが解除される。
【０３２９】
図３２には、S6エラーが発生したときの動作例が示されている。
【０３３０】
図３２に示すように、I3Cスレーブ１３は、I3Cバス１１上の信号がリードデータと一致していないことを検出するのに応じて、S6エラーの発生を検出する。これに応じて、CCIスレーブ１８のインデックスがクリアされて、I3Cスレーブ１３は、リードデータの転送を停止する。
【０３３１】
＜FIFOオーバーフローについて＞
ここで、I3C規格は、例えば、一度の送受信でリードできる最大転送バイト数（MRL：Max Read Length）、および、一度の送受信でライトできる最大転送バイト数（MWL：Max Write Length）を、各I3Cスレーブ１３が定義し、その値をI3Cマスタ１２が取得することができる。しかしながら、I3Cマスタ１２が、意図せず、最大転送バイト数（MWL：Max Write Length）を超えるライトデータを送信した場合、I3Cスレーブ１３では、FIFOがオーバーフローし、正しくレジスタへデータが書き込めないことが想定される。
【０３３２】
例えば、I3Cスレーブ１３は、I3Cマスタ１２から最大転送バイト数（MWL：Max Write Length）を超えたバイト数のライトを要求された場合、I3Cの規格上、I2Cと異なりライト転送を止めることが規定されていないため、受けきれなかったデータは捨てられることになる。そこで、I3Cマスタ１２から最大転送バイト数（MWL：Max Write Length）を超えたバイト数のライトを要求されたことを、I3Cスレーブ１３を検出することができるようにするため、例えばS7エラー（Write overMWL）を定義される。
【０３３３】
このようなS7エラー（Write overMWL）を定義することで、I3Cマスタ１２が、最大転送バイト数（MWL：Max Write Length）を超えたバイト数のライトを要求してきた場合でも、I3Cスレーブ１３は、S7エラーの検出後、受けきれなかったデータを明示的に受信しないことにより、FIFOがオーバーフローすることを回避することができる。即ち、S7エラーが検出されると、リスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、NACK応答が行われる。また、I3Cマスタ１２が、最大転送バイト数（MRL：Max Read Length）を超えるバイト数のリードを要求してきた場合には、I3Cスレーブ１３は、Ｔビットを用いて転送を強制的に終了することができる。
【０３３４】
また、I3Cマスタ１２は、通信を開始する前に、最大転送バイト数の送信を指示するコマンド（GETMRLまたはGETMWL）を用いて、最大転送バイト数（MRLまたはMWL）を取得することができる。なお、ユーザが、各I3Cスレーブ１３のデータシートから最大転送バイト数（MRLまたはMWL）を読み取って、I3Cマスタ１２に対して設定してもよい。
【０３３５】
これにより、I3Cマスタ１２は、最大転送バイト数（MRLまたはMWL）を超えるデータの転送を要求することを防止することができる。なお、I3Cマスタ１２は、最大転送バイト数（MRL）を超えるリードデータがI3Cスレーブ１３から転送されてきた場合、自身の判断に従って、通信を終了させることができる。即ち、I3Cマスタ１２は、最大転送バイト数（MRL）を超えるリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、Ｔビットを用いて通信を終了させ、リスタートまたはストップを送信した後に、エラーを解除することができる。なお、エラーの検出およびインデックスのクリアは、必須ではない。また、I3Cマスタ１２は、この場合でも、そのまま継続して通信を行ってもよく、通信が行えなくなるようなことはない。
【０３３６】
なお、説明は省略するが、TSPモードおよびTSLモードにおいても、上述と同様のエラーの検出方法および復帰方法で通信処理が行われる。
【０３３７】
＜コンピュータの構成例＞
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、単一の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１０４にインストールしたり、更新したりすることができる。
【０３４２】
＜構成の組み合わせ例＞
なお、本技術は以下のような構成も取ることができる。
（１）
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定する上位階層通信処理部と、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有する
通信装置。
（２）
前記下位階層は、
前記主導的な通信装置から送信されてくるライトデータを受信して、前記上位階層へ送付するライト受信処理を行うライト受信処理部と、
前記ライトデータにおけるパリティエラーの発生を検出し、前記上位階層に前記パリティエラーの発生を通知する下位階層エラー対応部と
を有し、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記パリティエラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
上記（１）に記載の通信装置。
（３）
前記下位階層は、前記上位階層から受領したリードデータを、前記主導的な通信装置へ送信するリード受信処理を行うリード受信処理部をさらに備え、
前記下位階層エラー対応部は、前記リードデータの送信中に前記バス上の信号が一致していないことが検出されたことに基づいてエラーの発生を検出し、前記上位階層に前記エラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記エラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
上記（１）または（２）に記載の通信装置。
（４）
前記下位階層エラー対応部は、前記主導的な通信装置から送信されてくる通信のスタートまたはリスタートに続く１ワード目が、禁止アドレスであったことに基づいて、または、前記バスに接続されている全ての従属的な通信装置を対象としたリードコマンドであったことに基づいてエラーの発生を検出し、前記上位階層に前記エラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記エラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
上記（１）から（３）までのいずれかに記載の通信装置。
（５）
前記下位階層エラー対応部は、前記バスに接続されている１または複数の従属的な通信装置に対して一斉に送信されるコモンコマンドコードにおけるパリティエラーの発生を検出し、前記上位階層に前記パリティエラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記パリティエラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
上記（１）から（４）までのいずれかに記載の通信装置。
（６）
前記下位階層エラー対応部は、前記バスに接続されている１または複数の従属的な通信装置に対して一斉に送信されるコモンコマンドコードに従って行われる処理において発生したエラーに基づいて、前記上位階層に前記エラーの発生を通知して、
前記上位階層通信処理部は、前記下位階層エラー対応部による前記エラーの通知に応じて、前記インデックスをクリアし、未定義の状態とする
上記（１）から（５）までのいずれかに記載の通信装置。
（７）
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置が、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定することと、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信方法。
（８）
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置のコンピュータに、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定することと、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信処理を実行させるためのプログラム。
（９）
バスを介した通信を制御する主導的な通信装置であって、
制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にする上位階層通信処理部を有する
通信装置。
（１０）
前記上位階層通信処理部は、前記下位階層によりエラーが検出された後に、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した後に、前記下位階層において通信を復帰した次の転送開始時において、カレントリードの使用を禁止する
上記（９）に記載の通信装置。
（１１）
バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える通主導的な信装置が、
前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にすること
を含む通信方法。
（１２）
バスを介した通信を制御する主導的な通信装置であって、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置置のコンピュータに、
前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にすること
を含む通信処理を実行させるためのプログラム。
（１３）
バスを介した通信を制御する主導的な通信装置と、前記主導的な通信装置による制御に従って通信を行う従属的な通信装置が接続されて構成される通信システムであって、
前記従属的な通信装置は、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
前記主導的な通信装置からリードアクセスが要求されたときに、前記インデックスの状態を判定する上位階層通信処理部と、
前記インデックスの状態に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有し、
前記主導的な通信装置は、
前記従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、前記下位階層によりエラーが検出された場合、または、前記従属的な通信装置から送信されてくるNACK応答を受信したことの報告を受領した場合、内部のインデックスをクリアし、未定義の状態にする上位階層通信処理部を有する
通信システム。
（１４）
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定する上位階層通信処理部と、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有する
通信装置。
（１５）
前記上位階層通信処理部は、一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータの要求を判定し、
前記上位階層エラー対応部は、前記最大転送バイト数を超えるバイト数のリードデータの要求に基づいて、Ｔビットを用いて転送を強制的に終了する
上記（１４）に記載の通信装置。
（１６）
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置が、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定することと、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信方法。
（１７）
バスを介した通信を制御する主導的な通信装置による制御に従って通信を行う従属的な通信装置であって、かつ、前記主導的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える従属的な通信装置のコンピュータに、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定することと、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御することと
を含む通信処理を実行させるためのプログラム。
（１８）
バスを介した通信を制御する主導的な通信装置であって、
制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除する
通信装置。
（１９）
バスを介した通信を制御する主導的な通信装置であって、かつ、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置であって、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除すること
を含む通信方法。
（２０）
バスを介した通信を制御する主導的な通信装置であって、かつ、制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層とを備える主導的な通信装置のコンピュータに、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除すること
を含む通信処理を実行させるためのプログラム。
（２１）
バスを介した通信を制御する主導的な通信装置と、前記主導的な通信装置による制御に従って通信を行う従属的な通信装置が接続されて構成される通信システムであって、
前記従属的な通信装置は、
前記主導的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
前記上位階層は、
一度の送受信でライトできる最大転送バイト数を超えるバイト数のライトデータの受信を判定する上位階層通信処理部と、
前記最大転送バイト数を超えるバイト数のライトデータの受信に基づいてエラーの発生を検出し、前記主導的な通信装置により少なくとも通信のリスタートまたはストップが行われるまでの間、一切の通信を無視するとともに、前記主導的な通信装置から送信されてくる信号に対する確認応答処理を行う際にはNACK応答を行うように、前記下位階層を制御する上位階層エラー対応部と
を有し、
前記主導的な通信装置は、
制御に従って通信を行う従属的な通信装置と前記バスを介して通信を行う下位階層と、
前記下位階層に対して上位となり、インデックスに従ってデータのリードおよびライトを行う上位階層と
を備え、
一度の送受信でリードできる最大転送バイト数を超えるバイト数のリードデータを受信した場合は、エラーを検出するとともにインデックスをクリアし、通信を終了させて、リスタートまたはストップを送信した後に、エラーを解除する
通信システム。
【０３４３】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
【符号の説明】
【０３４４】
１１  I3Cバス，  １２  I3Cマスタ，  １３  I3Cスレーブ，  １４  データ信号線，  １５  クロック信号線，  １６  CCIマスタ，  １７  I3Cドライバ，  １８  CCIスレーブ，  ２１  I3C通信システム，  ２２  マスタデバイス，  ２３  スレーブデバイス，  ３１  エラー対応部，  ３２  ACK確認部，  ４１  I3C（SDR）処理部，  ４２  I3C（DDR）処理部，  ４３  エラー対応部，  ５１  CCI（I3C SDR）処理部，  ５２  CCI（I3C DDR）処理部，  ６１  CCI（I3C SDR）処理部，  ６２  CCI（I3C DDR）処理部，  ６３  エラー対応部，  ７１  確認応答処理部，  ７２  ライト受信処理部，  ７３  CCC受信処理部，  ７４  リード受信処理部，  ７５  HDR開始処理部，  ７６  エラー対応部，  ８１  DDRライト処理部，  ８２  DDRリード処理部，  ８３  DDR確認応答処理部，  ８４  エラー対応部
【図１】
2019033331.tif 000003
【図２】
2019033331.tif 000004
【図３】
2019033331.tif 000005
【図４】
2019033331.tif 000006
【図５】
2019033331.tif 000007
【図６】
2019033331.tif 000008
【図７】
2019033331.tif 000009
【図８】
2019033331.tif 000010
【図９】
2019033331.tif 000011
【図１０】
2019033331.tif 000012
【図１１】
2019033331.tif 000013
【図１２】
2019033331.tif 000014
【図１３】
2019033331.tif 000015
【図１４】
2019033331.tif 000016
【図１５】
2019033331.tif 000017
【図１６】
2019033331.tif 000018
【図１７】
2019033331.tif 000019
【図１８】
2019033331.tif 000020
【図１９】
2019033331.tif 000021
【図２０】
2019033331.tif 000022
【図２１】
2019033331.tif 000023
【図２２】
2019033331.tif 000024
【図２３】
2019033331.tif 000025
【図２４】
2019033331.tif 000026
【図２５】
2019033331.tif 000027
【図２６】
2019033331.tif 000028
【図２７】
2019033331.tif 000029
【図２８】
2019033331.tif 000030
【図２９】
2019033331.tif 000031
【図３０】
2019033331.tif 000032
【図３１】
2019033331.tif 000033
【図３２】
2019033331.tif 000034
【図３３】
2019033331.tif 000035