(57)【要約】【課題】マスター側デバイスの負担を低減すること。【解決手段】通信システムは、マスター装置とスレーブ装置とを有する。スレーブ装置は、送信すべきデータが発生した場合に、マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、マスター装置に、前記リクエスト信号を送信する送信部とを有する。マスター装置は、スレーブ装置からのリクエスト信号を受信するリクエスト信号受信部と、該リクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択部と、該選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信部と、選択スレーブ装置からのデータを受信するデータ受信部とを有する。【選択図】図１
2012064021.tif 000002
【特許請求の範囲】
【請求項１】
マスター装置とスレーブ装置とを有する通信システムであって、
前記スレーブ装置は、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、
前記マスター装置に、前記リクエスト信号を送信する送信部と
を有し、
前記マスター装置は、
前記スレーブ装置からのリクエスト信号を受信するリクエスト信号受信部と、
該受信部により受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択部と、
該選択部により選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信部と、
前記選択スレーブ装置からのデータを受信するデータ受信部と
を有する通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記データ受信部により受信されたデータを記憶する記憶部と、
前記データ受信部により受信されたデータを前記記憶部にダイレクトメモリアクセスにより転送するダイレクトメモリアクセスコントローラと
を有する通信システム。
【請求項３】
請求項１又は２に記載の通信システムにおいて、
前記リクエスト信号受信部により複数のスレーブ装置からのリクエスト信号が受信された場合に、前記選択部は、所定の優先順位に従って、送信させるべきスレーブ装置を選択する通信システム。
【請求項４】
請求項１ないし３のいずれか１項に記載の通信システムにおいて、
スレーブ装置に送信すべきデータが発生した場合に、前記選択部は、所定の優先順位に従って、通信させるべきスレーブ装置を選択する通信システム。
【請求項５】
スレーブ装置と通信を行うマスター装置であって、
前記スレーブ装置により送信されるべきデータの送信要求を表すリクエスト信号を受信するリクエスト信号受信部と、
該受信部により受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択部と、
該選択部により選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信部と、
前記選択スレーブ装置からのデータを受信するデータ受信部と
を有するマスター装置。
【請求項６】
マスター装置と通信を行うスレーブ装置であって、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、
前記マスター装置に、前記リクエスト信号を送信する送信部と
を有し、
前記マスター装置において、前記スレーブ装置からのリクエスト信号に応じて、送信させるべきスレーブ装置を選択し、該選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信し、前記選択スレーブ装置からのデータを受信する、スレーブ装置。
【請求項７】
マスター装置とスレーブ装置とを有する通信システムにおける通信方法であって、
前記スレーブ装置は、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成ステップと、
前記マスター装置に、前記リクエスト信号を送信する送信ステップと
を有し、
前記マスター装置は、
前記スレーブ装置からのリクエスト信号を受信するリクエスト信号受信ステップと、
該受信ステップにより受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択ステップと、
該選択ステップにより選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信ステップと、
前記選択スレーブ装置からのデータを受信するデータ受信ステップと
を有する通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスターデバイスと、スレーブデバイスとを有する通信システムに関する。
【背景技術】
【０００２】
一つのマスターデバイスと複数のスレーブデバイスとの間でシリアル通信を行う例としては、データ線及びクロック線を全てのスレーブデバイス間で共有するものがある（例えば、特許文献１参照）。スレーブデバイス毎に通信のビット長が異なっても、ビット長設定レジスタを持つことで、通信ビット幅の異なる複数のスレーブデバイスに対してデータ線及びクロック線を共有化して通信ができる。
【０００３】
また、クロック生成回路を有することにより、通信すべきデバイスに適した速度で通信を行うことができるものもある（例えば、特許文献２参照）。
【０００４】
シリアル通信を行う場合、該シリアル通信の動作を開始するのはシステム制御を行うマスターデバイス側である。該シリアル通信には、一般的にSPI(Serial Peripheral Interface)や、IIC(Inter-Integrated Circuit)が想定される。例えば、プリンターなどの装置で複数のデバイスを制御する場合、マスター側は例えば数ミリ秒〜数十ミリ秒毎に定期的にスレーブ側に対し通信を行い、該スレーブ側の状態を示す情報を取得している。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マスター側からのみ通信を行う方式では、一般的に一定時間毎にマスター側からスレーブ側に対して定期的に通信を行い、スレーブ側の情報を入手する必要があった。
【０００６】
マスターデバイスに接続されるスレーブデバイスの数が多い場合、マスターデバイスからスレーブデバイスの状態をリードするのはマスターデバイスには負担となる場合がある。例えば、スレーブ側に接続されるのがセンサであり、該センサの状態が変化するときに限り、マスター側に情報を伝えればよいシステムも考えられる。しかし、シリアル接続されるとマスター側から読み出すことでしか状態変化を知る手段がない。このため読み出し間隔が長すぎると状態変化を即座に伝えることができないことが問題となり、間隔が短すぎると通信量が増大してマスター側のCPUの負荷が大きくなる。
【０００７】
そこで、本発明は、上述した問題点の少なくとも１つに鑑みてなされたものであり、マスター側の負担を低減することである。
【課題を解決するための手段】
【０００８】
本通信システムは、
マスター装置とスレーブ装置とを有する通信システムであって、
前記スレーブ装置は、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、
前記マスター装置に、前記リクエスト信号を送信する送信部と
を有し、
前記マスター装置は、
前記スレーブ装置からのリクエスト信号を受信するリクエスト信号受信部と、
該受信部により受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択部と、
該選択部により選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信部と、
前記選択スレーブ装置からのデータを受信するデータ受信部と
を有する。
【０００９】
本マスター装置は、
スレーブ装置と通信を行うマスター装置であって、
前記スレーブ装置により送信されるべきデータの送信要求を表すリクエスト信号を受信するリクエスト信号受信部と、
該受信部により受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択部と、
該選択部により選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信部と、
前記選択スレーブ装置からのデータを受信するデータ受信部と
を有する。
【００１０】
本スレーブ装置は、
マスター装置と通信を行うスレーブ装置であって、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、
前記マスター装置に、前記リクエスト信号を送信する送信部と
を有し、
前記マスター装置において、前記スレーブ装置からのリクエスト信号に応じて、送信させるべきスレーブ装置を選択し、該選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信し、前記選択スレーブ装置からのデータを受信する。
【００１１】
本通信方法は、
マスター装置とスレーブ装置とを有する通信システムにおける通信方法であって、
前記スレーブ装置は、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成ステップと、
前記マスター装置に、前記リクエスト信号を送信する送信ステップと
を有し、
前記マスター装置は、
前記スレーブ装置からのリクエスト信号を受信するリクエスト信号受信ステップと、
該受信ステップにより受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択ステップと、
該選択ステップにより選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信ステップと、
前記選択スレーブ装置からのデータを受信するデータ受信ステップと
を有する。
【発明の効果】
【００１２】
開示の通信システムによれば、マスター側の負担を低減することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施例に従った通信システムの一例を示す図である。
【図２】本実施例に従ったマスターデバイスの一例を示すブロック図である。
【図３】本実施例に従った通信システムの動作の一例を示すタイミングチャート（その１）である。
【図４】本実施例に従った通信システムの動作の一例を示すタイミングチャート（その２）である。
【発明を実施するための形態】
【００１４】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１５】
＜通信システム＞
図１は、本実施例に従った通信システムを示す。
【００１６】
本実施例では、一例としてシリアルインターフェースにSPIを適用した場合について示す。SPIに限らず他のシリアルインターフェースが適用されてもよい。例えば、I2Cが適用されてもよい。
【００１７】
本通信システムは、マスターデバイス１００と、スレーブデバイス２００ｎ（ｎは、０≦ｎの整数）とを有する。マスターデバイスは、ホストデバイスとも呼ばれる。例えば、マスターデバイス１００は、CPU及びDMAコントローラを内蔵し、スレーブデバイス２００ｎとの間でシリアル通信を行う。マスターデバイス１００と、スレーブデバイス２００ｎとの間は、シリアル接続される。
【００１８】
スレーブデバイス２００ｎの制御を行うコントローラとしてのマスターデバイス１００は、プリンターに実装されてもよい。該マスターデバイス１００に対してスレーブデバイス２００ｎには、各種センサ、モータ等が含まれてもよい。
【００１９】
図１に示される通信システムでは、１台のマスターデバイス１００に対して、３台のスレーブデバイス２０００−２００２が接続されている。１台のマスターデバイス１００に対して、１台のスレーブデバイスが接続されてもよいし、２台のスレーブデバイスが接続されてもよいし、４台以上のスレーブデバイスが接続されてもよい。
【００２０】
本通信システムは、スレーブデバイス２０００−２００２側でセンサの状態が変化した場合等に、スレーブバイス２０００−２００２は、マスターデバイス１００に、転送開始要求としてリクエスト信号を発行（生成）し、送信する。スレーブデバイス２０００−２００２側でセンサの状態が変化した場合に限らす、マスターデバイス１００に伝えるべきデータが発生した場合に、マスターデバイス１００に、転送開始要求としてリクエスト信号を発行するようにしてもよい。マスターデバイス１００は、該リクエスト信号を受信したことにより、該当するスレーブデバイスとの間の通信を開始する。
【００２１】
スレーブデバイス２０００−２００２に送信すべきデータが発生した場合に、データの送信を要求するためのリクエスト信号を送信できるようにし、さらに、マスターデバイス１００に、該リクエスト信号を受信した場合に、通信を開始させることができることにより、必要なときに通信を開始することができる。これまでは、マスターデバイスが一定時間毎に、スレーブデバイス２０００−２００２をポーリングすることで、スレーブデバイスの状態を読み出していた。マスターデバイス側から読み出すことでしかスレーブデバイスの状態変化を知ることができなかった。しかし、本通信システムでは、必要なときに通信を行うようにできるため、必要十分な通信量でシステムを構築できる。
【００２２】
具体的には、スレーブデバイス２０００−２００２は、リクエスト信号を生成するリクエスト信号生成部２０２を有する。
【００２３】
スレーブデバイス２０００−２００２は、該リクエスト信号生成部２０２において、マスターデバイス１００に送信すべき情報を有する場合にリクエスト信号をアサートする。スレーブデバイス２０００−２００２からマスターデバイス１００にリクエスト信号をアサートすることにより、マスターデバイス１００からスレーブデバイス２０００−２００２の状態を読み出す際の通信量を減少させることができるため、マスターデバイス１００におけるCPUの負担を低減できる。
【００２４】
さらに、マスターデバイス１００は、シリアル通信で、スレーブデバイス２０００−２００２のいずれかから受信されるデータ及びスレーブデバイス２０００−２００２に送信すべきデータの少なくとも一方をシリアルIF回路１１０とRAM１０６との間でDMA転送を利用することにより、CPU１０２の介在なしに転送を行う。シリアルIF回路１１０とRAM１０６との間で、DMA転送を行うことにより、CPU１０２の負荷をさらに削減することができる。
【００２５】
＜マスターデバイス＞
マスターデバイス１００は、中央演算処理装置(CPU: Central Processing Unit)１０２を有する。CPU１０２は、当該マスターデバイス１００の制御を行う。具体的には、DMAC１０４、RAM１０６、通信調停回路１０８、シリアルIF回路１１０、チップセレクト(CS)切替回路１１２を制御する。CPU１０２はメモリ（図示無し）に格納されたプログラムに従って動作する。例えば、CPU１０２は、送信データの準備、受信データの処理、DMACのレジスタ設定、通信調停回路１０８のレジスタ設定等の制御を行う。
【００２６】
マスターデバイス１００は、ダイレクトメモリアクセスコントローラ(DMAC: Direct Memory Access controller)１０４を有する。DMAC１０４は、CPU１０２を介することなく、シリアルIF回路１１０がRAM１０６にデータ転送を行う際の制御を行う。例えば、スレーブデバイス２０００−２００２からのデータの受信を行う際は、CPU１０２により起動されたDMAC１０４は、スレーブデバイス２０００−２００２に対して通信開始を通知するデータを送出する。該通信開始を通知するデータは、チップセレクト信号とも呼ばれる。該送信開始を通知するデータに呼応して該当するスレーブデバイスから送出されてくる受信データをシリアルＩＦ回路１１０からの転送要求に応じて、RAM１０６に転送する。
【００２７】
マスターデバイス１００は、RAM１０６を有する。RAM１０６は、所定の情報を記憶する。例えば、シリアルIF回路１１０からのデータを一時的に記憶する。シリアルIF回路１１０からのデータがRAM１０６に転送される際に、DMA転送されてもよい。
【００２８】
マスターデバイス１００は、通信調停回路１０８を有する。通信調停回路１０８には、スレーブデバイス２０００−２００２からのリクエスト信号が入力される。通信調停回路１０８は、各スレーブデバイス２０００−２００２からのリクエスト信号(req0、req1、req2)を受付け、当該マスターデバイス１００と、スレーブデバイス２０００−２００２との間の通信の調停を行う。
【００２９】
リクエスト信号が伝送される通信線（以下、「リクエスト通信線」と呼ぶ）(req0,req1,req2)は、スレーブデバイス２０００−２００２毎に構成される。換言すれば、マスターデバイス１００と各スレーブデバイス２０００−２００２との間を１対１で接続するように構成される。
【００３０】
通信調停回路１０８は、CPU１０２により設定可能な各スレーブデバイス２０００−２００２からの受信データを格納するためのRAMの先頭アドレスを指定するレジスタを有する。通信調停回路１０８には、各スレーブデバイス２０００−２００２からのリクエスト信号が入力される。通信調停回路１０８には、リクエスト信号の論理を認識し、スレーブデバイス２０００−２００２から発行されるリクエスト信号を保持する。
【００３１】
例えば、リクエスト通信線は通常「Ｈ」レベルである。スレーブデバイスは、マスターデバイス１００に読み出させたいデータがある場合に、リクエスト通信線を「Ｈ」レベルから「Ｌ」レベルに変更する。マスターデバイス１００の通信調停回路１０８はリクエスト信号が「Ｈ」レベルから「Ｌ」レベルに変化したことにより、スレーブデバイス側に転送要求が発生したことを認識する。通信調停回路１０８は、スレーブデバイス２０００−２００２の個数分だけこの情報を保持する。例えば、通信調停回路１０８は、リクエスト信号を、例えば、ファイフォ(FIFO: First-In First-Out)の方式で格納する。
【００３２】
スレーブデバイス２０００−２００２からリクエスト信号が同時に複数発生する場合、もしくは１つのリクエスト信号に応じて転送実施中に他のスレーブデバイスのうち複数のスレーブデバイスから複数の転送要求が入力される場合も想定される。このような場合に、転送を開始する際には、予め決められた所定の優先順位に従って通信すべきスレーブデバイスを決定するようにしてもよい。例えば、要求発生の先着順に通信すべきスレーブデバイスを決定するようにしてもよい。
【００３３】
通信対象のスレーブデバイスが決定すると、通信調停回路１０８は、チップセレクト切替回路１１２に、チップセレクト信号が通信対象のスレーブデバイスに対してのみ供給され、通信対象のスレーブデバイス以外のスレーブデバイスに対応するリクエストはデアサート状態とするための選択信号を入力する。
【００３４】
マスターデバイス１００は、シリアルIF(インターフェース)回路１１０を有する。シリアルIF回路１１０は、スレーブデバイス２０００−２００２に、クロック信号(sck)と、送信データ(sout)とを出力する。各スレーブデバイス２０００−２００２へのクロック信号(sck)と、送信データ(sout)は、共通線により構成される。マスターデバイス１００と、スレーブデバイス２０００−２００２との間では、シリアル通信が行われるためである。
【００３５】
また、シリアルIF回路１１０には、スレーブデバイス２０００−２００２からの送信データ(sin)が入力される。各スレーブデバイス２０００−２００２からの送信データは、共通線により構成される。シリアルIF回路１１０は、チップセレクト切替回路１１２に、チップセレクト信号の送信タイミングを表すタイミング信号を入力する。
【００３６】
マスターデバイス１００は、チップセレクト(CS: Chip Select)切替回路１１２を有する。CS切替回路１１２は、シリアルIF回路１１０により入力されたタイミング信号に従って、通信調停回路１０８により入力された選択信号に従って、通信対象のスレーブデバイスに、チップセレクト信号を送信する。チップセレクト切替回路１１２は、通信対象のスレーブデバイス以外のスレーブデバイスに対するリクエスト信号は、デアサート状態とする。チップセレクト通信線はマスターデバイス１００と各スレーブ２０００−２００２との間を１対１で接続する構成である。該通信対象のスレーブデバイスを示す選択信号により、マスターデバイス１００は通信を行うべきスレーブデバイスを認識できる。
【００３７】
CPU１０２と、DMAC１０４と、RAM１０６と、通信調停回路１０８と、シリアルIF回路１１０と、CS切替回路１１２の間は、バス１５０により接続される。
【００３８】
＜DMA転送処理＞
CPU１０２、DMAC１０４、シリアルIF回路１１０には、一般的なものを使用してかまわない。
【００３９】
例えば、CPU１０２としてARM系CPUが使用されてもよい。DMAC１０４としてARM PrimeCell PL080（以下、「PL080」という）が使用されてもよい。シリアルIF回路１１０として同期シリアルポートARM PrimeCell PL022が使用されてもよい。本実施例ではそれらを利用した回路を想定して記載している。
【００４０】
例えば、DMAC１０４として使用されるPL080ではリンクリストアイテム(LLI: Link List Item)レジスタを用いて、メモリ領域の連続するアドレスに配置されるデータと、周辺回路との間で所定ワード数だけDMA転送し、該DMA転送完了後、別のメモリ領域と周辺回路との間で同じようにDMA転送を行うことが可能である。
【００４１】
LLI情報には、転送元アドレスと、転送先アドレスと、次のLLIアドレスと、コントロール情報とが含まれる。コントロール情報には、指定された転送ワード数が含まれてもよい。以上の情報がメモリに配置される。PL080は、所定ワードの転送が終わると次のLLIアドレスに基づいて、次のLLI情報をロードして、同様の処理を行う。以上の処理が繰り返されることにより、メモリに、転送される。
【００４２】
ただし、PL080では、一連の転送が完了すると、次のLLI情報がロードされるが、本マスターデバイス１００により実行されるシリアル通信では、リクエスト信号が受信された際に対象となるスレーブデバイスとの間で送受信される情報を格納するメモリを転送先又は転送元に指定する。
【００４３】
図２は、本マスターデバイス１００におけるDMA転送処理の一例を示す。
【００４４】
本マスターデバイス１００では、次に発生するリクエスト信号は予測できない。スレーブデバイスに、何時送信すべきデータが発生するかは予測できないためである。リクエスト信号の発生が予測できないため、ダミーのLLI情報を用意し、DMAC１０４による転送要求がアサートされてから、該ダミーのLLI情報を１回転送する。転送誤りを防止するためである。
【００４５】
例えば、LLI情報には、転送元アドレスが含まれる。例えば、転送元アドレスとしてシリアル受信データに含まれる転送元アドレスが含まれる。LLI情報には、転送先アドレスが含まれる。例えば、転送先アドレスとしてスレーブデバイスのアドレスが含まれる。また、LLI情報には、次LLIアドレスが含まれる。また、LLI情報には、コントロール情報が含まれる。例えば、コントロール情報として、転送数が含まれる。
【００４６】
例えば、ダミーのLLI情報の転送の後に、本来転送すべきLLI情報をリクエストに応じて読み出しさせる。
【００４７】
これを繰り返すことで、所定領域にスレーブと通信するデータを格納しておくことができる。
【００４８】
＜通信システムの動作（その１）＞
図３は、本マスターデバイス１００により実行されるシリアル通信のタイミングチャートの一例を示す。図３には、リクエスト信号の受信と、該リクエスト信号が受信されたことにより実行される通信との間の関係が主に示される。図３において、送信は実線により表され、送信は破線により表される。
【００４９】
図３に示される例では、スレーブデバイスからのリクエスト信号同士は先着順に処理され、スレーブデバイス２０００−２００２からのリクエスト信号に応じて受信する処理よりも、CPU１０２により発生したマスターデバイス１００からスレーブデバイス２０００−２００２への転送要求が優先される場合の例を示す。該優先順位に限らず、優先順位を適宜設定してもよい。
【００５０】
図３では、スレーブデバイス２０００、２００１、２００２からのリクエスト信号と、CPU１０２によるスレーブデバイス２０００への送信要求が処理されている。
【００５１】
スレーブデバイス２０００からのリクエスト信号、 スレーブデバイス２００２からのリクエスト信号、 スレーブデバイス２００１からのリクエスト信号、 CPU１０２のスレーブデバイス２０００への送信リクエスト、 スレーブデバイス２００２からのリクエスト信号の順に発生している。
【００５２】
スレーブデバイス２０００、２００１、２００２からのリクエスト信号はそれぞれ、「REQ_0」、「REQ_1」、「REQ_2」により表され、CPU１０２によるスレーブデバイス２０００への送信要求は、「CPU送信コマンド」により表される。
【００５３】
スレーブデバイス２０００に、マスターデバイス１００へ送信すべきデータが発生する（１）。スレーブデバイス２０００は、マスターデバイス１００へリクエスト信号を送信する（２）。
【００５４】
マスターデバイス１００では、スレーブデバイス２０００からのリクエスト信号が受信され、信号調停回路１０８に入力される（３）。信号調停回路１０８からスレーブデバイス２０００を示す選択信号がCS切替回路に入力される。CS切替回路１１２は、シリアルIF回路１１０からのタイミング信号に従って、スレーブデバイス２０００に、チップセレクト信号を送信する（４）。
【００５５】
スレーブデバイス２０００は、マスターデバイス１００からチップセレクト信号が入力されたことにより送信すべきデータをマスターデバイスに送信できる。
【００５６】
次に、スレーブデバイス２００２に、マスターデバイス１００へ送信すべきデータが発生する（５）。スレーブデバイス２００２は、マスターデバイス１００へリクエスト信号を送信する（６）。
【００５７】
マスターデバイス１００では、スレーブデバイス２００２からのリクエスト信号が受信され、信号調停回路１０８に入力される（７）。信号調停回路１０８からスレーブデバイス２００２を示す選択信号がCS切替回路１１２に入力される。CS切替回路１１２は、シリアルIF回路１１０からのタイミング信号に従って、スレーブデバイス２００２に、チップセレクト信号を送信する（８）。
【００５８】
スレーブデバイス２００２は、マスターデバイス１００からチップセレクト信号が入力されたことにより送信すべきデータをマスターデバイスに送信できる。
【００５９】
次に、スレーブデバイス２００１に、マスターデバイス１００へ送信すべきデータが発生する（９）。その後、マスターデバイス１００に、スレーブデバイス２０００へ送信すべきデータが発生する（１０）。
【００６０】
スレーブデバイス２０００−２００２からのリクエスト信号に応じて受信する処理よりも、CPU１０２により発生した転送要求が優先されるため、スレーブデバイス２０００にデータを送信することが優先される。
【００６１】
マスターデバイス１００では、CPU送信コマンドが通信調停回路１０８に入力される（１１）。信号調停回路１０８からスレーブデバイス２０００を示す選択信号がCS切替回路１１２に入力される。CS切替回路１１２は、シリアルIF回路１１０からのタイミング信号に従って、スレーブデバイス２０００に、チップセレクト信号を送信する（１３）。
【００６２】
マスターデバイス１００からスレーブデバイス２０００に、チップセレクト信号が送信されたことにより、マスターデバイス１００は、スレーブデバイス２０００に、送信すべきデータを送信できる。
【００６３】
スレーブデバイス２００１に発生した、マスターデバイス１００へ送信すべきデータの処理が行われる。
【００６４】
スレーブデバイス２００１は、マスターデバイス１００へリクエスト信号を送信する（１４）。
【００６５】
マスターデバイス１００では、スレーブデバイス２００１らのリクエスト信号が受信され、信号調停回路１０８に入力される（１４）信号調停回路１０８からスレーブデバイス２００１示す選択信号がCS切替回路１１２に入力される（１５）。CS切替回路１１２は、シリアルIF回路１１０からのタイミング信号に従って、スレーブデバイス２００１に、チップセレクト信号を送信する（１６）。
【００６６】
スレーブデバイス２００１は、マスターデバイス１００からチップセレクト信号が入力されたことにより送信すべきデータをマスターデバイスに送信できる。
【００６７】
次に、スレーブデバイス２００２に、マスターデバイス１００へ送信すべきデータが発生する（１７）。スレーブデバイス２００２は、マスターデバイス１００へリクエスト信号を送信する（１８）。
【００６８】
マスターデバイス１００では、スレーブデバイス２００２からのリクエスト信号が受信され、信号調停回路１０８に入力される（１９）。信号調停回路１０８からスレーブデバイス２００２を示す選択信号がCS切替回路に入力される。CS切替回路１１２は、シリアルIF回路１１０からのタイミング信号に従って、スレーブデバイス２００２に、チップセレクト信号を送信する（２０）。
【００６９】
スレーブデバイス２００２は、マスターデバイス１００からチップセレクト信号が入力されたことにより送信すべきデータをマスターデバイスに送信できる。
【００７０】
図３に示される例では、スレーブデバイス２００２からのリクエスト（５）に従って、データ転送中にスレーブデバイス２００１からのリクエスト、CPU１０２による送信要求コマンドが順に発生している。この場合、CPU１０２による送信要求コマンドを優先する。CPU１０２による送信要求コマンドが優先されるため、スレーブデバイス２００２のデータ転送完了後、CPU１０２による送信要求が実施される。
【００７１】
＜通信システムの動作（その２）＞
図４は、本通信システムのタイミングチャートを示す。図４には、マスターデバイス１００と、スレーブデバイス２０００、２００１、２００２との間で実行されるシリアル通信におけるタイミングが主に示される。
【００７２】
図４に示されるタイミングチャートでは、シリアルIF回路１１０から出力されるクロック信号(sck)が「SSPCLKOUT」により表され、シリアルIF回路１１０から出力されるタイミング信号が「SSPFSSOUT」により表され、シリアルIF回路１１０に入力される受信データ(sin)が「SSPRXD」により表され、シリアルIF回路１１０から出力される送信データ(sout)が「SSPTXD」により表され、スレーブデバイス２０００、２００１、及び２００２に対するチップセレクト信号がそれぞれ、「CS0_N」、「CS1_N」、及び「CS2_N」により表される。
【００７３】
シリアルIF回路１１０からのタイミング信号に従って（１）、CS切替回路１１２から、スレーブデバイス２０００に、チップセレクト信号が送信される（２）。
【００７４】
マスターデバイス１００は、スレーブデバイス２０００からのデータを受信する（３）。
【００７５】
スレーブデバイス２０００は、マスターデバイス１００からのデータを受信する（４）。マスターデバイス１００とスレーブデバイス２０００との間で双方向通信が実行される。
【００７６】
所定の周期で、シリアルIF回路１１０から、CS切替回路１１２にタイミング信号が入力される（５）。該タイミング信号に従って、CS切替回路１１２から、スレーブデバイス２０００に、チップセレクト信号が送信される（６）。マスターデバイス１００とスレーブデバイス２０００との間の通信が継続されるためである。
【００７７】
マスターデバイス１００は、スレーブデバイス２０００からのデータを受信する（７）。
【００７８】
スレーブデバイス２０００は、マスターデバイス１００からのデータを受信する（８）。
【００７９】
以下、同様の動作が継続する。
【００８０】
本実施例によれば、スレーブ側から通信を開始したいときにリクエスト信号をアサートすることにより、必要なときだけシリアル通信を行うようにできる。必要なときだけシリアル通信を行うことにより通信量を削減できる。さらに、シリアル通信により受信されたデータをメモリに転送する際に、DMAで行うことによりマスター側の負担をさらに低減できる。
【００８１】
また、マスターデバイスに、複数のスレーブデバイスが接続される場合や、CPUからスレーブデバイスに送信すべきデータが発生した場合に、スレーブデバイスからの複数のリクエスト及び、CPUから複数のスレーブデバイスに対する送信要求を先着順等の所定の優先順位に従って受付けることもできる。所定の優先順位に従って受付けることにより、複数のスレーブデバイスと、マスターデバイスとの間でシリアル通信を行うことができる。複数のスレーブデバイスと、マスターデバイスとの間でシリアル通信が行われる場合でも、シリアル通信回路と、メモリとの間はDMAで転送されるよう制御できる。その結果、シリアル通信回路が１つで複数のスレーブデバイスとの間で通信できる。シリアル通信回路が１つでよいため回路規模を小さくできる。また、マスターデバイスの負荷も低減できる。
【００８２】
本通信システムは、
マスターデバイスとしての、マスター装置とスレーブデバイスとしての、スレーブ装置とを有する通信システムであって、
前記スレーブ装置は、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、
前記マスター装置に、前記リクエスト信号を送信する送信部と
を有し、
前記マスター装置は、
前記スレーブ装置からのリクエスト信号を受信する通信調停回路としての、リクエスト信号受信部と、
該受信部により受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する通信調停回路としての、選択部と、
該選択部により選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信するCS切替回路としての、送信部と
前記選択スレーブ装置からのデータを受信するシリアルIF回路としての、データ受信部と
を有する。
【００８３】
スレーブからの転送要求に応じて転送を開始するため、CPUで一定時間毎に、スレーブ装置に、ポーリングする方式に比較して、通信量を削減することが可能となる。
【００８４】
さらに、
前記データ受信部により受信されたデータを記憶するRAMとしての、記憶部と、
前記データ受信部により受信されたデータを前記記憶部にダイレクトメモリアクセスにより転送するダイレクトメモリアクセスコントローラと
を有する。
【００８５】
スレーブ装置から受信したデータをDMACを経由して転送するため、マスター装置のCPUの負荷を削減することができる。
【００８６】
さらに、
前記リクエスト信号受信部により複数のスレーブ装置からのリクエスト信号が受信された場合に、前記選択部は、所定の優先順位に従って、送信させるべきスレーブ装置を選択する。
【００８７】
１つのマスター装置に複数のスレーブ装置が接続されるシリアル通信システムであっても、スレーブ装置からの転送要求に応じて転送を開始することができるため、CPUで一定時間毎に、スレーブ装置に、ポーリングする方式に比較して、通信量を削減することが可能となる。
【００８８】
複数のスレーブ装置にデータ線、クロック線を共通で使用し、また、マスター装置のシリアル通信回路は１個で構成できるため、マスター側の回路規模を大きくせずに複数のスレーブデバイスを管理できる。
【００８９】
さらに、
スレーブ装置に送信すべきデータが発生した場合に、前記選択部は、所定の優先順位に従って、通信させるべきスレーブ装置を選択する。
【００９０】
マスター装置からスレーブ側への送信すべきデータが発生した場合でも対応できる。また、マスター装置からスレーブ装置に送信すべきデータが発生した際に、送信することを表すコマンドを発行するようにしてもよい。コマンドを発行することにより、CPUが介在することなく転送させることができる。このため、マスター装置のCPUの負荷が削減される。
【００９１】
本マスター装置は、
スレーブ装置と通信を行うマスター装置であって、
前記スレーブ装置により送信されるべきデータの送信要求を表すリクエスト信号を受信するリクエスト信号受信部と、
該受信部により受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択部と、
該選択部により選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信部と、
前記選択スレーブ装置からのデータを受信するデータ受信部と
を有する。
【００９２】
本スレーブ装置は、
マスター装置と通信を行うスレーブ装置であって、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成部と、
前記マスター装置に、前記リクエスト信号を送信する送信部と
を有し、
前記マスター装置において、前記スレーブ装置からのリクエスト信号に応じて、送信させるべきスレーブ装置を選択し、該選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信し、前記選択スレーブ装置からのデータを受信する。
【００９３】
本通信方法は、
マスター装置とスレーブ装置とを有する通信システムにおける通信方法であって、
前記スレーブ装置は、
送信すべきデータが発生した場合に、前記マスター装置に送信要求を表すリクエスト信号を生成するリクエスト信号生成ステップと、
前記マスター装置に、前記リクエスト信号を送信する送信ステップと
を有し、
前記マスター装置は、
前記スレーブ装置からのリクエスト信号を受信するリクエスト信号受信ステップと、
該受信ステップにより受信されたリクエスト信号に応じて、送信させるべきスレーブ装置を選択する選択ステップと、
該選択ステップにより選択された選択スレーブ装置に、データ送信が許可されたことを表す信号を送信する送信ステップと、
前記選択スレーブ装置からのデータを受信するデータ受信ステップと
を有する。
【００９４】
以上、本発明は特定の実施例を参照しながら説明されてきたが、各実施例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウェアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【００９５】
１００  マスターデバイス
１０２  中央演算処理装置(CPU: Central Processing Unit)
１０４  DMAC(Direct Memory Access controller)
１０６  RAM
１０８  通信調停回路
１１０  シリアルIF回路
１１２  チップスイッチ(CS)切替回路
１５０  バス
２００ｎ（ｎは、ｎ＞０の整数）  スレーブデバイス
２０２  リクエスト信号生成部
【先行技術文献】
【特許文献】
【００９６】
【特許文献１】特開平５−２９２１４８号公報
【特許文献２】特開２００６−３０４０１１号公報
【図１】
2012064021.tif 000003
【図２】
2012064021.tif 000004
【図３】
2012064021.tif 000005
【図４】
2012064021.tif 000006