JPWO2013077012A1 - 通信装置、通信方法、及び通信システム - Google Patents

通信装置、通信方法、及び通信システム Download PDF

Info

Publication number
JPWO2013077012A1
JPWO2013077012A1 JP2013545808A JP2013545808A JPWO2013077012A1 JP WO2013077012 A1 JPWO2013077012 A1 JP WO2013077012A1 JP 2013545808 A JP2013545808 A JP 2013545808A JP 2013545808 A JP2013545808 A JP 2013545808A JP WO2013077012 A1 JPWO2013077012 A1 JP WO2013077012A1
Authority
JP
Japan
Prior art keywords
control unit
data
master device
timer
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013545808A
Other languages
English (en)
Other versions
JP5762561B2 (ja
Inventor
丸山 清泰
清泰 丸山
江角 憲治
憲治 江角
聡 道籏
聡 道籏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2013545808A priority Critical patent/JP5762561B2/ja
Publication of JPWO2013077012A1 publication Critical patent/JPWO2013077012A1/ja
Application granted granted Critical
Publication of JP5762561B2 publication Critical patent/JP5762561B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

コマンドを受信し、解析し、その結果をマスターデバイス(10)に返信する通信装置であるスレーブデバイス(20)であって、制御部を構成するIIC制御部(205)及びCPU(210)は、コマンド解析期間中、SCL信号を停止するように、SCL制御部(201)を制御し、タイマー(206)の値が閾値以下であれば、送信するデータを送信FIFO(203)に保存し、SCL信号を停止させる制御を解除し、SCL信号に同期して、SDA制御部(202)が送信FIFO(203)に保存されているデータを、マスターデバイス(10)に送信し、タイマー(206)の値が閾値を超えていれば、SCL信号を停止させる制御を解除してクロック制御部を前記クロック信号を受信する状態にし、また、SDA制御部(202)をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態に設定する。

Description

本発明は、通信装置、通信方法、及び通信システムに関するものである。
電子機器内におけるデバイス同士のデータ通信規格としてIIC(Inter Integrated Circuit)規格(フィリップス社が開発したシリアル通信規格)がある。IICでは、複数のデバイスは、SCL(シリアルクロック)信号用のSCL信号線とSDA(シリアルデータ)信号用のSDA信号線で接続されており、それぞれの信号線は、抵抗を介して電源によってプルアップされた双方向のオープンコレクタ信号線である。SCL信号線及びSDA信号線で構成されるバスを、「IICバス」と言い、IICバスを用いる通信規格を、「IICプロトコル」と言う。また、IICバスに接続されている複数のデバイスには、SCL信号とSDA信号を制御して他のデバイスを制御することができるマスターデバイスと、マスターデバイスによって制御されるスレーブデバイスとがあり、それぞれのデバイスは、固有のアドレスを有している。また、1つのIICバスには、複数のマスターデバイスと複数のスレーブデバイスとを接続することができる。
IICにおいて、マスターデバイスは、例えば、以下のように動作する。通信を開始する場合、マスターデバイスは、他のデバイスがIICバスにアクセスしていないかを確認する。アクセスが無いことの確認は、IICバスのSCL信号線及びSDA信号線の両方の状態がハイ(high)であることを検出することによって、行うことができる。次に、マスターデバイスは、IICバスにいずれのデバイスもアクセスしていなければ、IICにおけるスタートコンディションを発行し、通信したい相手のアドレスとリード/ライト方向を指定する情報を送信し、相手のスレーブデバイスから応答を受信すれば、次に相手のスレーブデバイスに必要なデータを送信する。この必要なデータは、デバイス間のプロトコルに基づいて決めることができる。IICでは、通信終了時には、マスターデバイスは、ストップコンディションを生成して、SCL信号線及びSDA信号線の両方の状態をハイにする。
また、IICでは、マスターデバイスが、スレーブデバイスにデータを送信し、スレーブデバイスが、データを正しく受け取ったかどうかの応答をマスターデバイスに返信するように構成することもできる。この場合、マスターデバイスは、スタートコンディションを発行し、スレーブデバイスのアドレスとライト(write)方向を指定する情報とを送信し、続いて、データを送信する。次に、マスターデバイスは、再度スタートコンディションを発行して、スレーブアドレスとリード(read)方向を指定する情報を送信し、スレーブデバイスは、そのデータを正しく受信できたかどうかの応答をマスターデバイスに送信する。IIC規格に準拠した通信システムをこのように構成することで、マスターデバイスは、スレーブデバイスにデータが確実に送信できていることを確認することができる(例えば、特許文献1参照)。
また、IICでは、スレーブデバイスが何らかの理由でマスターデバイスからの信号を正常に受信できない、又は、SCL信号線及びSDA信号線のいずれかの状態をロー(low)に固定してしまい、通信不能状態に陥る場合がある。これに対し、IICバスとは別の信号線を用いて、通信不能状態になったスレーブデバイスをリセットするという方法が提案されている(例えば、特許文献2参照)。
特開2009−244991号公報(段落0050−0051、図1) 特開2008−197752号公報(段落0206−0208、図1)
特許文献1の通信システムにおいては、スレーブデバイスがマスターデバイスにデータを送信する場合、その送信データの準備のために、マスターデバイスを待たせる方法として、スレーブデバイスが、SCL信号線をローにドライブする方法が提案されている。しかし、スレーブデバイスが、SCL信号線をローにドライブしてIICバスを占有している期間、すなわち、IICバス上の他の通信装置が通信できない状態にある期間が、例えば、負荷の高い処理をしているために、長くなることがあるという問題点がある。
また、特定のマスターデバイスとスレーブデバイスとの間の通信により、長い期間、IICバスが占有されることは、システム上好ましくないことであるから、特許文献2のように、別の信号線によりスレーブデバイスをリセットすることでIICバスの占有を解除することも可能である。しかし、スレーブデバイスが外部からの信号線を通した信号によりリセットされると、そのリセットされたスレーブデバイスが再起動して、起動処理が完了するまでの期間(長い期間の場合がある)、IICの通信エラーが発生して通信システムの動作が停止するので、IICバス上の他の通信装置が通信できない状態にある期間が、長くなることがあるという問題点がある。
そこで、本発明は、クロック信号線及びデータ信号線からなる同期式シリアル通信用のバスを占有している期間を短縮することができる通信装置、通信方法、及び通信システムを提供することを目的とする。
本発明に係る通信装置は、クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置であって、前記マスターデバイスが、前記スレーブモードで動作する通信装置に通信を開始したことによりスタートするタイマーと、予め決められた閾値を保存するタイマー閾値記憶部と、前記マスターデバイスからの前記クロック信号を前記クロック信号線を通して受信し、及び、前記マスターデバイスからの前記クロック信号を停止させる制御を行うクロック制御部と、前記マスターデバイスに対し、前記データ信号線を通してデータの送受信を行うデータ制御部と、前記データ制御部によって送信されるデータを一時的に保存する送信用一時記憶部と前記マスターデバイスから送信されたコマンドを解析するコマンド解析部と、制御部とを有し、前記制御部は、前記マスターデバイスが前記コマンド解析部の解析結果を返信することを求めたときに、前記コマンド解析部がコマンドを解析している期間中、前記マスターデバイスが前記クロック信号を停止するように、前記クロック制御部を制御し、前記タイマーの値を前記タイマー閾値記憶部に記憶されている閾値と比較し、前記比較の結果、前記タイマーの値が前記閾値以下であれば、送信するデータを前記送信用一時記憶部に保存し、前記クロック制御部による前記クロック信号を停止させる制御を解除し、前記クロック制御部が受信する前記クロック信号に同期して、前記データ制御部が前記送信用一時記憶部に保存されているデータを、前記マスターデバイスに送信し、前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にすることを特徴とする。
本発明に係る通信方法は、クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置における通信方法であって、前記マスターデバイスが、前記スレーブモードで動作する通信装置に通信を開始したことによりタイマーをスタートするステップと、クロック制御部が、前記マスターデバイスからの前記クロック信号を、前記クロック信号線を通して受信し、又は、前記マスターデバイスからの前記クロック信号を停止させる制御を行うステップと、データ制御部が、前記マスターデバイスに対し、前記データ信号線を通してデータの送受信を行うステップと、前記データ制御部によって送信されるデータを送信用一時記憶部に一時的に保存するステップと、前記マスターデバイスから送信されたコマンドを解析するステップとを有し、前記マスターデバイスが前記コマンドの解析結果を返信することを求めたときに、前記コマンドを解析している期間中、前記マスターデバイスが前記クロック信号を停止するように制御し、前記タイマーの値をタイマー閾値記憶部に予め記憶されている閾値と比較し、前記比較の結果、前記タイマーの値が前記閾値以下であれば、送信するデータを前記送信用一時記憶部に保存し、前記クロック信号を停止させる制御を解除し、前記受信するクロック信号に同期して、前記送信用一時記憶部に保存されているデータを、前記マスターデバイスに送信し、前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にすることを特徴とする。
本発明に係る通信装置、通信方法、及び通信システムによれば、クロック信号線及びデータ信号線からなる同期式シリアル通信用のバスを占有している期間を短縮することができるので、同期式シリアル通信用のバス上の他の通信装置が通信できない状態にある期間を減らすことができるという効果がある。
本発明の実施の形態1に係る通信装置及び通信システムの構成を概略的に示すブロック図である。 実施の形態1におけるマスターデバイスとスレーブデバイスとの間のIIC通信を示す図である。 (a)〜(c)は、図2のIIC通信における波形の一例を示すタイミング図である。 実施の形態1におけるマスターデバイスの処理を示すフローチャートである。 実施の形態1におけるスレーブデバイスの処理を示すフローチャート(その1)である。 実施の形態1におけるスレーブデバイスの処理を示すフローチャート(その2)である。 図5の受信処理ルーチンの内容を示すフローチャートである。 本発明の実施の形態2におけるスレーブデバイスの処理を示すフローチャート(その1)である。 実施の形態2におけるスレーブデバイスの処理を示すフローチャート(その2)である。 本発明の実施の形態4におけるスレーブデバイスの処理を示すフローチャート(その1)である。 実施の形態4におけるスレーブデバイスの処理を示すフローチャート(その2)である。
実施の形態1.
図1は、本発明の実施の形態1に係る通信装置及び通信システムの構成を概略的に示すブロック図である。図1において、通信システムは、マスターモードで動作する通信装置としてのマスターデバイス10と、スレーブモードで動作する通信装置としてのスレーブデバイス20とを有する。マスターデバイス10は、同期式のシリアル通信規格(本実施の形態においては、IIC規格)に準拠したマスターデバイスであり、スレーブデバイス20は、同期式のシリアル通信規格(本実施の形態においては、IIC規格)に準拠したスレーブデバイスである。マスターデバイス10及びスレーブデバイス20は、IICのクロック信号であるSCL信号を伝送するSCL信号線(同期式のシリアル通信規格におけるクロック信号線)30と、IICのデータ信号であるSDA信号を伝送するSDA信号線(同期式のシリアル通信規格におけるデータ信号線)31とに接続されている。マスターデバイス10とスレーブデバイス20とは、SCL信号線30とSDA信号線31とを用いることによって互いに通信可能である。SCL信号及びSDA信号は、オープンコレクタ信号であるので、SCL信号線30及びSDA信号線31はそれぞれ、抵抗32,33を介して電源電圧にプルアップされている。電源電圧は、一般的に、+3.3V又は+5Vが使用されるが、他の電圧であってもよい。図1では、1つのIICバス(SCL信号線及びSDA信号線で構成される)に1台のマスターデバイス10と1台のスレーブデバイス20とが接続されている場合を示しているが、1つのIICバスには、複数のマスターデバイスと複数のスレーブデバイスとを接続することができる。なお、図1に示される通信装置であるスレーブデバイス20は、実施の形態1における通信方法を実施することができる装置である。
次に、マスターデバイス10の構成を説明する。図1に示されるように、マスターデバイス10は、クロック制御部としてのSCL制御部101と、データ制御部としてのSDA制御部102と、送信用データ一時記憶部としての送信FIFO103と、受信用データ一時記憶部としての受信FIFO104と、送受信制御部としてのIIC制御部105と、タイマー106と、タイマー閾値記憶部107と、CPU(中央演算処理装置)110と、リードオンリーメモリ(ROM)111と、ランダムアクセスメモリ(RAM)112と、演算処理部113とを有する。なお、本出願において、CPU110とIIC制御部105とを含む構成を、マスターデバイス10の「制御部」120とも言う。
SCL制御部101は、SCL信号線のハイ/ロー制御(ハイ又はローにドライブする制御)と、SCL信号線30の状況(ハイ又はローのいずれの状態か)の読み出しとを行う。SDA制御部102は、SDA信号のハイ/ロー制御(ハイ又はローにドライブする制御)と、SDA信号線31の状況(ハイ又はローのいずれの状態か)の読み出しとを行う。
送信FIFO103は、SDA制御部102からデータを送信するときに、そのデータを一時的に保存する。受信FIFO104は、SDA制御部102で受信したデータを一時的に保存する。
IIC制御部105は、SCL制御部101、SDA制御部102、送信FIFO103、及び受信FIFO104を制御する。IIC制御部105は、IICの送信及び受信を行うときに、これらを制御して通信を行う。また、タイマー閾値記憶部107は、タイマー106の値と比較するための閾値を記憶する。IIC制御部105は、タイマー106の開始、停止、初期化を制御し、及び、タイマー閾値記憶部107に記憶されている閾値を参照する。
CPU110は、マスターデバイス10の制御を行う。CPU110は、プログラムを記憶したROM111と、プログラムを実行するためのRAM112、及び、演算処理を行う演算処理部113とともにマスターデバイス10の動作を制御する。CPU110は、ROM111に記録されたプログラムを、RAM112を用いて実行し、IIC制御部105を制御して、IICバスへのデータの書込みや、IICバスからのデータの読み出しを行う。演算処理部113は、例えば、グラフィックスの処理や圧縮された映像信号のエンコード処理及びデコード処理等を行う。
次に、スレーブデバイス20の構成を説明する。図1に示されるように、スレーブデバイス20は、クロック制御部としてのSCL制御部201と、データ制御部としてのSDA制御部202と、送信用データ一時記憶部としての送信FIFO203と、受信用データ一時記憶部としての受信FIFO204と、送受信制御部としてのIIC制御部205と、タイマー206と、タイマー閾値記憶部207と、CPU210と、ROM211と、RAM212と、演算処理部213と、コマンド解析部214と、スレーブアドレス記憶部215とを有する。なお、本出願において、CPU210とIIC制御部205とを含む構成を、スレーブデバイス20の「制御部」220とも言う。
SCL制御部201は、SCL信号線のハイ/ロー制御(ハイ又はローにドライブする制御)と、SCL信号線30の状況(ハイ又はローのいずれの状態か)の読み出しとを行う。SDA制御部202は、SDA信号のハイ/ロー制御(ハイ又はローにドライブする制御)と、SDA信号線31の状況(ハイ又はローのいずれの状態か)の読み出しとを行う。
送信FIFO203は、SDA制御部202からデータを送信するときに、そのデータを一時的に保存する。受信FIFO204は、SDA制御部202で受信したデータを一時的に保存する。スレーブアドレス記憶部215は、スレーブデバイス20のアドレス(「スレーブアドレス」と言う)を記憶する。SDA制御部202は、マスターデバイス10から送信されたスレーブアドレスを受信したときに、受信したスレーブアドレスが、スレーブアドレス記憶部215に記憶されているスレーブアドレスと一致しているかどうかを判定する。
IIC制御部205は、SCL制御部201、SDA制御部202、送信FIFO203、及び受信FIFO204を制御する。IIC制御部205は、IICの送信及び受信を行うときに、これらを制御して通信を行う。また、タイマー閾値記憶部207は、タイマー206の値(タイマーの動作開始からの経過時間に応じた値)と比較する閾値を記憶する。IIC制御部205は、タイマー206の動作の開始及び停止、初期化、並びに、タイマー閾値記憶部207に記憶されている閾値の参照を行う。
CPU210は、スレーブデバイス20の制御を行う。CPU210は、プログラムを記憶したROM211と、プログラムを実行するためのRAM212、及び、演算処理を行う演算処理部213とともにスレーブデバイス20を制御する。CPU210は、ROM211に記録されたプログラムを、RAM212を用いて実行し、IIC制御部205を制御して、IICバスにデータの書込みや、IICバスからのデータの読み出しを行う。また、演算処理部213は、例えば、グラフィックスの処理や圧縮された映像信号のエンコード処理及びデコード処理等を行う。
コマンド解析部214は、マスターデバイス10からスレーブデバイス20に送信されたコマンドを解析し、その解析の結果として、OKのデータ(コマンドを正しく解釈できたことを示すデータ)又はNGのデータ(コマンドの解釈に失敗したことを示すデータ)を返信する。
次に、マスターデバイス10及びスレーブデバイス20の動作について説明する。例えば、マスターデバイス10は、スレーブデバイス20に、3バイトのデータからなるコマンドを送信し(すなわち、マスターデバイス10によるライト処理を行い)、スレーブデバイス20は、そのコマンドを受け取り、コマンド内容を解釈して、コマンドを正しく解釈できた場合には、OKのデータを、コマンドの解釈が失敗した場合には、NGのデータを返信する(すなわち、マスターデバイス10によるリード処理を行う)。
図2は、実施の形態1におけるマスターデバイス10とスレーブデバイス20との間のIIC通信の流れを示す図である。まず、マスターデバイス10は、ライト(write)処理を行うために、スレーブデバイス20のスレーブアドレス7ビットと、ライト制御を行うことを示したビット(「ライト制御ビット」とも言う)とを含む8ビットのデータを、スレーブデバイス20に送信する(ステップS301)。IICプロトコルでは、通信装置としてのデバイスは、自身のアドレスに合致するスレーブアドレスを受信した場合に、スレーブデバイスとして動作するために、ACK(ACKnowledgement)信号を返信する(ステップS302)。
次に、マスターデバイス10は、8ビットのデータ1を送信し(ステップS303)、スレーブデバイス20は、その8ビットのデータを正しく受信できれば、ACK信号を返信する(ステップS304)。同様に、マスターデバイス10は、データ2を送信し、スレーブデバイス20からACK信号を受信し、さらに、データ3を送信し、スレーブデバイス20からACK信号を受信する(ステップS305〜S308)。以上の処理によって、マスターデバイス10からスレーブデバイス20へのライト処理についての、コマンド送信が完了する。
次に、マスターデバイス10は、先のライト処理で送信したコマンドに対するスレーブデバイス20の応答を確認するためのリード(read)処理を行うために、再度、スレーブアドレス20のスレーブアドレス7ビットと、リード制御を行うことを示したビット(「リード制御ビット」とも言う)とを含む8ビットのデータをスレーブデバイスに送信する(ステップS309)。
これに対して、スレーブデバイス20は、受信したアドレスが自身のアドレスに合致するため、ACK信号を返信し(ステップS310)、さらに、マスターデバイス10に対して、OKのデータ又はNGのデータを送信する(ステップS311)。この処理は、マスターデバイス10がスレーブデバイス20のデータを読み取るリード処理である。例えば、スレーブデバイス20は、OKのデータを“0x05”とし、NGのデータを、“0xA0”として返信する。マスターデバイス10は、OKのデータとしての“0x05”、又は、NGのデータとしての“0xA0”を受信して、スレーブデバイス20にACK信号を返して通信処理を終了する(ステップS312)。
図3(a)〜(c)は、図2のIIC通信における波形の一例を示すタイミング図である。図3(a)は、図2におけるステップS301〜S304に対応し、図3(b)は、図2におけるステップS305〜S308に対応し、図3(c)は、図2におけるステップS309〜S312に対応する。図3(a)〜(c)において、IICの初期状態は、SCL信号線30及びSDA信号線31の両方がハイ(high)の状態である(図3(a)の330の状態)。このときに、マスターデバイス10は、ライト処理を行うために、まず、SCL制御部101及びSDA制御部102が、SCL信号線30及びSDA信号線31の状態をそれぞれ確認して、IICバス上にアクセスしているデバイスがないことを確認する。
次に、SDA制御部102は、SDA信号線31をロー(low)にし、SCL制御部101は、SCL信号線30をローにする。これにより、IICバスは、スタートコンディションとなる(図3(a)の331)。その後、SCL制御部101は、SCL信号線30のハイ/ロー制御を行うことによってクロック波形を供給し、SDA制御部102は、SCL信号線30の制御に同期して、通信相手のデバイスのスレーブアドレスを示す7ビットのデータを送信する(図3(a)の332)。さらに、マスターデバイス10は、ライト制御ビットを送信する(ロー信号、図3(a)の333)。スレーブアドレスが合致したスレーブデバイス20は、SCL信号線30が次にハイになるときに、ACK信号を返信する(図3(a)の334)。図3(a)の例では、ACK信号は、ロー信号である。
IIC信号はプルアップされたオープンコレクタ信号であるため、マスターデバイス10が送信したスレーブアドレスに一致したスレーブアドレスを持つデバイス(通信装置)が存在しない場合には、いずれのデバイスもSDA信号線31をローにドライブしないため、SDA信号線31はハイとなる。スレーブアドレスに一致したアドレスのデバイス(例えば、スレーブデバイス20)があると、そのデバイスがSDA信号線31をローにドライブするので、マスターデバイス10は、スレーブデバイス20がIICバス上に存在することを確認することができる。また、スレーブデバイス20は、SDA制御部202がマスターデバイス10からのスレーブアドレスを受信して、受信したスレーブアドレスがスレーブアドレス記憶部215に記憶されているスレーブアドレスと一致する場合に、ACK信号を送信し(すなわち、SDA信号線31をローにし)、一致しない場合には、何も送信しない(SDA信号線31に対して何もしない)。
次に、マスターデバイス10は、ライト処理としてデータ1の送信を行い(図3(a)の341)、データ1を受信したスレーブデバイス20は、ACK信号を返信する(図3(a)の342)。次に、マスターデバイス10は、データ2を送信し(図3(b)の351)、スレーブデバイス20は、ACK信号を返信し(図3(b)の352)、マスターデバイス10は、データ3を送信し(図3(b)の361)、スレーブデバイス20は、ACK信号を返信する(図3(b)の362)。ここで、マスターデバイス10からのデータの送信は終了し、マスターデバイス10は、スレーブデバイス20からのOKのデータ又はNGのデータの返信を受けるためのリード処理を行うために、一旦スタートコンディション(「リスタートコンディション」とも言う。)を生成する(図3(c)の371)。
そして、マスターデバイス10は、再度、スレーブアドレスを示す7ビットのデータを送信し(図3(c)の381)、マスターデバイス10がリード制御ビット(ハイ信号、図3(c)の382)を送信する。スレーブデバイス20は、自身のアドレスに合致するので、ACK信号としてロー信号を返信する(図3(c)の383)。
次に、IICバスが待ち状態(図3(c)の390)のときに、スレーブデバイス20は、先にマスターデバイス10から送信されたデータ1、データ2、データ3からなるコマンドを解釈して、OKのデータ又はNGのデータ(“0x05”又は“0xA0”)をマスターデバイス10に返信する(図3(c)の391)。マスターデバイス10は、OK又はNGのデータを受信して、スレーブデバイス20に対してACK信号の返信を行う(図3(c)の392)。
次に、マスターデバイス10は、SDA信号線31を一旦ローにした後、SCL信号線30及びSDA信号線31の両方をハイにすることによって、ストップコンディションを生成し(図3(c)の395)、IIC通信を終了する。SCL信号線30は、通常は、マスターデバイス10のSCL制御部101によって制御されるが、スレーブデバイス20によるデータ送信の準備ができていないときには、スレーブデバイス20のSCL制御部201がSCL信号線30をローにドライブする。このとき、マスターデバイス10のSCL制御部101は、SCL信号線30のハイ/ロー制御を行うことができない状態になることを認識でき、マスターデバイス10は、スレーブデバイス20が待ち状態になっていることを、認識することができる。図3(c)においては、待ち状態390の部分で、スレーブデバイス20がSCL信号線30をドライブして待ち状態になることがある。
また、上記のように、マスターデバイス10がライト処理でコマンドを送信し、リスタートコンディションを発行して、リード処理に変わってスレーブデバイス20のコマンドに対する応答を確認するところまで一連のIIC通信処理として実行でき、通信のセッションが明確になるため、マスターデバイス10が送信したコマンドに対するスレーブデバイス20のOK又はNGのデータの応答を確実に返信することができる。
なお、IICプロトコルでは、ライト処理とリード処理をそれぞれ単独で使用してもよいが、実施の形態1では、マスターデバイス10が送信したコマンドに対して、確実にスレーブデバイス20が応答するために、ライト処理とリード処理を組み合わせている。
次に、マスターデバイス10が行う一連のIIC通信の動作を、図1、図4、図5、図6及び図7を用いて説明する。図1において、マスターデバイス10のCPU110は、ROM111に記録されているプログラムに基づいて、IIC通信の処理を実行する。図4は、実施の形態1におけるマスターデバイス10の処理を示すフローチャートである。また、図5及び図6は、実施の形態1におけるスレーブデバイス20の処理を示すフローチャートであり、CPU210が、ROM211の記録されているプログラムに基づいて、上記IIC通信の処理を行う場合の処理が示されている。また、図7は、図5の受信処理ルーチンの内容を示すフローチャートである。
図4に示されるように、まず、CPU110は、処理を開始すると(ステップS401)、ROM111のプログラムに基づいて、IIC制御部105に対して、タイマー106のスタートを指示する(ステップS402)。次に、CPU110は、IIC制御部105に対して、スタートコンディションを生成するように指示し、IIC制御部105は、SCL制御部101とSDA制御部102を制御して、IICバスが解放されていることを確認し、スタートコンディションを生成する(ステップS403)。
次に、CPU110は、IIC制御部105に対して、スレーブアドレスを送信し(ステップS404)、マスターデバイス10がライト処理を行うことを示すライト制御ビットを送信するようにIIC制御部105に対して指示する(ステップS405)。IIC制御部105は、送信FIFO103に、スレーブアドレスとライト制御ビットとで構成される8ビットのデータを書き込む。そして、SDA制御部101は、送信FIFO103からデータを読み出し、SCL制御部101によるSCL信号線30の制御と同期して、SDA信号線31の制御を行うことで、スレーブアドレスとライト制御ビットとを送信する。
次に、CPU110は、IIC制御部105を制御して、ACK信号を受信したかどうかを確認し(ステップS406)、ACK信号を受信していない場合は、ストップコンディションを生成して(ステップS407)、IIC通信を終了する(ステップS408)。ACK信号を受信している場合は、CPU110は、N=0として(ステップS409)、IIC制御部105にデータを書き込み、IIC制御部105は、送信FIFO103にデータを送信し、SDA制御部101は、送信FIFO103からデータを読み出して、SCL制御部101によるSCL信号線30の制御と同期して、データの送信を行う(ステップS410)。
そして、CPU110は、IIC制御部105を制御して、ACK信号を受信したかどうかを確認し(ステップS411)、ACK信号を受信していない場合は、ストップコンディションを生成して(ステップS407)、IIC通信を終了する(ステップS408)。CPU110は、ACK信号を受信している場合は、IIC制御部105を制御して、タイマー106を確認し(ステップS412)、タイマー106の値がタイマー閾値記憶部107に予め記憶されている閾値以下かどうか確認する(ステップS413)。この閾値は、IIC通信を完了するためには十分に長い時間であって、かつ、IIC通信が終了しないことによって通信システムの他の利用者に悪影響を与えることがない程度に短い時間であることが望ましい。タイマー106の値がタイマー閾値記憶部107の閾値を超えているときには、CPU110は、IIC制御部105を制御して、IICバスの通信や、スレーブデバイス20の処理に何らかの問題があり、システムに影響を与えると判断して、SCL制御部101及びSDA制御部102に、ストップコンディションの発行を行わせ(ステップS407)、IIC通信を終了する(ステップS408)。
次に、CPU110は、N=N+1(ステップS414)として、N>Mであるか否かの確認(ステップS415)を行い、N≦Mであれば、再度、ステップS410に処理を戻して、データの送信を行う。実施の形態1においては、M=3である。ステップS415でN>Mとなると、CPU110は、リード処理を行うために、IIC制御部115にスタートコンディションを発行するように指示し、IIC制御部105は、SCL制御部101及びSDA制御部102を制御して、再度、スタートコンディション(「リスタートコンディション」とも言う)を生成する(ステップS416)。
そして、CPU110は、IIC制御部105に対してスレーブアドレスの送信(ステップS417)と、マスターデバイス10がリード処理を行うことを示すリード制御ビットを送信するように指示する(ステップS418)。IIC制御部105は、送信FIFO103にスレーブアドレスとリード制御ビットとで構成される8ビットのデータを書き込む。そして、SDA制御部101は、送信FIFO103からデータを読み出し、SCL制御部101によるSCL信号線30の制御と同期して、SDA信号線31の制御を行うことで、スレーブアドレスとリード制御ビットを送信する。
次に、CPU110は、IIC制御部105を制御して、ACK信号を受信したかどうかを確認し(ステップS419)、ACK信号を受信していなければ、SCL制御部101及びSDA制御部102にストップコンディションを生成させ(ステップS420)、IIC通信を終了する(ステップS421)。ステップS419でACK信号を受信している場合は、CPU110は、IIC制御部105を制御して、タイマー106の値を確認し(ステップS422)、タイマー106の値が、タイマー閾値記憶部107に予め記憶されている閾値以下であるかどうかを確認する(ステップS423)。CPU110は、タイマー106の値が閾値を超えているときは、スレーブデバイス20の処理に何らかの問題があり、通信システムに影響を与えると判断して、IIC制御部105を制御して、SCL制御部101及びSDA制御部102にストップコンディションを発行させ(ステップS420)、IIC通信を終了する(ステップS421)。
CPU110は、タイマー106の値が閾値を超えていなければ、IIC制御部105を制御して、データ受信したかを確認する(ステップS424)。データ受信に際しては、SCL制御部101がクロック制御を行い、SDA制御部102が、SCL信号線30のハイ/ローに同期して、データを受信して、受信FIFO104にデータを書き込む。CPU110は、IIC制御部105を制御して、受信FIFO104にデータが書き込まれたことを検知する。CPU110は、IIC制御部105を介して、受信FIFO104のデータを読み出す。この受信FIFO104のデータは、送信したコマンドが、スレーブデバイス20で、正しく解釈されたことを示す「OK」のデータ(“0x05”)か、又は、正しく解釈されなかったことを示す「NG」のデータ(“0xA0”)である。データを受信していなければ、CPU110は、再び、処理をステップS422に戻す。
このデータを受信して、CPU110は、IIC制御部105を制御し、SCL制御部101とSDA制御部102を制御してストップコンディションを生成させ(ステップS425)、IIC通信を終了する(ステップS426)。
次に、スレーブデバイス20の処理を、図5及び図6を用いて、CPU210が、ROM211に記録されているプログラムに基づいて、上記IIC通信を行う場合を説明する。また、なお、図7には、図5の受信処理ルーチン(ステップS509)の内容が示されている。スレーブデバイス20は、マスターデバイス10からのアクセスが、いつ行われるかわからないため、常時、受信できる状態である必要がある。また、スレーブデバイス20のCPU210は、IIC制御部205及びSDA制御部202を介して、スレーブアドレス記憶部215に、スレーブデバイス20のスレーブアドレスを予め記憶させている。
IIC通信は、SCL制御部201及びSDA制御部202が、マスターデバイス10からの信号変化(SCL信号線30及びSDA信号線31の状態のハイ又はローへの変化)を受信することで、開始する(ステップS501)。マスターデバイス10がIICバスをスタートコンディションにして、最初に送信するデータは、スレーブアドレスと、ライト制御ビット又はリード制御ビットとを含んでいるため、SDA制御部202は、スタートコンディションを検出(ステップS502)して、スレーブアドレスを受信する(ステップS503)。IIC制御部205は、受信したスレーブアドレスを、スレーブアドレス記憶部215に記憶されているスレーブアドレスと比較して、これらが一致するかどうかを判定する(ステップS504)。IIC制御部205は、これらが一致しなければ、IIC通信を終了する(ステップS505)。
受信したスレーブアドレスが、スレーブアドレス記憶部215に記憶されているスレーブアドレスと一致している場合には、CPU210は、IIC制御部205を制御して、ACK信号を返信し(ステップS506)、タイマー206をスタートする(ステップS507)。ここで、タイマー206は、一旦、値を初期値にしてから(初期化してから)、動作(例えば、経過時間を示す値を増加させる動作)を開始する。
次に、CPU210は、IIC制御部205を制御して、スレーブアドレスとともに送信されてくるライト制御ビット又はリード制御ビットの判定を行う(ステップS508)。ここで、ライト制御ビットが設定されている場合、マスターデバイス10からスレーブデバイス20へのライト処理になり、リード制御ビットが設定されていれば、マスターデバイス10はスレーブデバイス20からデータをリードする処理を行う。
CPU210は、ライト処理の場合、IIC制御部205を制御して、受信処理ルーチンを実行する(ステップS509)。受信処理ルーチンでは、図7のステップS550で処理を開始し、N=0とする(ステップS551)。次に、CPU210は、IIC制御部205を制御して、データ受信を行い(ステップS552)、正しくデータを受信できたかどうかを確認し(ステップS553)、正しく受信できていなければ、受信処理ルーチン終了フラグを立てる(ステップS554)。CPU210は、IIC制御部205を制御して、正しくデータを受信できていれば、ACK信号を返信し、データを受信FIFO204に送信し(ステップS555)、N=N+1とする(ステップS556)。図7において、Nは、受信したデータのバイト数に一致する。
なお、受信FIFO204のデータは、CPU210がIIC制御部205を介して、RAM212に順次転送するが、CPU210が他の処理で、受信FIFO205からのデータ読み出しを行うことができない場合、IIC制御部205は、SCL制御部201に対して、SCL信号線30をローにドライブするように制御し、マスターデバイス10のSCL制御部101が行うSCL信号線30のハイ/ロー制御(すなわち、SCL信号線30のクロック動作)を止めることができる。IIC制御部205は、受信FIFO204のデータがCPU210によって、RAM212にコピーされ、受信FIFO204の容量に空きができたら、SCL制御部201によるSCL信号線30のロー制御を解除し、受信動作を再開する。
次に、CPU210は、受信が正しく終了して、IIC制御部205を制御して、IICバスがストップコンディションになっているかを確認する(ステップS557)。CPU210は、受信が正しく終了して、IICバスがストップコンディションになっていれば、受信処理ルーチン終了フラグを立てる(ステップS558)。また、CPU210は、受信が正しく終了せず、IICバスがストップコンディションになっていなければ、IICバスが、リスタートコンディションになっているかを確認する(ステップS559)。CPU210は、IICバスが、リスタートコンディションになっていれば、受信処理ルーチン終了フラグを立てて、受信処理ルーチンを終了する(ステップS560)。CPU210は、IICバスが、リスタートコンディションになっていなければ(ステップS559)、データ受信を行うために、処理をステップS552に戻す。
CPU210は、IIC制御部205を制御して、受信処理ルーチンを実行しながら、図5のステップS510で、受信処理ルーチン終了フラグが立ったかを確認する。ここで、受信処理ルーチン終了フラグが立っていれば、CPU210は、IIC制御部205を制御して、IICバスに、リスタートコンディションが発生していたかどうかを再度確認し(ステップS511)、IICバスに、リスタートコンディションではなく、ストップコンディションが発生していれば、処理を終了する(ステップS513)。また、CPU210は、IIC制御部205を制御して、IICバスに、リスタートコンディションが発生していれば、受信したデータで構成されるコマンドの解析をコマンド解析部214に開始させ(ステップS512)、処理をスレーブアドレスの受信のステップに戻す(ステップS503)。
CPU210は、受信FIFO204に保存されたマスターデバイス10から送信されたデータをIIC制御部205を介して読み出し、コマンド解析部214にこのデータのコマンド解析を実行させる。コマンド解析において、先の受信処理ルーチン(ステップS509)でカウントされたNは、受信したバイト数であるから、コマンド解析部214は、例えば、マスターデバイス10から送信され受信したデータの中に、送信バイト数を指定するパラメータを用意して、そのパラメータと、Nを比較することで、受信したデータの数に問題がないかどうかの判断をすることができる。
コマンド解析は、コマンド解析部214で実行されるが、スレーブデバイス20において、例えば、演算処理部213の処理が重くなることにより、コマンド解析部214の処理に時間がかかることがある。
CPU210は、ステップS510で受信処理ルーチン終了フラグが立っているかを確認し、立っていなければ、タイマー206の値の確認を行う(ステップS514)。CPU210は、IIC制御部205を制御して、タイマー206の値がタイマー閾値記憶部207に予め記憶された閾値を超えていないか確認する(ステップS515)。この閾値は、IIC通信を完了するためには十分に長い時間であって、かつ、IIC通信が終了しないことによって通信システムの他の利用者に悪影響を与えることがない程度に短い時間であることが望ましい。
CPU210は、タイマー206の値が閾値を超えているときは、マスターデバイス10のライト処理に何らかの問題があり、システムに影響を与えると判断して、IIC制御部205を制御して、送信FIFO203と受信FIFO204をクリアし(ステップS516)、SCL制御部201、SDA制御部202を初期状態に変更して(ステップS517)、IIC通信を終了する(ステップS518)。言い換えれば、タイマー206の値が閾値を超えていれば、CPU210は、IIC制御部205を制御して、送信FIFO203と受信FIFO204をクリアし(ステップS516)、SCL制御部201によるクロック信号を停止させる制御を解除してSCL制御部201をクロック信号を受信する状態(クロック受信可能な状態)にし、また、SDA制御部202をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態(スレーブアドレスを受信可能な状態)にする。
また、CPU210は、ステップS514で、タイマー206の値が閾値を越えていない場合は、IIC制御部205を制御して、再度ステップS510に戻り、受信処理ルーチン終了フラグが立ったかを確認し、受信処理ルーチンが終了したか確認する。
以上のように、マスターデバイス10からのライト処理に対するスレーブデバイス20の処理は、コマンド解析を開始して(ステップS512)、リスタートコンディションが発生していて、再度ステップS503に移行するか、タイマー206の値が閾値を越えて送信FIFO203及び受信FIFO204をクリア(ステップS516)、SCL制御部201及びSDA制御部202を初期状態に変更して(ステップS517)、処理を終了する(ステップS518)かのいずれかである。
この終了処理(ステップS518)を実行後、スレーブデバイス20では、いつマスターデバイス10から次のスタートコンディションが送信されるか分からないので、ステップS501から処理を開始し、IICバスがスタートコンディションにならないか確認する。
次に、スレーブデバイス20が、マスターデバイス10からリード制御ビットが設定されたときの動作を説明する。なお、実施の形態1では、マスターデバイス10が送信したコマンドに対して、スレーブデバイス20が応答するために、マスターデバイスのライト処理後に、リスタートコンディションで、リード処理を行う例を示す。
まず、SCL制御部201とSDA制御部202が、マスターデバイス10からの信号(SCL信号線30及びSDA信号線31のハイ又はローへの変化)を受信する。マスターデバイス10がIICバスをスタートコンディション、又は、リスタートコンディションにした後に送信するデータには、スレーブアドレス20と、リード制御ビットを含んでいるため、SDA制御部202は、スタートコンディション又はリスタートコンディションを検出(ステップS502)して、スレーブアドレスを受信する(ステップS503)。既にライト処理を実行している場合には、受信処理ルーチンのステップS559や、ステップS511でリスタートコンディションを検出しているので、CPU210は、スレーブアドレスの受信(ステップS503)から処理を進める。
CPU210は、受信したスレーブアドレスと、スレーブアドレス記憶部215に記憶されているスレーブアドレスを比較して、一致するかどうか判定する(ステップS504)。もし一致しなければ、CPU210は、通信処理を終了する(ステップS505)。CPU210は、スレーブアドレスが一致している場合には、IIC制御部205を制御してACK信号を返信し(ステップS506)、タイマー206をスタートさせる(ステップS507)。ここで、タイマー206は、開始していなければ一旦初期化して開始する。本実施の形態ではリスタートコンディションで、リード処理が実行されているので、既にライト処理が実行された後であり、タイマー206は既にスタートしているので、ここでは改めてスタートしない。
次に、CPU210は、スレーブアドレスとともに送信されているデータが、ライト制御ビットであるかリード制御ビットであるかの判定を行う(ステップS508)。ここで、リード制御ビットが設定されているので、CPU210は、マスターデバイス10にデータを送信するための準備を開始するが、スレーブデバイス内で先のコマンド解析処理を行い、その解析処理が終了するまでは、OK又はNGのデータのいずれを送信すべきか決定できない。そのため、まず、CPU210は、IIC制御部205を制御して、SCL信号線30をローにドライブすることで、マスターデバイス10のSCL制御部101が制御するSCL信号線30をハイ又はローにする制御、すなわち、IICのクロック信号を変化させる処理を止める(ステップS520)。
次に、CPU210は、コマンド解析が完了したかどうかを確認し(ステップS521)、完了していなければ、処理を再びステップS520に戻す。CPU210は、コマンド解析が完了していれば、OK又はNGのデータいずれを送信すべきか決定し、次に、タイマー206の値の確認を行う(ステップS522)。CPU210は、タイマー206の値がタイマー閾値記憶部207に予め記憶された閾値以下かを確認する(ステップS523)。この閾値は、IIC通信を完了するためには十分に長い時間であって、かつ、IIC通信が終了しないことによって通信システムの他の利用者に悪影響を与えることがない程度に短い時間であることが望ましい。
タイマー206の値が閾値を超えているときは、コマンド解析の処理時間がかかりすぎた可能性があり、マスターデバイス10も同様にタイマー106でリード処理に要した時間を確認しているので(図4のステップS418)、それぞれの閾値が同じであれば、マスターデバイス10がIIC通信を終了していることになる。よって、タイマー206の値が閾値を越えているときは、CPU210は、IIC制御部205を制御して、送信FIFO203、受信FIFO204のデータをクリアし(ステップS524)、SCL制御部201がSCL信号線30をローにドライブしている状態を解除し(ステップS525)、SCL制御部201、SDA制御部202を初期状態に変更(初期化)して、(ステップS526)、処理を終了する(ステップS527)。
ステップS523で閾値を超えていなければ、CPU210は、IIC制御部205を制御して、送信FIFO203にコマンド解析の結果(OK又はNGのデータ)を送信し(ステップS528)、SCL制御部201のロードライブを解除する(ステップS529)と、マスターデバイス10のSCL制御部101がSCL信号線30をハイ又はローにする制御を行うことによって、スレーブデバイス20のSCL制御部201はSCL信号線30の変化を検出し、それに同期して、SDA制御部202が送信FIFO203のデータをSDA信号線31に送出することで、スレーブデバイス20からマスターデバイスへのデータ送信が行われる(ステップS530)。データ送信が完了することで、処理を終了する(ステップS531)。
なお、この終了処理(ステップS527、S531)を実行後、スレーブデバイス20では、いつマスターデバイス10から次のスタートコンディションが送信されるか分からないので、ステップS501から処理を開始する。また、マスターデバイス10から送信されたコマンドに対して、スレーブデバイス20がNGのデータの応答を返した場合には、マスターデバイス10は、再度スレーブデバイス20に対して同じコマンドを送信するように構成する。このように構成することで、マスターデバイス10からのコマンドをスレーブデバイス20に確実に送信することができる。
また、このように構成することで、マスターデバイス10からスレーブデバイス20に送信したコマンドが、スレーブデバイス20において正しく解析されたか否かをすぐに確認することができる。また、マスターデバイス10が、スレーブデバイス20からの応答が予め決められた時間以上ないためにIIC通信の処理を途中で終了しても、スレーブデバイス20でも、予め決められた時間以内に応答できなかったと認識できるため、IICバスへのアクセスを解除する(実施の形態1では、SCL信号線30をローにドライブすることを解除する、また、SCL制御部201及びSDA制御部202を初期状態に変更する)ことができ、IICバスのSCL信号線30又はSDA信号線31をローにドライブしたままになる状態を回避することができる。
また、スレーブデバイス20の処理の過程で問題が発生した場合に、SCL制御部201、SDA制御部202、送信FIFO203、受信FIFO204を初期化しているため、スレーブデバイス20で実行している処理のすべてをリセットする必要がなく、CPU210で実行している他の処理に影響を与えることがない。
また、マスターデバイス10での送信で問題が発生した場合においても、マスターデバイス10及びスレーブデバイス20のそれぞれが、タイマーの値が閾値を越えたことで、IIC通信に関する処理だけを終了できるので、マスターデバイス及びスレーブデバイスのIIC以外の処理に影響を与えることがなく、マスターデバイス及びスレーブデバイスのIIC以外の処理を継続することができる。
また、マスターデバイス10のタイマー閾値記憶部107に保存されている閾値と、スレーブデバイス20のタイマー閾値記憶部207に保存されている閾値とを同じ値にすることが望ましい。これは、これらの閾値を同じ値にすることによって、マスターデバイス10、スレーブデバイス20のいずれかで不具合が発生しても、それぞれのタイマーの値に基づいてIIC通信を終了するタイミングが同じになるため、IICが通信不能状態となっている期間を最小限にすることができるからである。
実施の形態2.
図8及び図9は、本発明の実施の形態2におけるスレーブデバイスの処理を示すフローチャートである。図8及び図9において、図5及び図6に示されるステップと同じステップには、同じ符号を付す。また、実施の形態2の説明に際しては、図1をも参照する。
実施の形態1においては、スレーブデバイスのコマンド解析処理が完了してから(図6のステップS521)、タイマー206の値を参照している。これに対し、実施の形態2においては、図8及び図9に示されるように、コマンド解析処理が完了しているかどうかを確認し(図9のステップS540)、完了していなければ、タイマー206の値を参照して、タイマー206の値が閾値を越えたか否かを確認する(図9のステップS541)ように構成している。
すなわち、図9のステップS520において、CPU210は、IIC制御部205を制御して、SCL信号線30をローにドライブし、コマンド解析が完了したかを確認し(ステップS540)、コマンド解析が完了していなければ、タイマー206の値の確認を行う(ステップS541)。次に、CPU210は、タイマー206の値が閾値を超えていなければ、処理をステップS520に戻し、タイマー206の値が閾値を超えていれば、処理をステップS524に進める。また、CPU210は、ステップS540において、コマンド解析が完了していれば、処理をステップS528に進める。
このように構成することで、CPU210は、コマンド解析が完了する前に、タイマー206の値が閾値を超えてしまった場合を検出することができる。このため、タイマー206の値が閾値を超えてしまった場合、行う必要が無くなったコマンド解析処理をキャンセルすることができ、スレーブデバイス20の処理負荷を低減することができる。
上記以外の点について、実施の形態2は、実施の形態1と同じである。
実施の形態3.
実施の形態1においては、スレーブデバイス20の処理が終了したとき(ステップS505、ステップS512、ステップS517、ステップS525、ステップS529を実行後)、スレーブデバイス20では、いつマスターデバイス10から次のスタートコンディションが送信されるか分からないので、IIC通信処理を開始(ステップS501)している。これに対し、実施の形態3においては、コマンドを受信するための処理が完了したことに基づいて、IIC通信処理を開始(ステップS501)するように構成している。なお、実施の形態3の説明に際しては、図1、図5、図6を参照する。
実施の形態3の処理を詳細に説明する。CPU210によって受信FIFO204のデータをRAM212にコピーする準備が整う前に、ステップS501の処理を開始すると、マスターデバイス10からのコマンド受信で、受信FIFO204にデータが溜まってしまい、IIC制御部205が、SCL制御部201を制御して、SCL信号線30をローにドライブさせ、マスターデバイス10のSCL制御部101が行うSCL信号線30のハイ/ロー制御(すなわち、SCL信号線30のクロック動作)を止めることができる。しかし、このとき、他のマスターデバイス(図示せず)は、IICバスにアクセスできなくなり、IICバスとそれに接続される通信装置からなる通信システム全体のパフォーマンスを落とすことになる。
このため、実施の形態3においては、CPU210は、スレーブデバイス20において、マスターデバイス10からの受信処理を行うことができない状態では、IICの受信処理を開始しないように制御し、マスターデバイス10からのコマンドを受信するための処理が完了した状態になったときに、IICの受信処理を開始するように制御する。
このように構成することで、スレーブデバイスがマスターデバイスからのコマンドを確実に受信できる状態になってから受信処理を行うことができ、より確実にマスターデバイスからのコマンドを受信することができる。
上記以外の点について、実施の形態3は、実施の形態1と同じである。
実施の形態4.
図10及び図11は、本発明の実施の形態4におけるスレーブデバイスの処理を示すフローチャートである。図10及び図11において、図5及び図6に示されるステップと同じステップには、同じ符号を付す。また、実施の形態4の説明に際しては、図1をも参照する。
実施の形態1においては、スレーブデバイス20は、マスターデバイス10のライト制御でデータを受信し、コマンド解析を開始してから(図5のステップS512)、すぐにマスターデバイス10のリード制御が開始され、コマンド解析の完了を確認する(図6のステップS521)例を示した。
しかし、実施の形態1では、スレーブデバイス20は、マスターデバイス10からのリード制御に対してはコマンド解析結果に基づいて、OK又はNGのデータを返信しているため、解析結果のない状態では、OK又はNGのデータのいずれも返信することができない。したがって、スレーブデバイスが、マスターデバイス10からのライト処理がなく、いきなりリード処理が実行したときには、OK又はNGのデータのいずれも返信することができない。実施の形態4においては、スレーブデバイスが、マスターデバイス10からのライト処理がなく、いきなりリード処理が実行したときには、NGのデータを返信できるようにしている。
図10及び図11において、CPU210は、コマンド解析開始(ステップS512)の後、コマンド送信フラグを「未送信」に設定する(ステップS580)。また、CPU210は、データ送信(ステップS530)の後に、コマンド送信フラグを「送信」に設定する(ステップS582)。なお、CPU210は、スレーブデバイス20が最初の状態のとき(すなわち、デフォルト)のコマンド送信フラグを「送信」としておく。
また、CPU210は、受信したデータがライト制御ビット又はリード制御ビットのいずれであるかの判定をし(ステップS508)、リード制御ビットと判定した後に、コマンド送信フラグが「未送信」か「送信」かの判定を行い(ステップS581)、判定結果が「未送信」の場合は、IIC制御部205を制御して、SCL信号線をローにドライブさせ(ステップS520)、判定結果が「送信」の場合は、IIC制御部205を制御して、SCL30をローにドライブし(ステップS583)、送信FIFO203にNGのデータを送信し(ステップS584)、以下、図11のステップS529以降の処理を行う。そして、CPU210は、ステップS582で、コマンド送信フラグを、「送信」に変更する。
このように構成することで、マスターデバイス10からいきなりリード処理が実行されても、NGのデータの返信を行うことができ、IICのデータ通信誤動作を防止することができる。
上記以外の点について、実施の形態4は、実施の形態1と同じである。
10 マスターデバイス、 20 スレーブデバイス、 30 SCL信号線(クロック信号線)、 31 SDA信号線(データ信号線)、 32 SCL信号線用プルアップ抵抗、 33 SDA信号線用プルアップ抵抗、 101 SCL制御部(クロック制御部)、 102 SDA制御部(データ制御部)、 103 送信FIFO(送信用データ一時記憶部)、 104 受信FIFO(受信用データ一時記憶部)、 105 IIC制御部、 106 タイマー、 107 タイマー閾値記憶部、 110 CPU、 111 ROM、 112 RAM、 113 演算処理部、 120 制御部(CPU110及びIIC制御部105)、 201 SCL制御部(クロック制御部)、 202 SDA制御部(データ制御部)、 203 送信FIFO(送信用データ一時記憶部)、 204 受信FIFO(受信用データ一時記憶部)、 205 IIC制御部、 206 タイマー、 207 タイマー閾値記憶部、 210 CPU、 211 ROM、 212 RAM、 213 演算処理部、 214 コマンド解析部、 215 スレーブアドレス記憶部、 220 制御部(CPU210及びIIC制御部205)。
本発明に係る通信装置は、クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置であって、前記マスターデバイスが、前記スレーブモードで動作する通信装置に通信を開始したことによりスタートするタイマーと、予め決められた閾値を保存するタイマー閾値記憶部と、前記マスターデバイスからの前記クロック信号を前記クロック信号線を通して受信し、及び、前記マスターデバイスからの前記クロック信号を停止させる制御を行うクロック制御部と、前記マスターデバイスに対し、前記データ信号線を通してデータの送受信を行うデータ制御部と、前記データ制御部によって送信されるデータを一時的に保存する送信用一時記憶部と前記マスターデバイスから送信されたコマンドを解析するコマンド解析部と、制御部とを有し、前記制御部は、前記マスターデバイスから送信されるコマンドがライト制御又はリード制御のいずれを設定されているコマンドであるかの判定を行い、リード制御が設定されていると判定した場合、前記コマンド解析部がコマンドを解析している期間中、前記マスターデバイスからの前記クロック信号を停止するように、前記クロック制御部を制御し、前記タイマーの値を前記タイマー閾値記憶部に記憶されている閾値と比較し、前記比較の結果、前記タイマーの値が前記閾値以下であれば、送信するデータを前記送信用一時記憶部に保存し、前記クロック制御部による前記クロック信号を停止させる制御を解除し、前記クロック制御部が受信する前記クロック信号に同期して、前記データ制御部が前記送信用一時記憶部に保存されているデータを、前記マスターデバイスに送信し、前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にすることを特徴とする。
本発明に係る通信方法は、クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置における通信方法であって、前記マスターデバイスが、前記スレーブモードで動作する通信装置に通信を開始したことによりタイマーをスタートするステップと、クロック制御部が、前記マスターデバイスからの前記クロック信号を、前記クロック信号線を通して受信し、又は、前記マスターデバイスからの前記クロック信号を停止させる制御を行うステップと、データ制御部が、前記マスターデバイスに対し、前記データ信号線を通してデータの送受信を行うステップと、前記データ制御部によって送信されるデータを送信用一時記憶部に一時的に保存するステップと、コマンド解析部が、前記マスターデバイスから送信されたコマンドを解析するステップとを有し、前記マスターデバイスから送信されるコマンドがライト制御又はリード制御のいずれを設定されているコマンドであるかの判定を行い、リード制御が設定されていると判定した場合、前記コマンドを解析している期間中、前記マスターデバイスからの前記クロック信号を停止するように、前記クロック制御部を制御し、前記タイマーの値をタイマー閾値記憶部に予め記憶されている閾値と比較し、前記比較の結果、前記タイマーの値が前記閾値以下であれば、送信するデータを前記送信用一時記憶部に保存し、前記クロック信号を停止させる制御を解除し、前記受信するクロック信号に同期して、前記送信用一時記憶部に保存されているデータを、前記マスターデバイスに送信し、前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にすることを特徴とする。
次に、CPU110は、IIC制御部105に対して、スレーブアドレスを送信し(ステップS404)、マスターデバイス10がライト処理を行うことを示すライト制御ビットを送信するようにIIC制御部105に対して指示する(ステップS405)。IIC制御部105は、送信FIFO103に、スレーブアドレスとライト制御ビットとで構成される8ビットのデータを書き込む。そして、SDA制御部102は、送信FIFO103からデータを読み出し、SCL制御部101によるSCL信号線30の制御と同期して、SDA信号線31の制御を行うことで、スレーブアドレスとライト制御ビットとを送信する。
次に、CPU110は、IIC制御部105を制御して、ACK信号を受信したかどうかを確認し(ステップS406)、ACK信号を受信していない場合は、ストップコンディションを生成して(ステップS407)、IIC通信を終了する(ステップS408)。ACK信号を受信している場合は、CPU110は、N=0として(ステップS409)、IIC制御部105にデータを書き込み、IIC制御部105は、送信FIFO103にデータを送信し、SDA制御部102は、送信FIFO103からデータを読み出して、SCL制御部101によるSCL信号線30の制御と同期して、データの送信を行う(ステップS410)。
次に、CPU110は、N=N+1(ステップS414)として、N>Mであるか否かの確認(ステップS415)を行い、N≦Mであれば、再度、ステップS410に処理を戻して、データの送信を行う。実施の形態1においては、M=3である。ステップS415でN>Mとなると、CPU110は、リード処理を行うために、IIC制御部105にスタートコンディションを発行するように指示し、IIC制御部105は、SCL制御部101及びSDA制御部102を制御して、再度、スタートコンディション(「リスタートコンディション」とも言う)を生成する(ステップS416)。
そして、CPU110は、IIC制御部105に対してスレーブアドレスの送信(ステップS417)と、マスターデバイス10がリード処理を行うことを示すリード制御ビットを送信するように指示する(ステップS418)。IIC制御部105は、送信FIFO103にスレーブアドレスとリード制御ビットとで構成される8ビットのデータを書き込む。そして、SDA制御部102は、送信FIFO103からデータを読み出し、SCL制御部101によるSCL信号線30の制御と同期して、SDA信号線31の制御を行うことで、スレーブアドレスとリード制御ビットを送信する。
まず、SCL制御部201とSDA制御部202が、マスターデバイス10からの信号(SCL信号線30及びSDA信号線31のハイ又はローへの変化)を受信する。マスターデバイス10がIICバスをスタートコンディション、又は、リスタートコンディションにした後に送信するデータには、スレーブアドレスと、リード制御ビットを含んでいるため、SDA制御部202は、スタートコンディション又はリスタートコンディションを検出(ステップS502)して、スレーブアドレスを受信する(ステップS503)。既にライト処理を実行している場合には、受信処理ルーチンのステップS559や、ステップS511でリスタートコンディションを検出しているので、CPU210は、スレーブアドレスの受信(ステップS503)から処理を進める。
実施の形態3.
実施の形態1においては、スレーブデバイス20の処理が終了したとき(ステップS505、ステップS513、ステップS518、ステップS527、ステップS531を実行後)、スレーブデバイス20では、いつマスターデバイス10から次のスタートコンディションが送信されるか分からないので、IIC通信処理を開始(ステップS501)している。これに対し、実施の形態3においては、コマンドを受信するための処理が完了したことに基づいて、IIC通信処理を開始(ステップS501)するように構成している。なお、実施の形態3の説明に際しては、図1、図5、図6を参照する。

Claims (17)

  1. クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置であって、
    前記マスターデバイスが、前記スレーブモードで動作する通信装置に通信を開始したことによりスタートするタイマーと、
    予め決められた閾値を保存するタイマー閾値記憶部と、
    前記マスターデバイスからの前記クロック信号を前記クロック信号線を通して受信し、及び、前記マスターデバイスからの前記クロック信号を停止させる制御を行うクロック制御部と、
    前記マスターデバイスに対し、前記データ信号線を通してデータの送受信を行うデータ制御部と、
    前記データ制御部によって送信されるデータを一時的に保存する送信用一時記憶部と
    前記マスターデバイスから送信されたコマンドを解析するコマンド解析部と、
    制御部と
    を有し、
    前記制御部は、
    前記マスターデバイスが前記コマンド解析部の解析結果を返信することを求めたときに、前記コマンド解析部がコマンドを解析している期間中、前記マスターデバイスが前記クロック信号を停止するように、前記クロック制御部を制御し、
    前記タイマーの値を前記タイマー閾値記憶部に記憶されている閾値と比較し、
    前記比較の結果、前記タイマーの値が前記閾値以下であれば、送信するデータを前記送信用一時記憶部に保存し、前記クロック制御部による前記クロック信号を停止させる制御を解除し、前記クロック制御部が受信する前記クロック信号に同期して、前記データ制御部が前記送信用一時記憶部に保存されているデータを、前記マスターデバイスに送信し、
    前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にする
    ことを特徴とする通信装置。
  2. 前記制御部は、前記コマンド解析部による前記コマンドの解析を完了した後に、前記タイマーの値を前記閾値と比較する前記処理を行うことを特徴とする請求項1に記載の通信装置。
  3. 前記制御部は、
    前記コマンド解析部による前記コマンドの解析の完了の前に、前記タイマーの値を前記閾値と比較する前記処理を開始し、
    前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記コマンド解析部により前記コマンドの解析は完了しているかいないかに関係なく、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にする
    ことを特徴とする請求項1に記載の通信装置。
  4. 前記マスターデバイスから送信されるデータを一時的に保存する受信用一時記憶部をさらに有し、
    前記マスターデバイスから送信されるデータを受信するときに、前記タイマーの値を前記タイマー閾値記憶部に記憶されている閾値と比較する処理を行い、前記タイマーの値が前記閾値を超えていれば、前記受信用一時記憶部のデータをクリアし、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にする
    ことを特徴とする請求項1から3までのいずれか1項に記載の通信装置。
  5. 前記制御部は、前記受信用一時記憶部からデータを読み出すことが可能な状態になってから、前記マスターデバイスからの受信処理を開始させることを特徴とする請求項4に記載の通信装置。
  6. 前記制御部は、
    前記コマンド解析部によるコマンドの解析を開始した後に、コマンド送信フラグを未送信を示すフラグに設定し、
    前記コマンド解析部によるコマンドの解析を完了し、前記マスターデバイスに前記解析の結果を送信した後に、前記コマンド送信フラグを送信済を示すフラグに設定し、
    前記マスターデバイスが前記コマンド解析部の解析結果を返信するように求めたときに、前記コマンド送信フラグに基づいて、返信するデータを決定する
    ことを特徴とする請求項1から5までのいずれか1項に記載の通信装置。
  7. 前記クロック信号線は、SCL信号線であり、
    前記データ信号線は、SDA信号線であり、
    前記同期式シリアル通信用のバスは、IICバスである
    ことを特徴とする請求項1から6までのいずれか1項に記載の通信装置。
  8. クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置における通信方法であって、
    前記マスターデバイスが、前記スレーブモードで動作する通信装置に通信を開始したことによりタイマーをスタートするステップと、
    クロック制御部が、前記マスターデバイスからの前記クロック信号を、前記クロック信号線を通して受信し、又は、前記マスターデバイスからの前記クロック信号を停止させる制御を行うステップと、
    データ制御部が、前記マスターデバイスに対し、前記データ信号線を通してデータの送受信を行うステップと、
    前記データ制御部によって送信されるデータを送信用一時記憶部に一時的に保存するステップと、
    前記マスターデバイスから送信されたコマンドを解析するステップと
    を有し、
    前記マスターデバイスが前記コマンドの解析結果を返信することを求めたときに、前記コマンドを解析している期間中、前記マスターデバイスが前記クロック信号を停止するように制御し、
    前記タイマーの値をタイマー閾値記憶部に予め記憶されている閾値と比較し、
    前記比較の結果、前記タイマーの値が前記閾値以下であれば、送信するデータを前記送信用一時記憶部に保存し、前記クロック信号を停止させる制御を解除し、前記受信するクロック信号に同期して、前記送信用一時記憶部に保存されているデータを、前記マスターデバイスに送信し、
    前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にする
    ことを特徴とする通信方法。
  9. 前記コマンド解析部による前記コマンドの解析を完了した後に、前記タイマーの値を前記閾値と比較する前記処理を行うことを特徴とする請求項8に記載の通信方法。
  10. 前記コマンド解析部による前記コマンドの解析の完了の前に、前記タイマーの値を前記閾値と比較する前記処理を開始し、
    前記比較の結果、前記タイマーの値が前記閾値を超えていれば、前記コマンド解析部により前記コマンドの解析は完了しているかいないかに関係なく、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にする
    ことを特徴とする請求項8に記載の通信方法。
  11. 前記マスターデバイスから送信されるデータを一時的に保存する受信用一時記憶部をさらに有し、
    前記マスターデバイスから送信されるデータを受信するときに、前記タイマーの値を前記タイマー閾値記憶部に記憶されている閾値と比較する処理を行い、前記タイマーの値が前記閾値を超えていれば、前記受信用一時記憶部のデータをクリアし、前記クロック制御部による前記クロック信号を停止させる制御を解除して前記クロック制御部を前記クロック信号を受信する状態にし、また、前記データ制御部をスレーブモードで動作する通信装置を示すスレーブアドレスを受信する状態にする
    ことを特徴とする請求項8から10までのいずれか1項に記載の通信方法。
  12. 前記受信用一時記憶部からデータを読み出すことが可能な状態になってから、前記マスターデバイスからの受信処理を開始させることを特徴とする請求項11に記載の通信方法。
  13. 前記コマンドの解析を開始した後に、コマンド送信フラグを未送信を示すフラグに設定し、
    前記コマンドの解析を完了し、前記マスターデバイスに前記解析の結果を送信した後に、前記コマンド送信フラグを送信済を示すフラグに設定し、
    前記マスターデバイスが前記解析結果を返信するように求めたときに、前記コマンド送信フラグに基づいて、返信するデータを決定する
    ことを特徴とする請求項8から12までのいずれか1項に記載の通信方法。
  14. 前記クロック信号線は、SCL信号線であり、
    前記データ信号線は、SDA信号線であり、
    前記同期式シリアル通信用のバスは、IICバスである
    ことを特徴とする請求項8から13までのいずれか1項に記載の通信方法。
  15. クロック信号を伝送するためのクロック信号線及びデータを伝送するためのデータ信号線からなる同期式シリアル通信用のバスを用いて、マスターモードで動作する通信装置であるマスターデバイスと、
    前記マスターデバイスから送信されるコマンドを受信し、該コマンドを解析し、前記バスを用いて、前記解析の結果を前記マスターデバイスに返信する、スレーブモードで動作する通信装置であるスレーブデバイスと
    を有し、
    前記スレーブデバイスは、請求項1から7までのいずれか1項に記載の通信装置である
    ことを特徴とする通信システム。
  16. 前記マスターデバイスは、
    前記スレーブモードで動作する通信装置に通信を開始したことによりスタートする第1のタイマーと、
    予め決められた第1の閾値を保存する第1のタイマー閾値記憶部と、
    前記クロック信号線を通して送信される前記クロック信号を制御する第1のクロック制御部と、
    前記データ信号線を通してデータの送受信を行う第1のデータ制御部と、
    前記第1のデータ制御部によって送信されるデータを一時的に保存する第1の送信用一時記憶部と、
    第1の制御部と
    を有し、
    前記マスターデバイスは、前記スレーブデバイスにデータの送信、又は、前記スレーブデバイスからのデータ受信を行うたびに、前記第1のタイマーの値を前記第1のタイマー閾値記憶部に記憶されている第1の閾値と比較し、前記第1のタイマーの値が前記第1の閾値を越えていれば、前記第1のクロック制御部と前記データ制御部を初期状態に変更する
    ことを特徴とする請求項15に記載の通信システム。
  17. 前記マスターデバイスの前記第1のタイマー閾値記憶部に記憶されている前記第1の閾値と、前記スレーブデバイスの前記タイマー閾値記憶部に記憶されている前記閾値とが、同じ値であること特徴とする請求項16に記載の通信システム。
JP2013545808A 2011-11-25 2012-05-23 通信装置、通信方法、及び通信システム Active JP5762561B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013545808A JP5762561B2 (ja) 2011-11-25 2012-05-23 通信装置、通信方法、及び通信システム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011257755 2011-11-25
JP2011257755 2011-11-25
PCT/JP2012/063115 WO2013077012A1 (ja) 2011-11-25 2012-05-23 通信装置、通信方法、及び通信システム
JP2013545808A JP5762561B2 (ja) 2011-11-25 2012-05-23 通信装置、通信方法、及び通信システム

Publications (2)

Publication Number Publication Date
JPWO2013077012A1 true JPWO2013077012A1 (ja) 2015-04-27
JP5762561B2 JP5762561B2 (ja) 2015-08-12

Family

ID=48469474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013545808A Active JP5762561B2 (ja) 2011-11-25 2012-05-23 通信装置、通信方法、及び通信システム

Country Status (3)

Country Link
US (1) US9671820B2 (ja)
JP (1) JP5762561B2 (ja)
WO (1) WO2013077012A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103814363B (zh) * 2011-09-27 2016-08-24 三菱电机株式会社 从装置、主装置及通信方法
KR101861453B1 (ko) * 2013-10-09 2018-05-28 퀄컴 인코포레이티드 CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력
JP6792314B2 (ja) * 2016-04-22 2020-11-25 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
CN108011692A (zh) * 2017-06-30 2018-05-08 宁波方太厨具有限公司 一种用于单片机的数据通信方法
JP7082311B2 (ja) * 2017-11-08 2022-06-08 株式会社村田製作所 データ通信装置
JP7200370B2 (ja) 2018-12-03 2023-01-06 ヒューレット-パッカード デベロップメント カンパニー エル.ピー. 論理回路
KR20210087502A (ko) 2018-12-03 2021-07-12 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 로직 회로
EP3904105A1 (en) 2018-12-03 2021-11-03 Hewlett-Packard Development Company, L.P. Logic circuitry
US11338586B2 (en) 2018-12-03 2022-05-24 Hewlett-Packard Development Company, L.P. Logic circuitry
US10894423B2 (en) 2018-12-03 2021-01-19 Hewlett-Packard Development Company, L.P. Logic circuitry
EP3695334A1 (en) 2018-12-03 2020-08-19 Hewlett Packard Enterprise Development Company LP Logic circuitry
PL3682359T3 (pl) 2018-12-03 2021-05-17 Hewlett-Packard Development Company, L.P. Obwód logiczny
CA3121146A1 (en) 2018-12-03 2020-06-11 Hewlett-Packard Development Company, L.P. Logic circuitry package for controlling ic2 traffic
EP3688645A1 (en) 2018-12-03 2020-08-05 Hewlett-Packard Development Company, L.P. Logic circuitry package
US11312145B2 (en) 2018-12-03 2022-04-26 Hewlett-Packard Development Company, L.P. Logic circuitry package
WO2020117304A1 (en) 2018-12-03 2020-06-11 Hewlett-Packard Development Company, L.P. Logic circuitry
WO2021080607A1 (en) 2019-10-25 2021-04-29 Hewlett-Packard Development Company, L.P. Logic circuitry package
CN113641618A (zh) * 2021-08-12 2021-11-12 海信(山东)空调有限公司 Iic通讯控制方法、用电设备和计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075878A (ja) * 1999-09-06 2001-03-23 Fujitsu General Ltd バスエラー検出処理装置
JP2005004749A (ja) * 2003-06-12 2005-01-06 Hewlett-Packard Development Co Lp I2cルータにおけるi2cパケットのオーバーフロー回復方法
JP2008197752A (ja) * 2007-02-08 2008-08-28 Sharp Corp データ通信誤動作防止装置、電子機器、データ通信誤動作防止装置の制御方法、データ通信誤動作防止装置の制御プログラム、及び当該プログラムを記録した記録媒体
JP2009244991A (ja) * 2008-03-28 2009-10-22 Fujitsu Ten Ltd データ通信方法、データ通信システム、電子制御ユニット、及び回路基板
JP2011070282A (ja) * 2009-09-24 2011-04-07 Furukawa Electric Co Ltd:The 通信システム、マスタ装置、および、スレーブ装置
JP2011095897A (ja) * 2009-10-28 2011-05-12 Yokogawa Electric Corp I2cバス制御回路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2642734B2 (ja) 1989-03-17 1997-08-20 富士通株式会社 データ処理装置
US6799233B1 (en) 2001-06-29 2004-09-28 Koninklijke Philips Electronics N.V. Generalized I2C slave transmitter/receiver state machine
JP2007164765A (ja) 2005-11-15 2007-06-28 Matsushita Electric Ind Co Ltd Iicバス通信システム、スレーブ装置およびiicバス通信制御方法
US7802036B2 (en) * 2007-02-06 2010-09-21 Seiko Epson Corporation Serial communication system using an I2C bus as a serial bus
JP2008293230A (ja) 2007-05-24 2008-12-04 Nec Engineering Ltd データ転送装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075878A (ja) * 1999-09-06 2001-03-23 Fujitsu General Ltd バスエラー検出処理装置
JP2005004749A (ja) * 2003-06-12 2005-01-06 Hewlett-Packard Development Co Lp I2cルータにおけるi2cパケットのオーバーフロー回復方法
JP2008197752A (ja) * 2007-02-08 2008-08-28 Sharp Corp データ通信誤動作防止装置、電子機器、データ通信誤動作防止装置の制御方法、データ通信誤動作防止装置の制御プログラム、及び当該プログラムを記録した記録媒体
JP2009244991A (ja) * 2008-03-28 2009-10-22 Fujitsu Ten Ltd データ通信方法、データ通信システム、電子制御ユニット、及び回路基板
JP2011070282A (ja) * 2009-09-24 2011-04-07 Furukawa Electric Co Ltd:The 通信システム、マスタ装置、および、スレーブ装置
JP2011095897A (ja) * 2009-10-28 2011-05-12 Yokogawa Electric Corp I2cバス制御回路

Also Published As

Publication number Publication date
US20140258576A1 (en) 2014-09-11
US9671820B2 (en) 2017-06-06
WO2013077012A1 (ja) 2013-05-30
JP5762561B2 (ja) 2015-08-12

Similar Documents

Publication Publication Date Title
JP5762561B2 (ja) 通信装置、通信方法、及び通信システム
JP2016004388A (ja) 通信システム及び電子回路
US10459872B2 (en) Data communication apparatus
US11010328B2 (en) Communication apparatus, communication method, program, and communication system
JP6971538B2 (ja) 通信装置、通信方法、プログラム、および、通信システム
EP0883066A2 (en) Serial data transmission betwe data processing apparatus and an external storage apparatus
JP2014003377A (ja) 制御装置及び画像形成装置
KR102554978B1 (ko) 통신 장치, 통신 방법, 프로그램, 및, 통신 시스템
JP2008293230A (ja) データ転送装置
US20190146939A1 (en) Communication device, communication method, program, and communication system
US20170091601A1 (en) Control device, image forming apparatus, and control method
JP2000293485A (ja) 通信インターフェース
JP6413724B2 (ja) データ通信装置
CN109155689B (zh) 通信设备、通信方法、程序和通信系统
JP6903645B2 (ja) 通信装置、通信方法、プログラム、および、通信システム
JP6136754B2 (ja) 通信制御装置及び画像形成装置
TW201741888A (zh) 通信器件、通信方法、程式及通信系統
JP2014067230A (ja) 情報処理装置およびデータ通信方法
JP5925648B2 (ja) ネットワークシステム及びネットワークシステムにおけるスレーブユニット認識方法
US9869985B2 (en) Control device, image forming apparatus, and control method
JP5913454B2 (ja) 制御装置、第1制御装置、第2制御装置、画像形成装置
JP6107499B2 (ja) 通信制御装置及び画像形成装置
CN116107790A (zh) I2c通信异常的处理方法、电子设备、系统和存储介质
JP2014197902A (ja) 制御装置、第1制御装置、第2制御装置、画像形成装置
JP2009199141A (ja) データ転送方法、データ転送プログラムおよびデータ転送プログラムを格納した記録媒体

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150512

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150609

R150 Certificate of patent or registration of utility model

Ref document number: 5762561

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250