次に本願技術思想を当て嵌めた例として実施形態をもって下記に説明する。
<第1の実施形態>
<カメラと交換レンズの回路構成>
図1は本発明を実施した交換レンズ2と当該交換レンズ2を装着可能なカメラ1の回路構成を表す図である。なお、交換レンズ2には、後述するようにCLK信号を出力せずに同期させることができる非同期通信を行うことができないI型レンズと、非同期通信を行うことができるII型レンズがある。カメラ1はマウント部3を、交換レンズ2はレンズマウント部4をそれぞれ有する。
カメラ1の内部にはバッテリー11、電源生成部12、カメラ側マイクロコンピュータ13がある。電源生成部12はバッテリー11が出力する電圧を入力して、カメラ側マイクロコンピュータ13等の電気回路が動作するために最適に安定化された電源電圧を発生し、これを電気回路各部に供給する。通常カメラ1の内部には露出制御のための測光センサー、オートフォーカス制御のためのAFセンサーがある。また同様に、デジタル画像を撮影するための撮像素子やその駆動回路、AD変換回路、画像処理回路、液晶モニタとその駆動回路、デジタル画像を記録する為のメモリ、メカ駆動用のモータードライバなどの回路構成が存在する。これらは、本願技術思想の主旨には深くは関わらないので不図示としてある。
カメラ側のマウント部3に設けられた交換レンズとの電気信号授受のための接点部14から18について説明する。14は電源生成部12が発生したレンズ用電源を交換レンズに供給するためのカメラ側電源端子である。15はカメラと交換レンズが通信を行う場合に同期クロック信号等を伝達するための第1の端子としてのカメラ側CLK端子である。16はカメラから交換レンズへ通信データを送信するための第2の端子としてのカメラ側DOC端子、17は交換レンズからカメラへの通信データを受信するための第2の端子としてのカメラ側DOL端子である。なお、第2の端子としてのDOC端子やDOL端子は、本実施例ではシリアル通信として、それぞれ別々のDOC端子16やDOL端子17として記載する。この点、第2の端子としてのDOC端子やDOL端子を1の端子として応用することもできる。これらの端子15〜17はカメラ側マイクロコンピュータ13と接続されている。18は接地端子である。また、19は温度センサーでカメラ周辺の温度に関する情報を出力する。その温度出力はカメラ側マイクロコンピュータ13に接続されている。
交換レンズ2の内部にはレンズ側マイクロコンピュータ21があり、24から28はレンズ側のレンズマウント部4に設けられたカメラとの電気信号授受のための接点部である。25はカメラから電源供給を受けるためのレンズ側電源端子である。25はカメラと通信を行う場合に同期クロック信号等を伝達するためのレンズ側CLK端子、26はカメラから交換レンズへの通信データを受信ためのレンズ側DOC端子、27は交換レンズからカメラへ通信データを送信するためのレンズ側DOL端子である。28はレンズ側接地端子である。
カメラ1に交換レンズ2が正常に装着されると、カメラ側の端子14〜18とレンズ側の端子24〜28が図示したとおりにそれぞれ1対1に接続される。
なお、本願発明はカメラとレンズとの間で無線通信を行う場合においても適用できる。
また、本実施例ではカメラ側の端子14〜18がマウント部3に設けられる構成としたが、カメラ側CLK端子15はマウント部3以外に設けられる構成としても良い。同様に、レンズ側の端子24〜28がレンズマウント部4に設けられる構成としたが、レンズ側CLK端子25はレンズマウント部4以外に設けられる構成としても良い。
本実施例においては、以下に説明するように交換レンズ2には2型ある。一つは、カメラとの通信において同期通信はできるが非同期通信ができないI型レンズで、他方は、カメラとの通信において同期通信と非同期通信とを行うことができるII型レンズである。ここで、同期通信とは、CLK端子25で伝達する同期クロック信号に基づいてカメラと交換レンズとが送受信の同期を保ちながらデータを通信する方法をいう。一方、非同期通信とは、CLK端子25が伝達していた同期クロック信号を用いずにカメラと交換レンズ間で予め取り決めたボーレートでデータを通信する方法をいう。
<シリアル通信制御に関わる構成>
図2はカメラ側マイクロコンピュータ13或いはレンズ側マイクロコンピュータ21に内蔵される回路構成のうち、シリアル通信制御に関わる構成を示したものである。カメラ側マイクロコンピュータ13とレンズ側マイクロコンピュータ21とは当然別物であるが、シリアル通信制御に関わる構成としては同一の構成要件を持っていて構わないので共通の図面で説明する。
31は発振子で例えば水晶発振子やセラミック振動子などが使われる場合が多く、こうした発振子についてはマイクロコンピュータに内蔵されるよりも外付けされる場合も多い。32はクロック発生回路で発振子31に接続されて源振クロックを発生させる源振回路である。源振回路32は、源振クロックをより高い周波数へ変換する逓倍回路、逓倍回路で変換された高周波数のクロックを元に分周・合成等を行い様々な周波数のクロックを生成するクロック生成回路などから構成される。33は通信制御回路で図3を使って詳しく説明する。34はカウンタ・タイマー回路で入力される信号のパルス数をカウントしたり、入力される信号の時間幅を測定したりすることができる。クロック発生回路32で生成されたクロック信号は通信制御回路33及びカウンタ・タイマー回路34に供給される。IO制御回路35〜37について説明する。IO制御回路35〜37は、それぞれ入出力端子45〜47の入出力信号のデータ入出力方向及び入出力信号種類並びに入出力回路形態を切替える回路である。データ入出力方向切替えというのは文字通り端子をデータ入力として使うか、データ出力として使うかの切替えである。入出力信号種類切替えというのは汎用パラレルIO信号の入出力信号を端子に接続するか、通信制御回路33との入出力信号を端子に接続するかの切替えである。入出力回路形態の切替えというのは先述した特許文献1に記載されているオープンドレイン方式で出力するかCMOS方式で出力するかの切替え並びにプルアップ抵抗を接続するか否かの切替えである。IO制御回路35は入出力端子45の入出力切替えを行うもので、通信制御回路33からは同期クロック信号SCLKが接続されていて、このSCLK信号をカウンタ・タイマー回路34に供給可能である。IO制御回路36は入出力端子46の入出力切替えを行うもので、通信制御回路33からはシリアル通信データ出力信号TXDが接続されている。IO制御回路37は入出力端子47の入出力切替えを行うもので、通信制御回路33からはシリアル通信データ入力信号RXDが接続されている。
38は割り込み制御回路で通信制御回路33及びカウンタ・タイマー回路34から割り込み発生信号が接続されている。40はマイクロコンピュータ内のデータバスで説明してきた通信制御回路33及びカウンタ・タイマー回路34やIO制御回路35〜37はこのデータバス34に接続されて動作に必要なデータの受け渡しができる。尚、マイクロコンピュータ内には本図に記載以外のALU、プログラムカウンタ、ROM、RAM、ADコンバータ等の回路構成が存在するが、不図示としてある。
カメラ側マイクロコンピュータの場合、入出力端子45は図1のCLK端子15に、入出力端子46は図1のDOC端子16に、入出力端子47は図1のDOL端子17にそれぞれ接続される。
レンズ側マイクロコンピュータの場合、入出力端子45は図1のレンズ側CLK端子25に、入出力端子46は図1のレンズ側DOL端子27に、入出力端子47は図1のレンズ側DOC端子26にそれぞれ接続される。これは本実施例の説明ではDOC信号をカメラからレンズへの送信データ、DOL信号をレンズからカメラへの送信データとしているためである。
<通信制御回路33についてより詳細な構成>
図3は図2で示した通信制御回路33についてより詳細な構成を説明するための図である。クロック発生回路32が発生する様々な周波数のクロック信号はボーレートジェネレータ51に入力される。ボーレートジェネレータ51はデータバス40を通して送られてくる各種通信設定データに従って通信制御に必要なクロック信号を発生させる。通信設定データとしては通信のマスターかスレーブかの切替え、同期通信か非同期通信かの切替え、同期通信の場合の同期クロック周波数設定、非同期通信の場合の非同期サンプリングクロック周波数設定などがある。通信設定データにより同期通信及び通信マスターが設定されている場合は、同期通信の場合の同期クロック周波数設定値に従った同期クロック信号SCLKを出力する。通信設定データにより同期通信及び通信スレーブが設定されている場合は、同期クロック信号SCLKを入力することになる。同期クロック信号SCLKは52の送受信制御ブロックにも供給される。通信設定データにより非同期通信が設定されている場合は、非同期通信の場合の非同期サンプリングクロック周波数設定に従ったサンプリング用クロックを送受信制御ブロック52に供給する。送受信制御ブロック52はやはりデータバス40を通して送られてくる各種通信設定データに従って後述する送信シフトレジスタ53及び受信シフトレジスタ54にシフトクロックを供給したり、送受信のトリガ信号を入出力してシリアル通信のタイミング制御を行う。また、シリアル通信の送受信完了のタイミングで割り込み信号の発生も行う。
53は送信シフトバッファで、シリアル通信で送信するデータをパラレル入力し信号TXDとしてシリアル出力する。シリアル出力するためのシフトクロックは送受信制御ブロック52から供給される。非同期通信する場合は送信トリガ信号を送受信制御ブロック52から入力する。54は受信シフトレジスタで、シリアル通信で受信するデータ信号RXDをシリアル入力しパラレル出力する。シリアル入力するためのシフトクロックは送受信制御ブロック52から供給される。非同期通信する場合は受信トリガ信号を送受信制御ブロック52に出力する。55は送信データレジスタでデータバス40より送信用データを入力されて、送信シフトレジスタ53にデータセットする。56は受信データレジスタで受信シフトレジスタ54より受信データを入力されてデータバス40に出力可能とする。
<同期通信のプロトコル>
図4は同期通信によるカメラと交換レンズとの間のプロトコル例である。信号CLKは同期通信用の同期クロックである。また、この例では、カメラと交換レンズとの間でカメラが通信のマスター側になる。信号DOCはカメラ側が出力してレンズ側が入力する通信データ、信号DOLはレンズ側が出力してカメラ側が入力する通信データである。
本例では8ビットを1送信単位として同期クロックCLKの立下りエッジに同期して信号DOC及びDOLのデータが変化して、同期クロックCLKの立ち上がりエッジにてカメラ側はDOLのデータを、レンズ側はDOCのデータをラッチする例で記載している。信号DOC及びDOLのレベルが同期クロックCLKの立下りエッジに同期してどのように変化するかは送信するデータの各ビット毎の値に依存するので細かくは記載していない。
なお、クロック信号に同期させる同期通信は、接点数が少なくても多数の情報の交換ができる。中でも比較的安価なマイクロコンピュータ等で動作クロックの精度誤差があっても確実なデータ受け渡しが実現可能である。
<カメラ側のマイクロコンピュータ13の制御フロー>
図4記載の通信プロトコルに従ってカメラ側のマイクロコンピュータ13が交換レンズと通信を行う場合の制御フローについて図5に従って説明する。
同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する(ステップ301)。本例ではレンズ側がこの端子をLレベルにしている状態はBusy状態であるものとし、この状態ではカメラは、同期クロックCLKも含め、レンズと通信することができない。Busy状態とは、通信待ち受け不能状態である。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合はステップ302へ進む。
ステップ302では、レンズに送信するデータDATA_C1をシリアルデータ送信シフトレジスタにセットして、1送信単位のシリアル通信を行う。レンズに送信するデータDATA_C1がレンズに対する何らかのコマンドであり、それに応答するレンズからの返答データは次の1送信単位の通信時のデータDATA_L2である。よって、この時にレンズからカメラに送られてくるデータDATA_L1はカメラからの指示に対応しない非対応(don’t care)データであるので特に読み込んで処置などをしない。
同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する(ステップ303)。送信したデータDATA_C1の内容をレンズ側が解析してそれに対応する処理をする間は、交換レンズが同期信号CLKを出力する端子をLレベルとする。これにより同期信号CLKがBusy状態になるので、その処理が完了して交換レンズが同期信号CLKを出力する端子をHレベルとするまで待つ。つまり、交換レンズ側がBusy状態ではなくなるのを待ってからステップ304へ進む。
次に、交換レンズに送信するデータDATA_C2をシリアルデータ送信シフトレジスタにセットして、1送信単位のシリアル通信を行う(ステップ304)。ステップ302で送信したデータDATA_C1がレンズに対してレンズ固有の情報をカメラに送信するコマンドであった場合は、データDATA_C2の内容は非対応データである。この場合、レンズから送られてくるデータDATA_L2にデータDATA_C1の回答情報があることになる。受信シフトレジスタに受信されたデータDATA_L2を取り込む(ステップ305)。
以上が交換レンズと通信を行う場合のカメラ側のマイクロコンピュータの基本的な動作フローである。
<レンズ側のマイクロコンピュータ21の制御フロー>
次に図4記載の通信プロトコルに従って交換レンズ側のマイクロコンピュータ21がカメラと通信を行う場合の制御フローについて図6に従って説明する。
交換レンズ側のマイクロコンピュータ21は通信に際してはスレーブ側となる。よって、カメラからの1送信単位のシリアル通信を受信したことを同期クロック信号CLKの立下りエッジ数が所定数カウントされたことにより割り込み信号を発生する通信割り込み機能により検知する。
まずは、同期クロック信号CLKを受信する端子をLレベルにし、レンズ側がBusy状態であることをカメラが判別できるようにする(ステップ401)。
受信シフトレジスタに入力されているカメラからの送信データDATA_C1を入力し、その内容を解析する。尚、カメラからの送信データはDATA_C1であるが、その後DATA_C2等が送られてくる場合があるので、フローチャート上はDATA_Cxと記載してある(ステップ402)。
ステップ403において、カメラからの送信データDATA_C1の内容が交換レンズ側のアクチュエータの駆動命令である場合は、ステップ404へ進む。
ステップ404では、カメラからの送信データDATA_C1の内容に従って交換レンズ側のアクチュエータの駆動処理を行う。レンズ側のアクチュエータの駆動に関する処理が終わり、次のカメラからの通信を受信可能となったかどうかを判別する(ステップ405)。受信可能になれば、ステップ407へ進む。
上記ステップ403のステップでカメラからの送信データDATA_C1の内容が交換レンズ固有のデータ送信要求であった場合はステップ406へ進む。ステップ406において、カメラからの送信データDATA_C1に従い要求されているレンズ固有のデータを送信シフトレジスタにセットする。
ステップ407では、同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする。
なお、高精度な露出制御やオートフォーカス制御を行う為に通信すべきデータ量は多送信単位に渡る上に、交換レンズのズーム位置や距離環位置が変化するごとに逐次情報更新が必要なので、カメラはこうした通信を頻繁に行う必要がある。カメラ側のマイクロコンピュータはその度にレンズのBusy解除を待ちながら通信するために、同期クロック信号CLKの周波数を上げても動作パフォーマンスは思ったほど向上しない問題がある。レンズ側のマイクロコンピュータは頻繁にカメラからの通信割り込みが発生し、その都度Busy信号出力及び解除のために通信割り込み処理を優先的に行わなければならないので、こちらも動作パフォーマンスが上がらない問題がある。
<カメラシステムの通信設定動作>
図7は本発明を実施したカメラと交換レンズとからなるカメラシステムの通信に関する設定動作フローチャートである。なお、カメラ側及び交換レンズ側マイクロコンピュータ個々の動作フローは後述する。図7では、全体的な動作の流れとして本図を説明する。
不図示の電源スイッチがオンされてカメラと交換レンズとが動作可能になると、フローチャートの動作が開始される。
カメラ側マイクロコンピュータ13は交換レンズとの通信方式の初期設定として、同期通信で、通信制御回路33並びにIO制御回路35〜37の設定を行う(ステップ101)。I型レンズ及びII型レンズとも対応可能だからである。この設定によりカメラ側マイクロコンピュータ13においては通信を行う際は通信マスターとして通信同期クロックSCLK信号が入出力端子45から出力される設定となる。さらにカメラ側マイクロコンピュータ13においてはカメラから交換レンズへの送信データTXD信号が入出力端子46から出力され、交換レンズからカメラへの送信データRXD信号が入出力端子47から入力される設定となる。
交換レンズは、非同期通信対応可能なII型レンズの場合も、初期設定として同期通信のスレーブ設定を通信制御回路33並びにIO制御回路35〜37に行う。この設定によりレンズ側マイクロコンピュータ21においては通信同期クロックSCLK信号を入出力端子45より入力する設定となる。加えてレンズ側マイクロコンピュータ21においては交換レンズからカメラへの送信データTXD信号が入出力端子46から出力され、カメラから交換レンズへの送信データRXD信号が入出力端子47から入力される設定となる。
カメラと交換レンズとの間で同期方式による通信を行う(ステップ102)。同期通信のタイミングチャートやカメラ側マイクロコンピュータ13並びにレンズ側マイクロコンピュータ21の動作フローは図10〜図12を用いて追って説明する。
この通信でカメラ側はDATA_C1にてレンズ情報送信コマンドを送信する。レンズ情報送信コマンドとは、交換レンズに対して交換レンズの種類や名称、或いは非同期通信対応不可能のI型レンズであるか非同期通信対応可能なII型レンズであるかを示す情報を交換レンズ側からカメラ側へ送信するよう指示するコマンドである。
交換レンズ側はレンズ情報送信コマンドを受信すると、これに対応したレンズ情報をDATA_L2にてカメラに送信する。
カメラ側マイクロコンピュータ13は受信したレンズ情報DATA_L2を解析して、装着されている交換レンズが非同期通信対応不可能のI型レンズであるか非同期通信対応可能なII型レンズであるかを判別する(ステップ103)。カメラ側マイクロコンピュータ13は装着されている交換レンズがII型レンズであると判別されるとステップ104へ進む。
カメラは交換レンズに対して再び同期方式による通信を行い、非同期通信を行う際のボーレート調整用に測定するパルス出力をするようにコマンドを送信する(ステップ104)。ここでのボーレート調整の詳細は後述する。非同期通信では、CLK端子25が伝達していた同期クロック信号を用いずにデータを通信するため、データの通信速度を調整するものである。
レンズ側は、このコマンドを受信したならば非同期通信を行う際のボーレート調整用にパルス出力を行い、カメラが測定できるようにする。通信速度を設定するためのボーレート調整用パルス出力のタイミングチャートについては、図9を使って後述する。
ステップ105において、カメラ側マイクロコンピュータ13はステップ104で得られたボーレート調整用パルスTmesのカウント値を元に相対的なレンズ側マイクロコンピュータ21の発振周波数精度ずれを勘案し、非同期通信のボーレートを調整する。
ステップ106において、カメラ側マイクロコンピュータ13は交換レンズとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定を行う。
レンズ側マイクロコンピュータ21もカメラとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定を行う。本ステップを実行した以降は、カメラと交換レンズ間の通信は非同期通信にて行われる。
尚、装着されている交換レンズが非同期通信対応不可能のI型レンズの場合はステップ103からステップ107へ進んでそのまま同期通信を継続する。
<非同期通信における通信タイミングチャート例>
図8は非同期通信における通信タイミングチャート例である。カメラ側からレンズ側にレンズ情報の送信要求コマンド或いはレンズ側のアクチュエータの駆動コマンドを送信する場合は、DOC信号に設定されたボーレートでの非同期データパターンを出力する。まずLレベルのスタートビットを出力し、その後所定ビット数のデータを設定したボーレートにて出力する。所定ビット数のデータを出力し終えるとHレベルのストップビットを出力し送信が完了する。CLK信号を出力する必要は無いし、DOL信号を同時に受ける必要も無い。
カメラ側から送信されたコマンドに対してレンズ側がレンズ情報をカメラに対して送信する場合は、これもCLK信号を使うこともなくレンズ側がデータ送信の準備ができたタイミングでDOL信号にこれを出力することで行われる。通信プロトコルはDOC信号の場合と同様である。
このような非同期通信方式に切替えることで、カメラ側マイクロコンピュータ13とレンズ側マイクロコンピュータ21との間で基本送信単位毎に行っていたBusy解除確認を行う必要がない。
尚、非同期通信時にカメラ側からレンズ側へ駆動コマンドを送信するのに用いる端子はDOC端子に限らず、CLK端子に切り替えてもよい。この場合、カメラ側ではIO制御回路35が送信シフトレジスタ53と接続するように、レンズ側ではIO制御回路35が受信シフトレジスタ54と接続するように回路を切り替える必要がある。
以上でカメラと交換レンズとからなるカメラシステムの通信に関する設定動作フローの説明を終える。
<通信速度の設定の際のタイミングチャート>
上述したステップ105のボーレート設定(or調整)の例として、予め取り決めた非同期通信のボーレートが19200bpsであったとする。レンズ側マイクロコンピュータ21の発振回路の発振周波数がずれのない10MHzであった場合は、レンズ側マイクロコンピュータ21はボーレートが19200bpsでの非同期通信データ送受信ができる。しかし回路素子の誤差要因により10.1MHzにて発振しているレンズ側マイクロコンピュータ21の場合はボーレートを19200bpsに設定したつもりでも、その周波数ずれの分19392bpsになってしまう。非同期通信の場合は同期クロックが存在しない分、こうした双方のボーレートずれが所定内に収まっていないとデータサンプリングエラーを起こして正常な送受信ができない。よって、カメラ側マイクロコンピュータ13は相対的なレンズ側マイクロコンピュータ21の発振周波数精度ずれに相応した通信速度の設定としてボーレート設定を行う。
ボーレート調整用パルスの出力に関するタイミングチャートの例を図9に示す。カメラ側マイクロコンピュータ13が図9のカメラ側送信データDATA_C1にて交換レンズに対してボーレート調整用パルスの出力を要求するコマンドを送信する。すると、レンズ側マイクロコンピュータ21はそのデータを受信してそのコマンドを解析する間は、Busy出力をCLK信号をL出力にすることで行う。その後コマンド解析ができて次の通信を受けられるようになるとCLK信号をHレベルとしてBusy解除を行い、カメラに知らせる。
カメラ側マイクロコンピュータ13はCLK信号がHレベルとなりレンズ側のBusy解除を知ると送信データDATA_C2を送信する。この場合の送信データDATA_C2のデータは非対応データであり、単にレンズ側にボーレート調整用パルスの出力を行うためのタイミングトリガとして送信する。
レンズ側マイクロコンピュータ21は送信データDATA_C2を受信して通信割り込みが発生すると、直ちにCLK信号をL出力にすることでボーレート調整用パルスTmesを出力する。通信速度を調整するためのパルスであるボーレート調整用パルスTmesはレンズ側マイクロコンピュータ21の発振回路32により発生している動作クロックの予め決められたクロックカウント分だけの時間出力する。例えばレンズ側マイクロコンピュータ21の発振回路32により発生している動作クロックが10MHzとして65536クロック分出力するとすれば、ボーレート調整用パルスTmesとして時間幅6.5536msec.のパルス出力が行われる。仮に、レンズ側マイクロコンピュータ21の発振回路32により発生している動作クロックが回路素子の誤差要因により10.1MHzになっていたとすれば、ボーレート調整用パルスTmesの時間幅は6.4887msec.となる。これは、レンズ側マイクロコンピュータ21の発振回路の発振周波数の精度ずれとしてこの時間幅6.5536msec.と時間幅6.4887msとの差に反映されることになる。
カメラ側マイクロコンピュータ13は送信データDATA_C2送信後に入出力端子45の立下りエッジを開始、同端子の立ち上がりエッジを終了にしてカウンタ・タイマー回路34による時間計測を行い、このボーレート調整用パルスTmesの時間測定をする。
仮にカメラ側マイクロコンピュータ13が16MHzのクロックにてカウンタ・タイマー回路34による時間計測を行った場合、6.5536msec.の時間は104857カウントになり、6.4887msec.の時間は103819カウントになる。また仮にカメラ側マイクロコンピュータ13が16.16MHzのクロックにてカウンタ・タイマー回路34による時間計測を行った場合、6.5536msec.の時間は105906カウントになる。一方、6.4887msec.の時間は104857カウントになる。よって、このボーレート調整用パルスTmesの時間計測により、カメラ側マイクロコンピュータ13は自身の発振周波数精度に対する相対的なレンズ側マイクロコンピュータ21の発振周波数精度ずれを知ることができる。
この精度のずれに基づいて、カメラ側マイクロコンピュータ13は通信速度を設定する。
<カメラ側マイクロコンピュータ13側の通信設定動作フロー>
次にカメラ側マイクロコンピュータ13側における交換レンズとの通信設定に関する動作フローを図10から始まるフローチャートにて説明する。
不図示の電源スイッチがオンされてカメラ側マイクロコンピュータ13が動作を開始して交換レンズと通信を行う場合、次の動作フローを実行する。
電源スイッチがオンされた際、同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定が行われている。従って、同期通信を行う場合の手順である同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する(ステップ111)。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合はステップ112へ進む。
ステップ112では、交換レンズに対して送信するデータDATA_C1を送信シフトレジスタにセットして同期通信を行う。DATA_C1の内容は交換レンズに対して交換レンズの種類や名称或いは非同期通信対応可能なII型レンズであるか否かを知るためのレンズ情報送信コマンドである。
ステップ113において、同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。送信したデータDATA_C1の内容をレンズ側が解析してそれに対応する処理をする間は交換レンズが同期信号CLKを出力する端子をLレベルとする。Busy状態になるので、その処理が完了してレンズ側がBusy状態ではなくなるのを待ってからステップ114へ進む。ステップ114では、非対応データDATA_C2を送信シフトレジスタにセットして同期通信を行う。そして、ステップ115において、前ステップでDATA_C2を送信した際に交換レンズから送られてくるレンズ情報であるDATA_L2を受信シフトレジスタから入力する。
それから、前ステップで入力したレンズ情報を解析し、現在装着されている交換レンズが非同期通信対応可能か否かを判別する(ステップ116)。カメラ側マイクロコンピュータ13は現在装着されている交換レンズが非同期通信対応可能なII型レンズであると判別すると図11のステップ151へ進む。
ステップ151では、カメラ側マイクロコンピュータ13は同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合はステップ152へ進む。
ステップ152では、交換レンズに対して送信するデータDATA_C1を送信シフトレジスタにセットして同期通信を行う。DATA_C1の内容は非同期通信を行う際のボーレート調整用に測定するパルスを交換レンズ側に出力をするよう要求するコマンドである。
そして、同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する(ステップ153)。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合はステップ154へ進む。ステップ154では、非対応データDATA_C2を送信シフトレジスタにセットして同期通信を行う。
そして、図7のステップ104で説明したように、このデータDATA_C2の受信直後から交換レンズがCLK信号をL出力にすることでボーレート調整用パルスTmesを出力する(ステップ155)。このボーレート調整用パルスTmesの出力がされたらカウンタ・タイマー回路34による時間計測を開始する。
交換レンズがCLK信号をH出力としボーレート調整用パルスTmesの出力が終了するとカウンタ・タイマー回路34による時間計測を終了する(ステップ156)。カウンタ・タイマー回路34による計測値を入力してカメラ側マイクロコンピュータ13は自身の発振周波数精度に対する相対的なレンズ側マイクロコンピュータ21の発振周波数精度ずれに関する情報とする。カウンタ・タイマー回路34による計測値の理想値からのずれ値に従って非同期通信を行う際のボーレートを決定する(ステップ157)。カメラ側マイクロコンピュータ13は交換レンズとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定を行う(ステップ158)。これにより、ステップ157で決定されたボーレートが通信制御回路33に設定される。以降は交換レンズとの通信は図8で説明したような非同期通信方式にて行われる。
尚、図10のステップ116にて交換レンズが非同期通信に対応していないI型レンズであると判別された場合には図11にて説明したステップは実行せずに、そのまま同期通信方式による交換レンズとの通信を継続する。
<レンズ側マイクロコンピュータ21側の情報通信動作フロー>
続いてレンズ側マイクロコンピュータ21側におけるカメラとの情報通信に関する動作フローを図12に示すフローチャートにて説明する。
交換レンズ2がカメラ1に装着されてカメラから電源供給を受けてレンズ側マイクロコンピュータ21が動作可能となると、最初は同期方式の通信のスレーブ側として通信制御回路33並びにIO制御回路35〜37の設定を行う。これは、図7のステップ101で説明したとおりである。この状態でカメラからの同期通信による割り込みが発生すると動作フローを実行する。
まず、同期クロック信号CLKを受信する端子をLレベルにし、レンズ側がBusy状態であることをカメラが判別できるようにする(ステップ201)。受信シフトレジスタに入力されているカメラからの送信データDATA_C1を入力し、その内容を解析する(ステップ202)。尚、カメラからの送信データは最初はDATA_C1であるが、その後DATA_C2等が送られてくる場合があるので、フローチャート上はDATA_Cxと記載してある。
カメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令であるか否かを判断する(ステップ203)。
カメラからの送信データDATA_C1の内容に従ってレンズ側のアクチュエータの駆動処理を行う(ステップ204)。そして、レンズ側のアクチュエータの駆動に関する処理が終わり、次のカメラからの通信を受信可能となったかどうかを判別する(ステップ205)。受信可能になればステップ208へ進む。
上記ステップ203でカメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令ではなかった場合はステップ206へ進む。カメラからの送信データDATA_C1の内容が非同期通信への切替えのためのボーレート調整用パルスTmesの出力を要求するものであるかどうか判別する(ステップ206)。もしも、ボーレート調整用パルスTmesの出力を要求するものでなければ、レンズ情報のデータ送信要求であるということでステップ207へ進む。
ステップ207では、カメラからの送信データDATA_C1に従い要求されているレンズ情報のデータを送信シフトレジスタにセットする。要求されているレンズ情報が交換レンズの種類や名称或いは非同期通信対応可能な新タイプか否かを知るためのレンズ情報であれば、その情報データをセットする。同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする(ステップ208)。
もしも、上記ステップ206でカメラからの送信データDATA_C1の内容が非同期通信への切替えのためのボーレート調整用パルスTmesの出力を要求するものであればステップ209へ進む。ステップ209では、カメラからボーレート調整用パルスの出力を行うためのタイミングトリガとしての送信データDATA_C2が送信されるのを待つ。ここで、図4のステップ104で説明したようにレンズ側マイクロコンピュータ21はボーレート調整用パルスTmesを出力するための所定のカウント値をカウンタ・タイマー回路34にセットするものである。このデータを受信するとステップ210へ進む。カウンタ・タイマー回路34のカウント開始と同時に同期クロック信号CLKを受信する端子をLレベルとする(ステップ210)。カウンタ・タイマー回路34による所定値のカウントが完了すると同時に同期クロック信号CLKを受信する端子をHレベルとする。これでボーレート調整用パルスTmesの出力が完了する。そして、レンズ側マイクロコンピュータ21はカメラとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定を行う(ステップ211)。以降はカメラとの通信は図8にて説明した非同期通信にて行われる。
尚、非同期通信に対応可能な交換レンズが、非同期通信に対応していないカメラに装着されるケースは、上記ステップ209〜211の各ステップを実行することは無い。その場合はカメラ側からボーレート調整用パルスTmesの出力を要求するコマンドが送信されてくることはないからである。よってこうした場合は同期方式の通信を継続することになる。
以上で第1の実施形態の説明を終了する。
<第1の実施形態の変形>
以上説明した第1の実施形態は本発明を実施した代表的なカメラと交換レンズの実施形態であるが、考えられる実施形態の全てを表した訳ではない。
図7のステップ105などで説明したレンズが出力するボーレート調整用パルスTmesの出力端子は第1の実施形態記載のCLK端子に限定される必要はなく、DOC端子やDOL端子であっても良い。例えばボーレート調整用パルスTmesの出力端子をDOL端子とする場合は、レンズからTmes出力する際にカメラ側でDOL端子からカウンタ・タイマー回路34へ信号が入力されるような回路構成とする。また、第1の実施形態ではレンズが出力するボーレート調整用パルスTmesはその信号出力の立下りから立ち上がりの区間であったが、これもこの形態に限定される必要はない。また、特許文献1に記載されているようなオープンドレイン方式とCMOS方式との切替えを有している場合は、CMOS方式に回路を切替えてからボーレート調整用パルスTmesをレンズが出力する方が好都合である。出力波形の遅延なまりが少なくないからである。
第1の実施形態ではレンズが出力するボーレート調整用パルスTmesの出力タイミングをDATA_C2の受信直後としたが、これも一例であり特に限定する必要はない。
マイクロコンピュータやその発振回路用に用いる発振子などの電子部品の特性は温度の変化に依存して変化する場合が多く、発振周波数は温度変化によってある範囲内で変化することが多い。よって図7のステップ105などで説明した同期通信から非同期通信に切替える直前だけでなく、それ以外のタイミングでもボーレート調整を行うようにした方がより好ましい。具体的にはカメラ用マイクロコンピュータ13はその動作中に適当な時間間隔で温度センサー19の出力をモニターし、温度変化が所定以上発生したらボーレート調整を行うようなことが考えられる。
<第2の実施形態>
第1の実施形態においては交換レンズが出力するボーレート調整用パルスTmesの時間をカメラ側が測定することによりカメラ側がボーレート調整を行うものであった。この点、カメラが出力するボーレート調整用パルスTmesの時間をレンズが測定し、そのデータをカメラに送信することでカメラ側がボーレート調整を行うことも可能である。以下、第2の実施形態として図13から16を用いて具体的に説明する。
第2の実施形態において図1〜図3にて説明したカメラ側及びレンズ側の構成は第1の実施形態においても同様である。
<カメラ側マイクロコンピュータ13側の通信設定動作フロー>
カメラ側マイクロコンピュータ13側における交換レンズとの通信設定に関する動作フローに関して、図10のステップ111から開始することと同様である。そして、第1の実施形態と同様なフローを進んで図10のステップ116にて現在装着されている交換レンズが非同期通信対応可能であるII型レンズであるか否かを判別する。
II型レンズである場合には、カメラ側マイクロコンピュータ13は同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する(ステップ501)。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合はステップ502へ進む。
交換レンズに対して送信するデータDATA_C1を送信シフトレジスタにセットして同期通信を行う(ステップ502)。DATA_C1の内容は非同期通信を行う際のボーレート調整用に測定するパルスをこの通信の直後に交換レンズに対して出力をするのでそのパルス幅を測定するように要求するコマンドである。
同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する(ステップ503)。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合はステップ504へ進む。
そして、レンズ側がBusy状態を解除したことを受けて、カメラ側マイクロコンピュータ13はCLK信号をL出力にすることでボーレート調整用パルスTmesの出力を開始する(ステップ504)。このボーレート調整用パルスTmesの出力がされたらカウンタ・タイマー回路34による時間計測を開始する。
カウンタ・タイマー回路34による所定時間計測が終了するのを待つ(ステップ505)。所定時間計測が終了するとステップ506へ進む。ステップ506では、CLK信号をH出力にすることでボーレート調整用パルスTmesの出力を終了する。
以上説明したステップ502からステップ506の各ステップによるカメラと交換レンズとの通信信号のタイミングチャートを示したものが図16である。
CLK信号に対してBusyを出力しているのはレンズ側であり、Tmesを出力しているのがカメラ側である。
続いて、カメラ側マイクロコンピュータ13はボーレート調整用パルスTmesの出力時間を交換レンズ側が測定したデータをカメラ側に送信するように要求する(ステップ507)。通信手法は図9などで説明したものと同様であり、交換レンズに対して送信するデータDATA_C1がボーレート調整用パルスTmesの測定データの送信要求コマンドであり、受信データDATA_L2がこれに対するレンズ側からの送信データである。
ステップ507で入手した交換レンズ側の測定データによりカメラ側マイクロコンピュータ13は自身の発振周波数精度に対する相対的なレンズ側マイクロコンピュータ21の発振周波数精度ずれに関する情報を知ることができる。この情報に基き非同期通信を行う際の通信速度としてのボーレートを決定する(ステップ508)。
そして、カメラ側マイクロコンピュータ13は交換レンズとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定を行う。また、ステップ508で決定された通信速度としてのボーレートが通信制御回路33に設定される。これにより、非同期通信への切り替えが行われる(ステップ509)。以降は交換レンズとの通信は図8で説明したような非同期通信方式にて行われる。
<レンズ側マイクロコンピュータ21側の情報通信動作フロー>
続いてレンズ側マイクロコンピュータ21側の第2の実施形態におけるカメラとの情報通信に関する動作フローを図14及び図15フローチャートにて説明する。
交換レンズ2がカメラ1に装着されてカメラから電源供給を受けてレンズ側マイクロコンピュータ21が動作可能となると、第1の実施形態と同様に最初は同期方式の通信のスレーブ側として通信制御回路33並びにIO制御回路35〜37の設定を済ます。この状態でカメラからの同期通信による割り込みが発生すると図14の動作フローを実行する。
同期クロック信号CLKを受信する端子をLレベルにし、レンズ側がBusy状態であることをカメラが判別できるようにする(ステップ551)。受信シフトレジスタに入力されているカメラからの送信データDATA_C1を入力し、その内容を解析する(ステップ552)。尚、カメラからの送信データは最初はDATA_C1であるが、その後DATA_C2等が送られてくる場合があるので、フローチャート上はDATA_Cxと記載してある。
カメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令であるか否かを判断する(ステップ553)。
アクチュエータの駆動命令である場合には、カメラからの送信データDATA_C1の内容に従ってレンズ側のアクチュエータの駆動処理を行う(ステップ554)。そして、レンズ側のアクチュエータの駆動に関する処理が終わり、次のカメラからの通信を受信可能となったかどうかを判別する(ステップ555)。受信可能になればステップ558へ進む。
一方、上記ステップ553でカメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令ではなかった場合はステップ556へ進む。ステップ556では、カメラからの送信データDATA_C1の内容が非同期通信への切替え要求又はボーレート調整用パルスTmesの時間計測実行或いはボーレート調整用パルスTmesの時間計測結果の送信を要求するものであるかどうか判別する。もしも、そのどちらでもなければ、レンズ情報のデータ送信要求であるということでステップ557へ進む。
ステップ557では、カメラからの送信データDATA_C1に従い要求されているレンズ情報のデータを送信シフトレジスタにセットする。要求されているレンズ情報が交換レンズの種類や名称或いは非同期通信対応可能な新タイプか否かを知るためのレンズ情報であれば、その情報データをセットする。同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする(ステップ558)。
もしも、上記ステップ556でカメラからの送信データDATA_C1の内容が非同期通信への切替え要求を要求するものであれば図15のステップ561へ進む。また、ボーレート調整用パルスTmesの時間計測実行或いはボーレート調整用パルスTmesの時間計測結果の送信を要求する場合も同様である。
ステップ561では、カメラからの送信データDATA_C1の内容がボーレート調整用パルスTmesの時間計測実行であるかどうかを判別する。もしも、時間計測実行である場合はステップ562へ進む。
ステップ562では、同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする。CLK信号に対してカメラがボーレート調整用パルスTmesを出力するのを待つ(ステップ563)。そして、カメラがボーレート調整用パルスTmesを出力したらカウンタ・タイマー回路34による時間計測を開始し、ボーレート調整用パルスTmesがHレベルとなるまでの時間を測定する(ステップ564)。
前記ステップ561でカメラからの送信データDATA_C1の内容がボーレート調整用パルスTmesの時間計測実行ではなかった場合はステップ565へ進む。
ステップ565で、カメラからの送信データDATA_C1の内容がボーレート調整用パルスTmesの時間計測結果の送信を要求するものであるかどうかをチェックする。もしも、そうであればステップ566へ進む。
ステップ566では、ステップ564で測定したボーレート調整用パルスTmesの時間計測データを送信シフトレジスタへセットする。そして、同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする(ステップ567)。この後カメラ側より同期クロック信号CLKが出力されてシリアル通信が実行されることで、ボーレート調整用パルスTmesの時間計測データがカメラに送信される。
前記ステップ565でカメラからの送信データDATA_C1の内容がボーレート調整用パルスTmesの時間計測結果の送信を要求するものでない場合は、非同期通信への切替え要求であるのでステップ568へ進む。ステップ568では、レンズ側マイクロコンピュータ21はカメラとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路33並びにIO制御回路35〜37の設定を行う。以降はカメラとの通信は図8にて説明した非同期通信にて行われる。
以上で第2の実施形態の説明を終了する。
尚、第2の実施形態においても図13のステップ504などで説明したカメラが出力するボーレート調整用パルスTmesの出力端子はCLK端子に限定される必要はなく、DOC端子やDOL端子であっても良い。また、カメラが出力するボーレート調整用パルスTmesはその信号出力の立下りから立ち上がりの区間であったが、これもこの形態に限定される必要はない。特許文献1に記載されているようなオープンドレイン方式とCMOS方式との切替えを有している場合は、CMOS方式に回路を切替えてからボーレート調整用パルスTmesをレンズが出力する方が出力波形の遅延なまりが少なくなりより好都合である。
第2の実施形態ではカメラが出力するボーレート調整用パルスTmesの出力タイミングをレンズ側のBusy解除の直後としたが、これも一例であり特に限定する必要はない。
マイクロコンピュータやその発振回路用に用いる発振子などの電子部品の特性は温度の変化に依存して変化する場合が多く、発振周波数は温度変化によってある範囲内で変化することが多い。よって説明したような同期通信から非同期通信に切替える直前だけでなく、それ以外のタイミングでもボーレート調整を行うようにした方がより好ましいことは第1の実施形態と同様である。
以上第1の実施形態、第2の実施形態で説明したように、本願によれば、交換レンズは通信割り込み発生毎にBusy信号出力及び解除の処理を行う必要が無くなり、こちらも動作パフォーマンスが向上する効果がある。また、カメラと交換レンズとの間で非同期通信方式に切替える際に通信速度を決定するので、お互いの発振周波数の誤差による非同期通信のサンプリングエラーを防止できる。したがって、より高速な通信を個体差のある場合で行って、確実な非同期通信が実行できる効果がある。
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために以下の請求項を添付する。