説明

通信装置、情報処理装置、データ送信方法

【課題】複雑な優先度制御を行うことなく、複数の周辺回路に送信されるデータの時間保証が可能な通信装置を提供すること。
【解決手段】送信データが書き込まれる送信レジスタ35と、複数の送信先から1つの送信先を指定する送信先指定手段34と、送信先に送信データをシリアル送信する送信制御手段33と、送信待ちの送信データを蓄積する送信データバッファ36,39と、前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする送信データ制御手段40と、を有する通信装置100を提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、送信先にデータを送信する通信装置に関し、特に、チップセレクトにより送信先を切り換える通信装置に関する。
【背景技術】
【0002】
マイコン内のチップやマイコンと周辺のICがシリアル通信することでデータを送受信することがある。このようなシリアル通信において、送信側と受信側が1対多の関係になると、送信側(以下、単に通信装置という)にはチップセレクト機能が搭載されることが一般的である。また、マイコンでは周辺の各ICへのデータ送信要求が不定期に発生するため、あるICへのデータ送信中に別のICへのデータ送信要求が生じてもよいように、通信装置には送信バッファが設けられる。
【0003】
この送信バッファに複数の送信データが蓄積された場合に、送信制御をどのように行うかについていくつかの手法が知られている。例えば、FIFO(First In First Out)方式により送信データの送信順を管理することができる。しかし、FIFOでは、送信バッファにすでに多くのデータが蓄積されている場合、マイコンが新たに送信要求した送信データが送信されるまでの時間保証が困難になる。
【0004】
また、例えば、通信装置が優先度を管理する手法が知られている。この場合、通信装置は、IC毎に優先度を設定しておいたり、ソフトウェア等により動的に優先度を決定する、などの優先度管理が必要になる。しかし、IC毎に優先度を設定すると、優先度の低いICに送信される送信データの時間保証が困難になる。また、ソフトウェア等により動的に優先度を設定する手法では、処理が複雑になるという問題がある(例えば、特許文献1参照。)。特許文献1には、複数のレジスタにデータを書き込むレジスタ書き込み部において、複数のレジスタへのデータの書き込みタイミングが競合した場合、生成される内部クロック信号に基づいてデータ書き込みの優先順位を決定するレジスタ書き込み部が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−140215号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載された技術では、クロック周波数を利用するなどして優先度を決定するので、処理が複雑である点に変わりはない。また、ICの数が多くなった場合に対応しきれないという問題がある。
【0007】
本発明は、上記課題に鑑み、複雑な優先度制御を行うことなく、複数の周辺回路に送信されるデータの時間保証が可能な通信装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題に鑑み、本発明は、送信データが書き込まれる送信レジスタと、複数の送信先から1つの送信先を指定する送信先指定手段と、送信先に送信データをシリアル送信する送信制御手段と、送信待ちの送信データを蓄積する送信データバッファと、前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする送信データ制御手段と、を有する通信装置を提供する。
【発明の効果】
【0009】
複雑な優先度制御を行うことなく、複数の周辺回路に送信されるデータの時間保証が可能な通信装置を提供することができる。
【図面の簡単な説明】
【0010】
【図1】本実施形態の通信装置がデータを送信する手順を模式的に説明する図の一例である。
【図2】ECUの概略構成図の一例である。
【図3】従来の通信装置の構成図の一例とレジスタフォーマットの一例を示す図である。
【図4】本実施形態の通信装置の構成図の一例を示す図である。
【図5】本実施形態のレジスタフォーマットの一例を示す図である。
【図6】従来の通信装置のタイミングチャート図の一例である。
【図7】従来の通信装置のシーケンス図の一例である。
【図8】通信装置のタイミングチャート図の一例である。
【図9】通信装置のシーケンス図の一例である。
【図10】送信データ制御部の処理手順を示すフローチャート図の一例である。
【図11】優先度の遷移例を説明する図の一例である。
【図12】優先度の遷移例を説明する図の一例である。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施形態の通信装置が送信データを送信する手順を模式的に説明する図の一例である。
図1(a)に示すように、送信データバッファには送信データ1〜3が順番に書き込まれる。図では送信デーファバッファの下の送信データほど先に書き込まれたものとする。送信データバッファには優先度の設定が可能になっている。
【0012】
通信装置は、次送信データバッファが空いていれば、次送信データバッファに送信データを書き込む。優先度が同じ場合、書き込む送信データはFIFO(First In First Out)により決定される。このため、次送信データバッファの送信データ1は送信用のレジスタに書き込まれ、送信先に送信される。
図1(b)に示すように、次送信データバッファの送信データ1がなくなると、通信装置は送信データ1の次に古い送信データ2を次送信データバッファに書き込む。ここで、次送信データバッファに送信データ2が存在する状態で、送信レジスタに送信データ3aが書き込まれたとする。送信データ3と送信データ3aは送信先が同じ送信データである。
図1(c)に示すように、通信装置は、送信レジスタの送信データと同じ送信先の送信データが送信データバッファ又は次送信データバッファに存在すると、先に書き込まれた送信データの優先度を読み出し、1つインクリメントして、後から書き込まれた送信データの優先度を置き換える。つまり、送信データ3の優先度が“0”の場合、送信データ3aの優先度が“1”となる。これは、短時間に同じ送信先に送信される送信データは優先度が高いと考えられるためである。
図1(d)に示すように、通信装置は送信データバッファから送信データ3を消去し、送信データ3aを書き込む。これにより、後から送信される送信データを優先して送信することができる。
図1(e)に示すように、通信装置は次送信データバッファの送信データと送信データバッファの送信データの優先度を比較する。すなわち、送信データ2の優先度0と送信データ3aの優先度1を比較する。この場合、優先度の高い方を優先すべきと考えられる。
図1(f)に示すように、送信データバッファの送信データの方が優先度が高い場合、通信装置は次送信データバッファの送信データと送信データバッファの送信データを入れ替える。すなわち、送信データ2と送信データ3aを入れ替える。
【0013】
このように、通信装置は、同じ送信先の送信データの送信要求が頻繁に発生すると、該送信データの優先度を高くする。また、送信データバッファ又は次送データバッファに存在する送信先が同じ送信データを、後に書き込まれた送信データで上書きする。この結果、同じ送信先の送信データは1つになるので、時間保証がしやすくなる。
【0014】
また、送信データバッファの送信データは、送信の頻度に応じて優先度が調整されているので、後から書き込まれた送信データでも、頻繁に書き込まれる送信先の送信データは優先度が高くなり確実に時間保証される。
【0015】
また、同じ送信先の送信データは送信データバッファに1つだけになるので、送信データバッファのレジスタ数は送信先の数とすればよい(チップセレクト数)。このため、送信データバッファの容量を低減できる。従来の技術では、最大通信負荷を考慮して送信先毎に2つ以上のレジスタが用意することが一般的なので、本実施形態では、送信データバッファの容量を半分程度かそれ以下にすることができる。
【0016】
また、同じ送信先の送信データは1つしかないので、送信データ間の優先度管理が容易になる。このため、最大通信負荷を考慮した複雑な優先度管理が不要になる。また、1つの送信先に必要なレジスタ数が1つでよいので、送信データバッファを大きく取ることができない場合でも、送信先を増加させることが容易になる。
【0017】
〔構成例〕
図2は、ECUの概略構成図の一例を示す。ECU(electronic control unit)300はマイコン200や周辺の回路を有する。周辺の回路は、例えば、IC101(以下、区別する場合IC1〜4という)であり、マイコン200に付加的な機能を提供する。本実施形態の通信装置100はこのIC1〜4と通信する。
【0018】
マイコン200は、メインバス19に接続されたCPU11、RAM12、ROM13、INTC14、DMAC15、及び、バスコントローラ16を有する。また、マイコン200は、周辺バス20に接続されたTimer(以下、区別する場合Timer1、Timer0という)17、ADC18、及び、通信装置100を有する。CPU11は、シングルコア又はマルチコアのCPUである。または、ハードウェアマルチスレッド(HMT)型のCPUでもよい。CPU11はRAM12を作業メモリにしてプログラムを実行する。ROM13はフラッシュメモリなどの不揮発メモリであり、CPU11が実行するプログラムや静的なデータを記憶している。プログラムは、デバイスドライバ、OS、マイコン200に特有のアプリ、などである。アプリは1つとは限らず、例えば機能統合されたECU300では制御対象の異なる複数のアプリが記憶されることがある。
【0019】
DMAC15は、CPU11からの指示によりRAM12やROM13のデータをTimer17やADC18、通信装置100、又は、不図示のCANコントローラに送信する。また、DMAC15は、これらの回路からINTC14を介して割り込みされたCPU11から指示を受けて、Timer17やADC18、通信装置100からデータを受け取り、RAM12に書き込む。
【0020】
INTC14はIRQやその他の割り込み端子を介してTimer17、ADC18、又は、通信装置100から入力された割り込み要求を、周辺機器の優先順位に基づき調停してCPU11に通知する。これによりCPU11は割り込みした周辺機器に応じて決まった処理を実行する。
【0021】
バスコントローラ16は、メインバス19と周辺バス20との間のバス本数や周波数の違いを吸収して相互にデータを受け渡す。
【0022】
周辺バス20には、実行速度の比較的おそい周辺回路が接続されており、Timer17は、例えばCPU11が設定した値をカウントし終わるとINTC14を介してCPU11に割り込みすることでCPU11に通知する。通知によりCPU11は例えば定期的に所定のプログラムを実行することができる。
【0023】
通信装置100は、IC1〜4とそれぞれ接続されている。具体的には、クロック信号線、データ送信線、データ受信線、及び、C/S線によりIC1〜4とそれぞれ接続されている。通信装置100と1つのマルチプレクサを接続し、マルチプレクサからIC1〜4をそれぞれ接続してもよい。
【0024】
IC1〜4は、マイコン200が使用するリソースの一つである。これらは、マイコン200内のリソース(ADCやTimer)ではリソースが不十分な場合や、マイコン200が備えていない機能でマイコン200が必要とする機能を提供するために配置される。IC1〜4は、例えば、ADC、DAC、別のマイコン等である。そして、通信装置100は、マイコン200が選択的にIC1〜4と通信することを可能にする。例えば、マイコン200が十分な数のI/Oポートを有していない場合に有効である。IC1がADCであれば、マイコン200はIC1にA/D変換を要求する際に、IC1を送信先に指定して通信装置100に変換対象の送信データを書き込む。また、例えば、IC2が他のマイコンであれば、マイコン200は他のマイコンを送信先に指定して通信装置100に送信対象の送信データを書き込む。
【0025】
逆に、IC1〜4が通信装置100に送信した送信データは、通信装置100がINTC14を介してCPU11に割り込みすることで、受信したことが通知される。CPU11がDMAC15を制御すると、IC1〜4の送信データがRAM12に書き込まれる。
【0026】
〔通信装置の構成例〕
図3は、比較のために従来の通信装置100の構成図の一例(図3(a))とレジスタフォーマット(図3(b))を、図4は本実施形態の通信装置100の構成図の一例を、図5は本実施形態のレジスタフォーマットの一例を、それぞれ示す。
【0027】
図3(a)と図4を比較すると、本実施形態の通信装置100は、次送信データバッファ39と送信データ制御部40とを有する点で異なっている。また、送信データバッファ36と送信データ制御部40が接続されることで、時間保障された送信データの送信制御が可能になる。
【0028】
<レジスタフォーマット>
まず、レジスタフォーマットについて説明する。
・送信レジスタ35のレジスタフォーマットは、送信先チップセレクト指定ビットと送信データを有する。送信レジスタ35のレジスタフォーマットは従来から変更がない。
・受信レジスタ38のレジスタフォーマットは、受信チップセレクト番号ビットと受信データを有する。受信レジスタ38のレジスタフォーマットは従来から変更がない。
・送信データバッファ36のレジスタフォーマットは、プライオリティビット、送信先チップセレクト指定ビット、送信データを有する。本実施形態の送信データバッファ36のレジスタフォーマットにはプライオリティビットが追加されている。
・次送信データバッファ39のレジスタフォーマットは、送信データバッファ36のレジスタフォーマットと同じである。
【0029】
また、従来の送信データバッファ36が、送信先が4つしかなくても例えば30段必要であるのに対し、本実施形態の送信データバッファ36は最小では4段あればまかなえる。これは、送信先が同じ送信データにおいては、過去の送信データの優先度が、より新しい送信データに反映され、過去の送信データは上書きされるためである。
【0030】
また、各レジスタに設定される情報は以下のとおりである。
・送信先チップセレクト指定ビット:IC1〜4を選択するための情報
・送信データ:IC1〜4に送信されるデータ(データにはコマンドも含まれる)
・プライオリティビット:送信データの優先度情報(値が大きいほど優先度が高いとする)
・受信チップセレクト番号ビット:IC1〜4のうち送信データを受信レジスタ38に書き込んだICの識別情報
・受信データ:IC1〜4から受信されたデータ
また、各レジスタに送信データ等を設定する回路は以下のようになる。
・送信レジスタ:CPU11
・受信レジスタ:IC1〜IC4(シリアル通信制御部)
・送信データバッファ:送信データ制御部40
・次送信データバッファ:送信データ制御部40
・送受信制御レジスタ:CPU11
<通信装置の各ブロック>
クロック制御レジスタ31には、クロック周波数を制御するためのクロック制御情報(例えば分周比)が設定される。マイコン200は例えば電源オンの直後の初期設定などでクロック制御情報をクロック制御レジスタ31に設定する。シリアルクロック制御部32は、クロック制御情報に基づき例えばPLLと分周器を用いてクロック周波数を生成する。なお、このクロック周波数は、IC1〜4と同期を取るための信号であり、クロック信号線41を介してIC1〜4に供給される。シリアルクロック制御部32は、シリアル通信制御部33やマイコン200内の周辺機器にクロック周波数を供給する。
【0031】
シリアル通信制御部33は、シリアル出力信号線42とシリアル入力信号線43を有する。シリアル出力信号線42、シリアル入力信号線43はいずれもIC1〜4と接続されている。シリアル出力信号線42は、通信装置100からIC1〜4のいずれかに送信データを送信するための信号線であり、シリアル入力信号線43は、IC1〜4のいずれかから通信装置100が送信データを受信するための信号線である。なお、シリアル通信制御部33は、次送信データバッファ39、送受信制御レジスタ37、及び、受信レジスタ38と接続されている。
【0032】
シリアル通信制御部33は、不図示のデータバッファ(送信用、受信用)を有し、次送信データバッファ39の送信データをデータバッファに移動してから送信する。また、シリアル通信制御部33はIC1〜4から受信した送信データをデータバッファに蓄積し、1つの送信データを受信し終わると受信レジスタ38に移動する。なお、シリアル通信制御部33は、送信データの送信時、送信先のIC1〜4から受信データを受信する。受信された受信データは送信データのエコーや、受信状態を通知するためのデータである。
【0033】
チップセレクト制御部34は、チェネル数分のチップセレクト信号線を有する。すなわち、各チップセレクト信号線44がIC1〜4のいずれかと接続されている。チップセレクト制御部34は、次送信データバッファ39の送信先チップセレクト指定ビットを読み出し、この送信先チップセレクト指定ビットに基づきIC1〜4のいずれかと接続されたチップセレクト信号線44をアサートする(負論理正論理のいずれでもよい)。
【0034】
送信レジスタ35には、送信対象の送信データが書き込まれる。マイコン200のCPU11は、プログラムを実行することでIC1〜4のいずれかに送信データを送信する命令を実行すると、送信レジスタ35に送信データを書き込む。プログラムにとって、送信先チップセレクト指定ビットと送信データは引数などにより指定されている。
【0035】
送信データ制御部40は、送信レジスタ35、送信データバッファ36、及び、次送信データバッファ39と接続されている。送信データ制御部40は、送信データバッファ36においてプライオリティビットが付与されてない送信用のデータにプライオリティビットを付与する。プライオリティビットの初期値はゼロとする。また、送信データ制御部40は、送信データバッファ36において送信先が同じ送信データの検出、プライオリティビットの書き換え、送信先が同じ送信データのうち古い送信データの消去、次送信データバッファ39と送信データバッファ36のプライオリティビットの比較、比較結果に基づく送信データの入れ換え等を行う。詳しい制御は後述する。
【0036】
本実施形態の送信データバッファ36は、少なくとも送信先数と同じ数のレジスタを有する。送信先数よりも多い数のレジスタを有していてもよい。送信先数より多いレジスタを搭載することで、CPU11が短時間に同じ送信先の送信データを送信レジスタ35に書き込んだ場合に複数の送信データを送信データバッファ36に記憶できるので、マイコン200の待機状態を減らすことができる。
【0037】
送信データ制御部40は、プライオリティビットの高い送信データから優先して送信データバッファ36から読み出すが、プライオリティビットが同じなら古い送信データから読み出す。この意味で、送信データバッファ36はFIFO型の性質を有する。
【0038】
なお、従来の送信データバッファ36は、書き込み開始アドレスを示すライトポインタと、読み出し開始アドレスを示すリードポインタを有する。ライトポインタは送信データバッファ36に最後に送信データが書き込まれたレジスタの次のレジスタのアドレスを示し、リードポインタはシリアル通信制御部33に読み取られた送信データが記憶されていたレジスタの次のレジスタのアドレスを示す。送信データバッファ36の送信データがシリアル通信制御部33により送信されると、ライトポインタとリードポインタは同じレジスタのアドレスを示す。したがって、リードポインタの方がライトポインタよりも小さいアドレスを示す場合、シリアル通信制御部33が送信すべき送信データが送信データバッファ36に記憶されていることになる。
【0039】
次送信データバッファ39は、原則的に、次に、シリアル通信制御部33が送信する送信データが記憶されるバッファである。原則的にと書いたのは、シリアル通信制御部33に取り込まれる前であれば、優先度によって次送信データバッファ39から送信データバッファ36に移動する場合があるためである。いったん、シリアル通信制御部33に送信された送信データが次送信データバッファ39に戻ることはない。
【0040】
送受信制御レジスタ37は、マイコン200のCPU11が送信許可又は受信許可を設定するためのレジスタである。CPU11は、例えば、送信レジスタ35に送信データを書き込み終わると送信許可を送受信制御レジスタ37に設定し、送受信完了割り込みを受け取ると受信許可を送受信制御レジスタ37に設定する。
【0041】
受信レジスタ38はシリアル通信制御部33とチップセレクト制御部34と接続されている。受信レジスタ38には、チップセレクト制御部34がアサートしているチャネル情報により受信チップセレクト番号、及び、シリアル通信制御部33が受信した受信データが書き込まれる。シリアル通信制御部33がCPU11に送受信完了割り込みすると、CPU11は受信レジスタ38から受信データを読み出す。
【0042】
〔送信データについて〕
図1にて説明したように、本実施形態の通信装置100は送信先が同じ送信データのうち後の送信データのみを送信することになる。このため、送信データは相対値ではなく絶対値に制限される。例えば、状態そのものではなく状態の反転を要求する送信データ(例えば、“1”を送る度に開閉を判定する送信データ)は相対値が送信されるため、同じ送信先の送信データのうち奇数個が欠けると制御と状態が逆になってしまう。
【0043】
これに対し、High又はLow、オン又はオフ、開又は閉などのように、数値そのものが含まれる送信データは絶対値が送信されるため、同じ送信先の送信データのうち1つ以上が欠けても、最後の絶対値が有効なのでCPU11が指示したとおりの制御や状態が得られる。したがって、本実施形態のCPU11はこのような絶対値の送信データを送信するように設計されている。
【0044】
〔従来の送信例〕
図6は、比較のために説明する従来の通信装置100のタイミングチャート図の一例を、図7はシーケンス図の一例をそれぞれ示す。
s1:CPU11は、送信データ1を送信レジスタ35に書き込む。
s2:送信データバッファ36は送信レジスタ35への書き込みをフラグなどで検出して、送信データ1をレジスタに記憶する。なお、送信データバッファ36は、新たに記憶したレジスタの次のレジスタを示すようにライトポインタを更新する。この結果、ライトポインタとリードポインタが不一致となる。
s3:CPU11は送信データ1を送信レジスタ35に書き込むと、送受信制御レジスタ37に送信許可を設定する。
s4:シリアル通信制御部33は、ライトポインタとリードポインタの不一致を検出して、送信データバッファ36のリードポインタが示すレジスタから送信データ1を読み出す。
s5:シリアル通信制御部33は、送受信制御レジスタ37に送信許可が設定されているので、送信データ1の送信を開始する。なお、シリアル通信制御部33は、読み出したレジスタの次のレジスタを示すようにリードポインタを更新する。この結果、ライトポインタとリードポインタは一致する。
s6:シリアル通信制御部33が送信データ1を送信している間に、CPU11が送信データ2を送信レジスタ35に書き込む。
s7:送信データバッファ36は送信レジスタ35への書き込みをフラグなどで検出して、レジスタに記憶する。
s8:シリアル通信制御部33が送信データ1を送信している間に、CPU11が送信データ3を送信レジスタ35に書き込む。
s9:送信データバッファ36は送信レジスタ35への書き込みをフラグなどで検出して、レジスタに記憶する。s6〜s7においてもライトポインタが更新される。
s10:シリアル通信制御部33は送信データ1の送信が完了すると受信レジスタ38に受信データを書き込む。
s11:また、シリアル通信制御部33は送信データ1の送信が完了すると、CPU11に送受信完了割り込みを行う。
s12:シリアル通信制御部33は、ライトポインタとリードポインタの不一致を検出して、送信データバッファ36のリードポインタが示すレジスタから送信データ2を読み出す。
s13:シリアル通信制御部33は、送受信制御レジスタ37に送信許可が設定されているので、送信データ2の送信を開始する。なお、シリアル通信制御部33は、読み出したレジスタの次のレジスタを示すようにリードポインタを更新する。この次点では、ライトポインタとリードポインタは不一致のままである。
s14:シリアル通信制御部33は送信データ2の送信が完了すると受信レジスタ38に受信データを書き込む。
s15:また、シリアル通信制御部33は送信データ2の送信が完了すると、CPU11に送受信完了割り込みを行う。
s16:シリアル通信制御部33は、ライトポインタとリードポインタの不一致を検出して、送信データバッファ36のリードポインタが示すレジスタから送信データ3を読み出す。
s17:シリアル通信制御部33は、送受信制御レジスタ37に送信許可が設定されているので、送信データ3の送信を開始する。なお、シリアル通信制御部33は、読み出したレジスタの次のレジスタを示すようにリードポインタを更新する。これにより、ライトポインタとリードポインタが一致する。
s18:シリアル通信制御部33は送信データ3の送信が完了すると受信レジスタ38に受信データを書き込む。
s19:また、シリアル通信制御部33は送信データ3の送信が完了すると、CPU11に送受信完了割り込みを行う。
【0045】
〔本実施形態の送信例〕
図8は、本実施形態の通信装置100のタイミングチャート図の一例を、図9はシーケンス図の一例をそれぞれ示す。
s21:CPU11は、送信データ1を送信レジスタ35に書き込む。
s22:送信データ制御部40は、送信レジスタ35への書き込みをフラグなどで検出して、送信レジスタ35から送信データ1を読み出す。
s23:送信データ制御部40は、送信データバッファ36から各送信データの送信先チップセレクト指定ビットを読み出す。この時はまだ送信データバッファ36に送信データはない。
s24:送信データ制御部40は、次送信データバッファ39に記憶されている送信データの送信先チップセレクト指定ビットを読み出す。この時はまだ次送信データバッファ39に送信データはない。
s25:送信データ制御部40は、送信レジスタ35から読み出した送信データ1と、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ36又は次送信データバッファ39にあるか否かを判定する。
s26:ここでは、送信データバッファ36と次送信データバッファ39に送信データが記憶されていないので、送信データ制御部40は送信データ1を次送信データバッファ39に書き込む。
s27:CPU11が送信データ2を送信レジスタ35に書き込む。
s28:CPU11が送信データ3を送信レジスタ35に書き込む。
s29:送信データ制御部40は、送信レジスタ35への書き込みをフラグなどで検出して、送信レジスタ35から送信データ2を読み出す。
s30:送信データ制御部40は、送信データバッファ36から各送信データの送信先チップセレクト指定ビットを読み出す。送信データバッファ36にはまだ送信データがない。
s31:送信データ制御部40は、次送信データバッファ39に記憶されている送信データの送信先チップセレクト指定ビットを読み出す。次送信データバッファ39には送信データ1が記憶されているので、送信データ1の送信先チップセレクト指定ビットを読み出す。
s32:送信データ制御部40は、送信レジスタ35から読み出した送信データ2と、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ36又は次送信データバッファ39にあるか否かを判定する。
s33:送信データ1と送信データ2は、送信先チップセレクト指定ビットが一致しないので、送信データ制御部40は送信データ2を送信データバッファ36に書き込む。
s34:送信データ制御部40は、送信レジスタ35への書き込みをフラグなどで検出して、送信レジスタ35から送信データ3を読み出す。
s35:送信データ制御部40は、送信データバッファ36から各送信データの送信先チップセレクト指定ビットを読み出す。送信データバッファ36から送信データ2の送信先チップセレクト指定ビットが読み出される。
s36:送信データ制御部40は、次送信データバッファ39に記憶されている送信データの送信先チップセレクト指定ビットを読み出す。次送信データバッファ39には送信データ1が記憶されているので、送信データ1の送信先チップセレクト指定ビットを読み出す。
s37:送信データ制御部40は、送信レジスタ35から読み出した送信データ3と、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ36又は次送信データバッファ39にあるか否かを判定する。
s38:送信データ3と、送信データ1又は送信データ2は、送信先チップセレクト指定ビットが一致しないので、送信データ制御部40は送信データ3を送信データバッファ36に書き込む。
s39:CPU11は送受信制御レジスタ37に送信許可を設定する。
s40:シリアル通信制御部33は、次送信データバッファ39の送信データがあることをフラグなどで検知し、送信データ1を次送信データバッファ36から読み出す。次送信データバッファ39の送信データの下位の16ビットはシリアル通信制御部33に移動する。また、次送信データバッファ39の送信データの上位の4ビットはチップセレクト制御部34に移動する。
s41:シリアル通信制御部33は、送受信制御レジスタ37に送信許可が設定されているので、送信データ1の送信を開始する。
s42:送信データ制御部40は、次送信データバッファ39の送信データがシリアル通信制御部33に移動したことを検知して、送信データバッファ36から送信データ2を読み出し、次送信データバッファ39に書き込む。なお、送信データ2は送信データバッファ36から消去される。
s43:そして、シリアル通信制御部33が送信データ1を送信している間に、CPU11が送信データ3aを送信レジスタ35に書き込む。送信データ3aと送信データ3は送信先が同じである。
s44:送信データ制御部40は、送信レジスタ35への書き込みをフラグなどで検出して、送信レジスタ35から送信データ3aを読み出す。
s45:送信データ制御部40は、送信データバッファ36から各送信データの送信先チップセレクト指定ビットを読み出す。ここでは送信データ3の送信先チップセレクト指定ビットが読み出される。
s46:送信データ制御部40は、次送信データバッファ39に記憶されている送信データ2の送信先チップセレクト指定ビットを読み出す。ここでは、送信データ2の送信先チップセレクト指定ビットを読み出す。
s47:送信データ制御部40は、送信レジスタ35から読み出した送信データ3aと、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ36又は次送信データバッファ39にあるか否かを判定する。
s48:送信データ3aと送信データ3は、送信先チップセレクト指定ビットが一致するので、送信データ制御部40は、送信データバッファ36の送信データ3のプライオリティビットを読み出す。
s49:送信データ制御部40は、読み出したプライオリティビットを1インクリメントする。
s50:送信データ制御部40は、1インクリメントしたプライオリティビットを、送信データ3aのプライオリティビットに設定する。
s51:送信データ制御部40は、送信データバッファ36の送信データ3を、送信データ3aにより置き換える。
s52:送信データ制御部40は、次送信データバッファ39から送信データ2のプライオリティビットを読み出す。
s53:送信データ制御部40は、送信データバッファ36から送信データ3aのプライオリティビットを読み出す。
s54:送信データ制御部40は、送信データ3aと送信データ2のプライオリティビットを比較する。
s55:送信データ3aの方がプライオリティビットが大きいので、送信データ制御部40は次送信データバッファ39の送信データ2を送信データバッファ36に退避する。
s56:送信データバッファ36の送信データ3aを次送信データバッファ39に書き込む(送信データ2と送信データ3aを入れ替える)。
s57:シリアル通信制御部33は送信データ1の送信が完了すると受信レジスタ38に受信データを書き込む。
s58:また、シリアル通信制御部33は送信データ1の送信が完了すると、CPU11に送受信完了割り込みを行う。
s59:シリアル通信制御部33は、次送信データバッファ39に送信データがあることをフラグなどで検知し、また、送受信制御レジスタ37に送信許可が設定されているので、送信データ3aを読み出す。
s60:シリアル通信制御部33は送信データ3aの送信を開始する。これにより、次送信データバッファ39の送信データ3aの下位16ビットはシリアル通信制御部33に移動する。また、次送信データバッファ39の送信データ3aの上位の4ビットはチップセレクト制御部34に移動する。
【0046】
この後、送信データ制御部40は、次送信データバッファ39の送信データ3aがシリアル通信制御部33に移動したことを検知して、送信データバッファ36から送信データ2を読み出し、次送信データバッファ39に書き込む。送信データ2は、シリアル通信制御部33が送信データ3aを送信したら、シリアル通信制御部33により送信される。
【0047】
このように本実施形態の通信装置100は、送信データの優先度に応じて、送信順をソートして優先度の高い順に送信することができる。また、頻繁に送信されるデータほど優先度を高くすることができる。
【0048】
<送信データ制御部の処理手順>
図10は、送信データ制御部40の処理手順を示すフローチャート図の一例である。処理手順の一部がシーケンス図の説明と重複する。
【0049】
送信データ制御部40は送信レジスタ35を監視し、送信レジスタ35に書き込みがあるか否かを判定している(S110)。
【0050】
送信レジスタ35に書き込みがあった場合(S110のYes)、送信データ制御部40は送信レジスタ35から送信データを読み出す(S120)。
【0051】
送信データ制御部40は、次送信データバッファ39に同じ送信先の送信データがあるか否かを判定する(S130)。次送信データバッファ39にそもそも送信データがない場合、又は、次送信データバッファ39に送信データがあっても送信先チップセレクト指定ビットが一致しない場合、S130の判定はNoになる。
【0052】
次送信データバッファ39に同じ送信先の送信データがある場合(S130のYes)、送信データ制御部40は、次送信データバッファ39のデータ部分(下位16ビット)を、送信レジスタ35から読み出した送信データのデータ部分で置き換える(S140)。これにより、後から同じ送信先に送信されるデータのみを送信でき、時間保証が容易になる。
【0053】
次に、送信データ制御部40は、次送信データバッファ39のプライオリティビットを1インクリメントする(S150)。これにより、頻繁に送信される送信データの優先度を大きくすることができる。
【0054】
次送信データバッファ39に同じ送信先の送信データがない場合(S130のNo)、送信データ制御部40は、送信データバッファ36に同じ送信先の送信データがあるか否かを判定する(S160)。なお、次送信データバッファ39と送信データバッファ36に同じ送信先の送信データが記憶されることはない。また、次送信データバッファ39に送信データが書き込まれていないのに、送信データバッファ36に送信データが書き込まれている状況は生じない。
【0055】
送信データバッファ36に同じ送信先の送信データがある場合(S160のYes)、送信データ制御部40は、送信データバッファ36の送信先が同じ送信データからプライオリティビットを取得する(S170)。
【0056】
送信データ制御部40は、取得したプライオリティビットを1インクリメントする(S180)。これにより、頻繁に送信される送信データの優先度を大きくすることができる。
【0057】
送信データ制御部40は、1インクリメントしたプライオリティビットを、送信先レジスタから読み出した送信データのプライオリティビットに設定する(S190)。
【0058】
そして、プライオリティビットが新たに設定された送信データを、送信データ制御部40は送信データバッファ36の送信先が同じ送信データに上書きする(S200)。これにより、後から同じ送信先に送信されるデータのみを送信できる。
【0059】
送信データ制御部40は、次送信データバッファ39のプライオリティビットが、上書きした送信データバッファ36の送信データのプライオリティビット以上か否かを判定する(S210)。プライオリティビットが等しい場合は、先に次送信データバッファ39に書き込まれている送信データが優先される。このため、次送信データバッファ39のプライオリティビットが、上書きした送信データバッファ36の送信データのプライオリティビット以上の場合(S210のYes)、処理は終了する。
【0060】
次送信データバッファ39のプライオリティビットが、上書きした送信データバッファ36の送信データのプライオリティビット以上でない場合(S210のNo)、上書きした送信データバッファ36の送信データのプライオリティビットが最も大きいことになる。このため、送信データ制御部40は、送信データバッファ36の上書きされた送信データと、次送信データバッファ39の送信データを入れ替える(S220)。これにより、頻繁に送信される送信データを優先的に送信することができる。
【0061】
一方、ステップS160において、送信データバッファ36に同じ送信先の送信データがない場合(S160のNo)、送信データ制御部40は、次送信データバッファ39に送信データが書き込まれているか否かを判定する(S230)。なお、この判定はS130で判定しておくこともできる。
【0062】
次送信データバッファ39に送信データが書き込まれている場合(S230のYes)、次送信データバッファ39に送信データを書き込めないので、送信データ制御部40は、送信レジスタ35から読み出した送信データを送信データバッファ36に書き込む(S240)。
【0063】
次送信データバッファ39に送信データが書き込まれていない場合(S230のNo)、次送信データバッファ39に送信データを書き込めるので、送信データ制御部40は、送信レジスタ35から読み出した送信データを次送信データバッファ39に書き込む(S250)。
【0064】
〔優先度の遷移について〕
図11は、優先度の遷移例を説明する図の一例である。図11(a)に示すように、次送信データバッファ39に送信データ3が書き込まれた状態で、送信レジスタ35にデータ3aが書き込まれると、図11(b)に示すように、優先度が1つ大きくなった送信データ3aが次送信データバッファ39に書き込まれる(S140,S150の処理)。
【0065】
CPU11が次々と同じ送信先に送信データ3bを送信する状況が生じた場合を想定すると、まず、図11(c)(d)に示すように、送信データ3bの優先度が送信データ3aに対し1つ大きくなり、次送信データバッファ39に送信データ3bが書き込まれる。
【0066】
次に、送信レジスタ35に送信データ3cが書き込まれた場合も、同様に、図11(e)(f)に示すように、送信データ3cの優先度が送信データ3bに対し1つ大きくなり、次送信データバッファ39に送信データ3cが書き込まれる。
【0067】
図12は、優先度の遷移例を説明する図の別の一例である。送信データバッファ36の送信データ2と同じ送信先に、CPU11が次々と送信データを送信する状況が生じたとする。この場合、次送信データバッファ39の送信データと送信データバッファ36の送信データのプライオリティビットが逆転した時に、次送信データバッファ39の送信データと送信データバッファ36の送信データが入れ替わる。
【0068】
図12(a)(b)は図11(a)(b)と同じ状態である。そして、例えば図12(c)において、送信レジスタ35に送信データ2aが書き込まれた場合、送信データ2aの優先度が送信データ2に対し1つ大きくなり、図12(d)に示すように、送信データバッファ36に送信データ2aが書き込まれる(S170〜S200の処理)。この次点では、次送信データバッファ39の送信データ3aと送信データバッファ36の送信データ2aのプライオリティビットが等しい。
【0069】
次に、図12(e)において、送信レジスタ35に送信データ2bが書き込まれた場合、送信データ2bの優先度が送信データ2aに対し1つ大きくなり、図12(f)に示すように、送信データバッファ36に送信データ2bが書き込まれる。
【0070】
この次点で、次送信データバッファ39の送信データ3aと送信データバッファ36の送信データ2bのプライオリティビットが逆転するので、次送信データバッファ39の送信データ3bと送信データバッファ36の送信データ2bの入れ替えが発生する。
【0071】
〔その他〕
上記の実施形態では、プライオリティビットの初期値をゼロとしたが、送信データ制御部40はゼロ以外のプライオリティビットを設定することもできる。例えば、送信データ制御部40は、過去の所定時間(例えば、数秒)の送信先毎の送信頻度を監視し、送信頻度の小さい送信データのプライオリティビットを大きくして、初期値として送信データバッファ36に設定する。たまにしか送信されない送信先の送信データのプライオリティビットの初期値が大きくなるので、高頻度に送信されるためプライオリティビットが大きくなった送信データに対し、たまにしか送信されない送信先データに対しても時間保証しやすくなる。
【0072】
また、プライオリティビットは送信データ制御部40が設定するとしたが、CPU11が設定可能としてもよい。この場合、CPU11が実行するソフトウェアは、送信先毎に、又は、同じ送信先でもイベントの種類によってプライオリティビットを増減する。したがって、他の送信データが高頻度で送信されているため優先度が高くなっても、CPU11が早く送信したい送信データを優先的に送信することができる。
【符号の説明】
【0073】
11 CPU
31 クロック制御レジスタ
32 シリアルクロック制御部
33 シリアル通信制御部
34 チップセレクト制御部
35 送信レジスタ
36 送信データバッファ
37 送受信制御レジスタ
38 受信レジスタ
39 次送信データバッファ
40 送信データ制御部
100 通信装置
101 IC
200 マイコン
300 ECU

【特許請求の範囲】
【請求項1】
送信データが書き込まれる送信レジスタと、
複数の送信先から1つの送信先を指定する送信先指定手段と、
送信先に送信データをシリアル送信する送信制御手段と、
送信待ちの送信データを蓄積する送信データバッファと、
前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする送信データ制御手段と、
を有する通信装置。
【請求項2】
前記送信データバッファには、優先度情報が付加された状態で送信データが蓄積され、
前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする際、
同じ送信先の送信データを上書きする頻度に応じて優先度情報を決定して、前記送信データバッファに書き込む、
ことを特徴とする請求項1記載の通信装置。
【請求項3】
優先度情報が大きいほど優先度が高い場合、
前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする際、
前記送信データバッファに蓄積されている送信データの優先度情報よりも大きい優先度情報を、前記送信レジスタに書き込まれた送信データの優先度情報に設定して上書きする、
ことを特徴とする請求項2記載の通信装置。
【請求項4】
前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする際、
上書きする回数が多くなるほど、大きい優先度情報を前記送信レジスタに書き込まれた送信データの優先度情報に設定して上書きする、
ことを特徴とする請求項3記載の通信装置。
【請求項5】
前記送信データバッファは、前記送信制御手段が送信対象とする送信データが記憶される次送信データバッファと、次送信データバッファに書き込まれるまで1つ以上の送信データが蓄積される送信待ち送信データバッファとを有し、
前記送信レジスタに書き込まれた送信データと前記次送信データバッファに蓄積されている送信データの送信先が同じ場合、
前記送信データ制御手段は、前記次送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする、
ことを特徴とする請求項1〜4いずれか1項記載の通信装置。
【請求項6】
前記送信データバッファは、前記送信制御手段が送信対象とする送信データが記憶される次送信データバッファと、次送信データバッファに書き込まれるまで1つ以上の送信データが蓄積される送信待ち送信データバッファとを有し、
前記送信待ち送信データバッファに蓄積されている送信データを、決定された優先度情報とともに前記送信レジスタに書き込まれた送信データで上書きしたことで、
前記送信待ち送信データバッファの送信データの方が、前記次送信データバッファの送信データよりも優先度が高くなった場合、
前記送信データ制御手段は、前記送信待ち送信データバッファの最も優先度が高い送信データと、前記次送信データバッファの送信データを入れ替える、
ことを特徴とする請求項2〜4いずれか1項記載の通信装置。
【請求項7】
前記優先度情報の初期値はゼロ又は前記送信レジスタに送信データが書き込まれる際に任意に設定される、
ことを特徴とする請求項2〜6いずれか1項記載の通信装置。
【請求項8】
請求項1〜7いずれか1項記載の通信装置と、
プログラムを記憶するプログラム記憶手段と、
プログラムを実行する演算手段と、
前記演算手段の演算結果に応じて前記送信レジスタに送信先と送信データを書き込むデータ書き込み手段と、
を有する情報処理装置。
【請求項9】
送信データが書き込まれる送信レジスタと、
複数の送信先から1つの送信先を指定する送信先指定手段と、
送信先に送信データをシリアル送信する送信制御手段と、
送信待ちの送信データを蓄積する送信データバッファと、を有する通信装置のデータ送信方法であって、
前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする、
ことを特徴とするデータ送信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−253659(P2012−253659A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−126277(P2011−126277)
【出願日】平成23年6月6日(2011.6.6)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】