<実施例1>
図1は本発明を実施したカメラと交換レンズの回路構成を表す図である。図1において1はカメラ、2及び3はカメラ1に着脱可能に装着された交換レンズである。カメラ1は接続部としてのマウント部4を、交換レンズ2及び3はレンズ接続部としてのレンズマウント部5をそれぞれ有する。カメラ1の内部にはバッテリー11、電源生成部12、カメラ側マイクロコンピュータ13がある。電源生成部12はバッテリー11が出力する電圧を入力して、カメラ側マイクロコンピュータ13等の電気回路が動作するために最適に安定化された電源電圧を発生し、これを電気回路各部に供給する。通常カメラ1の内部には露出制御のための測光センサー、オートフォーカス制御のための測距センサー、デジタル画像を撮影するための撮像素子やその駆動回路、AD変換回路、画像処理回路などの回路構成が存在するが、本発明の主旨には深く関わらないので不図示としてある。
14から18は交換レンズとの電気信号授受のためにカメラ1側のマウント部4に設けられた接点部である。14は電源生成部12が発生したレンズ用電源を交換レンズに供給するためのカメラ側電源端子である。15はカメラと交換レンズが通信を行う場合に同期クロック信号等を伝達するためのカメラ側CLK端子、16はカメラから交換レンズへ通信データを送信するためのカメラ側DOC端子、17は交換レンズからカメラへの通信データを受信するためのカメラ側DOL端子である。カメラ側CLK端子15は第1の端子に、カメラ側DOC端子16とカメラ側DOL端子17は第2の端子に相当する。これらの端子15〜17はカメラ側マイクロコンピュータ13と接続されている。18はカメラ側接地端子で、バッテリー11の−側と等電位となっている。また、19は温度センサーでカメラ内の温度に関する情報を出力する。その温度出力はカメラ側マイクロコンピュータ13に接続されている。
図1(A)に示した交換レンズ2の内部にはレンズ側マイクロコンピュータ21があり、交換レンズ2の全体制御及びカメラ1との通信制御を行う。24から28はカメラとの電気信号授受のためにレンズ2側のレンズマウント部5に設けられた接点部である。24はカメラ1から電源供給を受けるためのレンズ側電源端子である。26はカメラ1から交換レンズ2への通信データを受信ためのレンズ側DOC端子、27は交換レンズ2からカメラ1へ通信データを送信するためのレンズ側DOL端子である。28はレンズ側接地端子である。
カメラ1に交換レンズ2が正常に装着されると、カメラ側の端子14、16、17、18とレンズ側の端子24、26、27、28が図1(A)で示したとおりにそれぞれ1対1に接続される。
一方、図1(B)に示した交換レンズ3の内部にはレンズ側マイクロコンピュータ31があり、交換レンズ3の全体制御及びカメラ1との通信制御を行う。34から38はカメラとの電気信号授受のためにレンズ3側のレンズマウント部5に設けられた接点部である。34はカメラ1から電源供給を受けるためのレンズ側電源端子である。35はカメラ1と通信を行う場合に同期クロック信号等を伝達するためのレンズ側CLK端子、36はカメラ1から交換レンズ3への通信データを受信ためのレンズ側DOC端子、37は交換レンズ3からカメラ1へ通信データを送信するためのレンズ側DOL端子である。レンズ側CLK端子35は第1のレンズ側端子に相当する。38はレンズ側接地端子である。
カメラ1に交換レンズ3が正常に装着されると、カメラ側の端子14〜18とレンズ側の端子34〜38が図1(B)で示したとおりにそれぞれ1対1に接続される。
なお、本発明はカメラと交換レンズとの間で光通信や無線通信を行う場合においても適用できる。
図2(B)はカメラ側マイクロコンピュータ13或いはレンズ側マイクロコンピュータ31に内蔵される回路構成のうち、シリアル通信制御に関わる構成を示したものである。カメラ側マイクロコンピュータ13とレンズ側マイクロコンピュータ31とは当然別物であるが、シリアル通信制御に関わる構成としては同一の構成要件を持っていて構わないので共通の図面で説明する。
41は発振子で例えば水晶発振子やセラミック振動子などが使われる。こうした発振子についてはマイクロコンピュータに内蔵される場合に限らず、外付けされる場合もある。42はクロック発生回路で発振子41に接続されて源振クロックを発生させる源振回路、源振クロックをより高い周波数へ変換する逓倍回路、変換された高周波数のクロックを元に分周・合成等を行い様々な周波数のクロックを生成するクロック生成回路などから成る。43は通信制御回路で、通信全般の制御を行うと共に、IO出力ポートとして接続されている端子を使用する場合には、出力レベルの設定及び入力レベルの判定を行う。詳細は図3を使って後述する。44はカウンタ・タイマー回路で、入力される信号のパルス数をカウントしたり、入力される信号の時間幅を測定したりする。クロック発生回路42で生成されたクロック信号は通信制御回路43及びカウンタ・タイマー回路44に供給される。45〜47はIO制御回路で、それぞれ入出力端子55〜57の入出力信号のデータ入出力方向及び入出力信号種類並びに入出力回路形態を切替える回路である。データ入出力方向切替えというのは文字通り端子をデータ入力として使うか、データ出力として使うかの切替えである。入出力信号種類切替えというのは通常のパラレルIO信号の入出力信号を端子に接続するか、通信制御回路43との入出力信号を端子に接続するかの切替えである。入出力回路形態の切替えというのは先述した特許文献1に記載されているオープンドレイン方式で出力するかCMOS方式で出力するかの切替え並びにプルアップ抵抗を接続するか否かの切替えを行う。IO制御回路45は入出力端子55の入出力切替えを行うもので、通信制御回路43からは同期クロック信号SCLKが接続されていて、このSCLK信号をカウンタ・タイマー回路44に供給可能である。IO制御回路46は入出力端子56の入出力切替えを行うもので、通信制御回路43からはシリアル通信データ出力信号TXDが接続されている。IO制御回路47は入出力端子57の入出力切替えを行うもので、通信制御回路43からはシリアル通信データ入力信号RXDが接続されている。
48は割り込み制御回路で通信制御回路43及びカウンタ・タイマー回路44から割り込み発生信号が接続されている。50はマイクロコンピュータ内のデータバスで、前述した通信制御回路43及びカウンタ・タイマー回路44やIO制御回路45〜47はこのデータバス50に接続されて動作に必要なデータの受け渡しができる。尚、マイクロコンピュータ内には本図に記載以外のALU、プログラムカウンタ、ROM、RAM、ADコンバータ等の回路構成が存在するが、不図示としてある。
カメラ側マイクロコンピュータ13の場合、入出力端子55は図1のカメラ側CLK端子15に、入出力端子56はカメラ側DOC端子16に、入出力端子57はカメラ側DOL端子17にそれぞれ接続される。
レンズ側マイクロコンピュータ31の場合、入出力端子55は図1(B)のレンズ側CLK端子35に、入出力端子56はレンズ側DOL端子37に、入出力端子57はレンズ側DOC端子36にそれぞれ接続される。これは本実施例の説明ではDOC信号をカメラからレンズへの送信データ、DOL信号をレンズからカメラへの送信データとしているためである。
一方、図2(A)はレンズ側マイクロコンピュータ21に内蔵される回路構成のうち、シリアル通信制御に関わる構成を示したものである。交換レンズ2の場合、レンズ側マイクロコンピュータ21には、図2(B)のIO制御回路45、及び入出力端子55に相当する端子は存在しない。それ以外の構成は、図2(B)で示したレンズ側マイクロコンピュータ31の構成と同一の構成である。
図3は図2(A)及び(B)で示した通信制御回路43についてより詳細な構成を説明するための図である。クロック発生回路42が発生する様々な周波数のクロック信号はボーレートジェネレータ61に入力される。ボーレートジェネレータ61はデータバス50を通して送られてくる各種通信設定データに従って通信制御に必要なクロック信号を発生させる。通信設定データとしては通信のマスターかスレーブかの切替え、同期通信か非同期通信かの切替え、同期通信の場合の同期クロック周波数設定、非同期通信の場合の非同期サンプリングクロック周波数設定などがある。通信設定データにより同期通信及び通信マスターが設定されている場合は、同期通信の場合の同期クロック周波数設定値に従った同期クロック信号SCLKを出力する。通信設定データにより同期通信及び通信スレーブが設定されている場合は、同期クロック信号SCLKを入力することになる。同期クロック信号SCLKは62の送受信制御ブロックにも供給される。通信設定データにより非同期通信が設定されている場合は、非同期通信の場合の非同期サンプリングクロック周波数設定に従ったサンプリング用クロックを送受信制御ブロック62に供給する。送受信制御ブロック62はやはりデータバス50を通して送られてくる各種通信設定データに従って後述する送信シフトレジスタ63及び受信シフトレジスタ64にシフトクロックを供給したり、送受信のトリガ信号を入出力してシリアル通信のタイミング制御を行う。また、シリアル通信の送受信完了のタイミングで割り込み信号の発生も行う。
63は送信シフトレジスタで、シリアル通信で送信するデータをパラレル入力し信号TXDとしてシリアル出力する。シリアル出力するためのシフトクロックは送受信制御ブロック62から供給される。非同期通信する場合は送信トリガ信号を送受信制御ブロック62から入力する。64は受信シフトレジスタで、シリアル通信で受信するデータ信号RXDをシリアル入力しパラレル出力する。シリアル入力するためのシフトクロックは送受信制御ブロック62から供給される。非同期通信する場合は受信トリガ信号を送受信制御ブロック62に出力する。65は送信データレジスタでデータバス50より送信用データを入力されて、送信シフトレジスタ63にデータセットする。66は受信データレジスタで受信シフトレジスタ64より受信データを入力されてデータバス50に出力可能とする。
レンズ側CLK端子35を有する交換レンズ3について、非同期通信に対応できない従来レンズの場合と、非同期通信に対応可能な新レンズの場合とが想定される。カメラ1にレンズ側CLK端子35を有する交換レンズ3が装着された場合、従来レンズの場合でも新レンズの場合でも対応できるように、はじめに同期通信を行う。
図12記載の通信プロトコルに従ってカメラ側マイクロコンピュータ13が交換レンズと第1の通信モードとしての同期通信を行う場合の制御フローについて図13に従って説明する。
(ステップ301)同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。本例ではレンズ側がこの端子をLレベルにしている状態はBusy状態であるものとし、この状態ではカメラはレンズと通信することができない。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合は(ステップ302)へ進む。
(ステップ302)まず最初にレンズに送信するデータDATA_C1を送信データレジスタにセットして、1送信単位のシリアル通信を行う。通常はまずレンズに送信するデータDATA_C1がレンズに対する何らかのコマンドであり、それに応答するレンズからの返答データは次の1送信単位の通信時のデータDATA_L2である。レンズへDATA_C1を送るのと同じタイミングでレンズからカメラに送られてくるデータDATA_L1はdon’t careデータであるので特に読み込んで処置などをしない。
(ステップ303)同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。送信したデータDATA_C1の内容をレンズ側が解析してそれに対応する処理をする間はレンズがCLKを出力する端子をLレベルとしてBusy状態になるので、その処理が完了してレンズ側がBusy状態ではなくなるのを待ってから(ステップ304)へ進む。
(ステップ304)次ににレンズに送信するデータDATA_C2を送信データレジスタにセットして、1送信単位のシリアル通信を行う。(ステップ302)で送信したデータDATA_C1がレンズに対してレンズ固有の情報をカメラに送信するコマンドであった場合はデータDATA_C2の内容はdon’t careデータとなり、折り返しにレンズから送られてくるデータDATA_L2に意味があることになる。
(ステップ305)受信データレジスタに受信されたデータDATA_L2を取り込む。
以上が交換レンズと通信を行う場合のカメラ側のマイクロコンピュータの基本的な動作フローである。
次に図12記載の通信プロトコルに従って交換レンズ側のマイクロコンピュータ31がカメラと同期通信を行う場合の制御フローについて図14に従って説明する。レンズ側マイクロコンピュータ31は通信に際してはスレーブ側となる。同期クロック信号CLKの立下りエッジ数が所定数カウントされたことにより割り込み信号を発生する通信割り込み機能によって、カメラからの1送信単位のシリアル通信を受信したことを検知する。
(ステップ401)まずは同期クロック信号CLKを受信する端子をLレベルにし、レンズ側がBusy状態であることをカメラが判別できるようにする。
(ステップ402)受信データレジスタに入力されているカメラからの送信データDATA_C1を入力し、その内容を解析する。尚、カメラからの送信データは最初はDATA_C1であるが、その後DATA_C2等が送られてくる場合があるので、フローチャート上はDATA_Cxと記載してある。
(ステップ403)カメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令である場合は(ステップ404)へ進む。
(ステップ404)カメラからの送信データDATA_C1の内容に従ってレンズ側のアクチュエータの駆動処理を行う。
(ステップ405)レンズ側のアクチュエータの駆動に関する処理が終わり、次のカメラからの通信を受信可能となったかどうかを判別する。受信可能になれば(ステップ407)へ進む。
上記(ステップ403)でカメラからの送信データDATA_C1の内容がレンズ固有のデータ送信要求であった場合は(ステップ406)へ進む。
(ステップ406)カメラからの送信データDATA_C1に従い要求されているレンズ固有のデータを送信データレジスタにセットする。
(ステップ407)同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする。
以上、カメラ1と交換レンズ3との間で同期通信を行う場合の動作フローについて説明した。
次に、CLK端子有りのレンズ3が装着された場合の、本発明を実施したカメラと交換レンズとからなるカメラシステムの通信について説明する。カメラ側及び交換レンズ側マイクロコンピュータ個々の動作フローは後述するが、最初に全体的な動作の流れとして図6の通信設定動作フローチャートを用いて説明する。
CLK端子有りのレンズ3が装着されたことをカメラ側マイクロコンピュータ13が検出すると、図6の(ステップ101)から動作を開始する。なお、装着されたレンズがCLK端子を有するかどうかを検出する方法については、詳細を後述する。
(ステップ101)カメラ側マイクロコンピュータ13は交換レンズとの通信方式の初期設定として従来レンズ及び新レンズとも対応可能な同期通信を行うように、通信制御回路43並びにIO制御回路45〜47の設定を行う。この設定により、カメラ側マイクロコンピュータ13においては通信を行う際は通信マスターとして通信同期クロックSCLK信号が入出力端子55から出力される設定となる。さらにカメラ側マイクロコンピュータ13においてはカメラから交換レンズへの送信データTXD信号が入出力端子56から出力され、交換レンズからカメラへの送信データRXD信号が入出力端子57から入力される設定となる。
交換レンズは非同期通信対応可能な新レンズであったとしても、初期設定としては同期通信のスレーブ設定を通信制御回路43並びにIO制御回路45〜47に行う。この設定により、レンズ側マイクロコンピュータ31においては通信同期クロックSCLK信号を入出力端子55より入力する設定となる。加えてレンズ側マイクロコンピュータ31においては交換レンズからカメラへの送信データTXD信号が入出力端子56から出力され、カメラから交換レンズへの送信データRXD信号が入出力端子57から入力される設定となる。
(ステップ102)カメラと交換レンズとの間で同期方式による通信を行う。同期通信のタイミングチャートやカメラ側マイクロコンピュータ13並びにレンズ側マイクロコンピュータ31の動作フローとしては、前述した図12〜図14に示したものになる。
この通信で、カメラ側はDATA_C1にて交換レンズに対して交換レンズの種類や名称或いは非同期通信対応可能な新タイプか否かを知るためのレンズ情報送信コマンドを送信する。交換レンズ側はレンズ情報送信コマンドを受信すると、これに対応したレンズ情報をDATA_L2にてカメラに送信する。
(ステップ103)カメラ側マイクロコンピュータ13は受信したレンズ情報DATA_L2を解析して、現在装着されている交換レンズが非同期通信対応可能か否かを判別する。カメラ側マイクロコンピュータ13は現在装着されている交換レンズが非同期通信対応可能であると判別されると(ステップ104)へ進む。
(ステップ104)カメラは交換レンズに対して再び同期方式による通信を行い、非同期通信を行う際のボーレート調整用に測定するパルス出力をするようにコマンドを送信する。
レンズ側はこのコマンドを受信したならば非同期通信を行う際のボーレート調整用にカメラが測定するパルス出力を行う。ボーレート調整用パルスの出力に関するタイミングチャートの例を図10に示す。カメラ側マイクロコンピュータ13が図10のカメラ側送信データDATA_C1にて交換レンズに対してボーレート調整用パルスの出力を要求するコマンドを送信すると、レンズ側マイクロコンピュータ31はそのデータを受信してそのコマンドを解析する間は一旦は通常のBusy出力をCLK信号をL出力にすることで行う。その後コマンド解析ができて次の通信を受けられるようになるとCLK信号をHレベルとしてBusy解除を行い、カメラに知らせる。
カメラ側マイクロコンピュータ13はCLK信号がHレベルとなりレンズ側のBusy解除を知ると送信データDATA_C2を送信する。この場合の送信データDATA_C2のデータはdon’t careデータであり、単にレンズ側にボーレート調整用パルスの出力を行うためのタイミングトリガとして送信する。
レンズ側マイクロコンピュータ31は送信データDATA_C2を受信して通信割り込みが発生すると、直ちにCLK信号をL出力にすることでボーレート調整用パルスTmesを出力する。ボーレート調整用パルスTmesはレンズ側マイクロコンピュータ31の発振回路42により発生している動作クロックの予め決められたクロックカウント分だけの時間出力する。例えばレンズ側マイクロコンピュータ31の発振回路42により発生している動作クロックが10MHzとして、ボーレート調整用パルスTmesとして65536クロック分出力するとすれば、6.5536msec.の時間このパルス出力が行われる。仮に、レンズ側マイクロコンピュータ31の発振回路42により発生している動作クロックが回路素子の誤差要因により10.1MHzになっていたとすれば、ボーレート調整用パルスTmesの時間幅は6.4887 msec.となり、レンズ側マイクロコンピュータ31の発振回路の発振周波数の精度ずれがこのパルスの時間幅に反映される。
カメラ側マイクロコンピュータ13は送信データDATA_C2送信後に入出力端子55の立下りエッジを開始、同端子の立ち上がりエッジを終了にしてカウンタ・タイマー回路44による時間計測を行い、このボーレート調整用パルスTmesの時間測定をする。
仮にカメラ側マイクロコンピュータ13が16MHzのクロックにてカウンタ・タイマー回路44による時間計測を行った場合、6.5536msec.の時間は104857カウントになり、6.4887 msec. の時間は103819カウントになる。また仮にカメラ側マイクロコンピュータ13が16.16MHzのクロックにてカウンタ・タイマー回路44による時間計測を行った場合、6.5536msec.の時間は105906カウントになり、6.4887 msec. の時間は104857カウントになる。よって、このボーレート調整用パルスTmesの時間計測により、カメラ側マイクロコンピュータ13は自身の発振周波数精度に対する相対的なレンズ側マイクロコンピュータ31の発振周波数精度ずれを知ることができる。
(ステップ105)カメラ側マイクロコンピュータ13は前記(ステップ104)で得られたボーレート調整用パルスTmesのカウント値を元に相対的なレンズ側マイクロコンピュータ31の発振周波数精度ずれを勘案し、非同期通信のボーレートを調整する。
例として、予め取り決めた非同期通信のボーレートが19200bpsであったとする。レンズ側マイクロコンピュータ31の発振回路の発振周波数がずれのない10MHzであった場合は、レンズ側マイクロコンピュータ31はボーレートが19200bpsでの非同期通信データ送受信ができる。しかし回路素子の誤差要因により10.1MHzにて発振しているレンズ側マイクロコンピュータ31の場合は、ボーレートを19200bpsに設定したつもりでも、その周波数ずれの分19392bpsになってしまう。非同期通信の場合は同期クロックが存在しない分、こうした双方のボーレートずれが所定内に収まっていないとデータサンプリングエラーを起こして正常な送受信ができない。よって、カメラ側マイクロコンピュータ13は相対的なレンズ側マイクロコンピュータ31の発振周波数精度ずれに相応して最適なボーレート設定を行う。
(ステップ106)カメラ側マイクロコンピュータ13は交換レンズとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路43並びにIO制御回路45〜47の設定を行う。
レンズ側マイクロコンピュータ31もカメラとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路43並びにIO制御回路45〜47の設定を行う。
本ステップを実行した以降は、カメラと交換レンズ間の通信は第2の通信モードとしての非同期通信にて行われる。図11は非同期通信における通信タイミングチャート例である。カメラ側からレンズ側にレンズ情報の送信要求コマンド或いはレンズ側のアクチュエータの駆動コマンドを送信する場合は、DOC信号に設定されたボーレートでの非同期データパターンを出力する。多くの場合、まずLレベルのスタートビットを出力し、その後所定ビット数のデータを設定したボーレートにて出力する。所定ビット数のデータを出力し終えるとHレベルのストップビットを出力し送信が完了する。CLK信号を出力する必要は無いし、DOL信号を同時に受ける必要も無い。
カメラ側から送信されたコマンドに対してレンズ側がレンズ情報をカメラに対して送信する場合は、これもCLK信号を使うことなくレンズ側がデータ送信の準備ができたならば任意のタイミングでDOL信号にこれを出力することで行われる。通信プロトコルはDOC信号の場合と同様である。
このような非同期通信方式に切替えることで、カメラ側マイクロコンピュータ13とレンズ側マイクロコンピュータ31との間で基本送信単位毎に行っていたBusy解除確認を行う必要がなくなる。
以上でカメラと交換レンズとからなるカメラシステムの通信に関する設定動作フローの説明を終える。
次にカメラ側マイクロコンピュータ13側における交換レンズとの通信設定に関する動作フローを図7から始まるフローチャートにて説明する。
CLK端子有りのレンズ3の装着を検出してからカメラ側マイクロコンピュータ13が動作を開始して交換レンズと通信を行う場合、図7の(ステップ111)からの動作フローを実行する。
(ステップ111)図6のカメラシステムの動作フロー(ステップ101)で説明したように最初は同期通信を行うように通信制御回路43並びにIO制御回路45〜47の設定が行われている。従って、同期通信を行う場合の手順である同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合は(ステップ112)へ進む。
(ステップ112)最初に交換レンズに対して送信するデータDATA_C1を送信シフトレジスタにセットして同期通信を行う。DATA_C1の内容は交換レンズに対して交換レンズの種類や名称或いは非同期通信対応可能な新タイプか否かを知るためのレンズ情報送信コマンドである。
(ステップ113)同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。送信したデータDATA_C1の内容をレンズ側が解析してそれに対応する処理をする間は、レンズがCLKを出力する端子をLレベルとしてBusy状態とする。当該処理が完了してレンズ側がBusy状態ではなくなるのを待ってから(ステップ114)へ進む。
(ステップ114)don’t careデータDATA_C2を送信シフトレジスタにセットして同期通信を行う。
(ステップ115)前ステップでDATA_C2を送信した際に交換レンズから送られてくるレンズ情報であるDATA_L2を受信シフトレジスタから入力する。
(ステップ116)前ステップで入力したレンズ情報を解析し、現在装着されている交換レンズが非同期通信対応可能か否かを判別する。カメラ側マイクロコンピュータ13は現在装着されている交換レンズが非同期通信対応可能であると判別すると図8の(ステップ151)へ進む。
(ステップ151)カメラ側マイクロコンピュータ13は同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合は(ステップ152)へ進む。
(ステップ152)交換レンズに対して送信するデータDATA_C1を送信シフトレジスタにセットして同期通信を行う。DATA_C1の内容は非同期通信を行う際のボーレート調整用に測定するパルスを交換レンズ側に出力をするよう要求するコマンドである。
(ステップ153)同期クロック信号CLKを出力する端子の入力レベルをチェックして、レンズ側がBusy状態でないかどうかを判別する。信号CLKを出力する端子の入力レベルがHレベルで、レンズ側がBusy状態ではない場合は(ステップ154)へ進む。
(ステップ154)don’t careデータDATA_C2を送信シフトレジスタにセットして同期通信を行う。
(ステップ155)図4のステップ(ステップ104)で説明したように、このデータDATA_C2の受信直後から交換レンズがCLK信号をL出力にすることでボーレート調整用パルスTmesを出力する。このボーレート調整用パルスTmesの出力がされたらカウンタ・タイマー回路44による時間計測を開始する。
(ステップ156)交換レンズがCLK信号をH出力としボーレート調整用パルスTmesの出力が終了するとカウンタ・タイマー回路44による時間計測を終了する。カウンタ・タイマー回路44による計測値を入力してカメラ側マイクロコンピュータ13は自身の発振周波数精度に対する相対的なレンズ側マイクロコンピュータ31の発振周波数精度ずれに関する情報とする。
(ステップ157)カウンタ・タイマー回路44による計測値の理想値からのずれ値に従って非同期通信を行う際のボーレートを決定する。
(ステップ158)カメラ側マイクロコンピュータ13は交換レンズとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路43並びにIO制御回路45〜47の設定を行う。前ステップで決定されたボーレートが通信制御回路43に設定される。
以降は交換レンズとの通信は図11で説明したような非同期通信方式にて行われる。
尚、図7の(ステップ116)にて交換レンズが非同期通信に対応していないレンズであると判別された場合には図8にて説明したステップは実行せずに、そのまま同期通信方式による交換レンズとの通信を継続する。
続いてレンズ側マイクロコンピュータ31側におけるカメラとの情報通信に関する動作フローを図9に示すフローチャートにて説明する。
交換レンズ3がカメラ1に装着されてカメラから電源供給を受けてレンズ側マイクロコンピュータ31が動作可能となると、図6の(ステップ101)で説明したように最初は同期方式の通信のスレーブ側として通信制御回路43並びにIO制御回路45〜47の設定を済ます。この状態でカメラからの同期通信による割り込みが発生すると(ステップ201)からの動作フローを実行する。
(ステップ201)同期クロック信号CLKを受信する端子をLレベルにし、レンズ側がBusy状態であることをカメラが判別できるようにする。
(ステップ202)受信シフトレジスタに入力されているカメラからの送信データDATA_C1を入力し、その内容を解析する。尚、カメラからの送信データは最初はDATA_C1であるが、その後DATA_C2等が送られてくる場合があるので、フローチャート上はDATA_Cxと記載してある。
(ステップ203)カメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令である場合は(ステップ204)へ進む。
(ステップ204)カメラからの送信データDATA_C1の内容に従ってレンズ側のアクチュエータの駆動処理を行う。
(ステップ205)レンズ側のアクチュエータの駆動に関する処理が終わり、次のカメラからの通信を受信可能となったかどうかを判別する。受信可能になれば(ステップ208)へ進む。
上記(ステップ203)のステップでカメラからの送信データDATA_C1の内容がレンズ側のアクチュエータの駆動命令ではなかった場合は(ステップ206)へ進む。
(ステップ206)カメラからの送信データDATA_C1の内容が非同期通信への切替えのためのボーレート調整用パルスTmesの出力を要求するものであるかどうか判別する。もしも、ボーレート調整用パルスTmesの出力を要求するものでなければ、レンズ情報のデータ送信要求であるということで(ステップ207)へ進む。
(ステップ207)カメラからの送信データDATA_C1に従い、要求されているレンズ情報のデータを送信シフトレジスタにセットする。要求されているレンズ情報が交換レンズの種類や名称或いは非同期通信対応可能な新タイプか否かを知るためのレンズ情報であれば、その情報データをセットする。
(ステップ208)同期クロック信号CLKを受信する端子をHレベルにし、レンズ側がBusy状態ではなくなったことをカメラが判別できるようにする。
もしも、上記(ステップ206)でカメラからの送信データDATA_C1の内容が非同期通信への切替えのためのボーレート調整用パルスTmesの出力を要求するものであれば(ステップ209)へ進む。
(ステップ209)図6の(ステップ104)で説明したように、レンズ側マイクロコンピュータ31はボーレート調整用パルスTmesを出力する為の所定のカウント値をカウンタ・タイマー回路44にセットする。セットしたら、カメラからボーレート調整用パルスの出力を行うためのタイミングトリガとしての送信データDATA_C2が送信されるのを待つ。このデータを受信すると(ステップ210)へ進む。
(ステップ210)カウンタ・タイマー回路44のカウント開始と同時に同期クロック信号CLKを受信する端子をLレベルとする。カウンタ・タイマー回路44による所定値のカウントが完了すると同時に同期クロック信号CLKを受信する端子をHレベルとする。これでボーレート調整用パルスTmesの出力が完了する。
(ステップ211)レンズ側マイクロコンピュータ31はカメラとの通信方式の設定変更を行い、非同期通信を行うように通信制御回路43並びにIO制御回路45〜47の設定を行う。
以降、カメラとの通信は図11にて説明した非同期通信にて行われる。
尚、非同期通信に対応可能な交換レンズが、非同期通信に対応していないカメラに装着されるケースも考えられるが、その場合はカメラ側からボーレート調整用パルスTmesの出力を要求するコマンドが送信されてくることはない。そのため、上記(ステップ209)〜(ステップ211)のステップを実行することは無い。よってこうした場合は同期方式の通信を継続することになる。
以上、レンズ側CLK端子35を有する交換レンズ3がカメラに装着された場合におけるカメラとレンズの通信設定について説明した。上記の構成によれば、非同期通信対応可能なカメラに非同期通信対応可能な交換レンズが装着された場合、通信方式を同期通信から非同期通信に切り替えることで、同期通信時のBusyによる待ち時間の問題を改善することができる。
ここで、上記の非同期通信対応可能なカメラとレンズの構成では、はじめにレンズが非同期通信に対応するかどうかを確認するために同期通信を行っており、非同期通信に切り替えた後は同期クロック信号CLKを通信するための端子としてのCLK端子は必要なくなる。
本願技術思想は、図1(A)で示したようなCLK端子を有しない交換レンズ2にある。当該交換レンズ2においてははじめから非同期通信を行うことを想定しているため、カメラから同期クロック信号を受信する必要が無い。したがって、同期クロック信号を受信するためのCLK端子を備えていない。
CLK端子を有しない交換レンズ2が非同期通信対応可能なカメラに装着された場合、はじめから非同期通信を行う。以下で、交換レンズ2がカメラに装着された場合のカメラ−レンズ間通信方式の設定について説明する。
それに先立ち、装着された交換レンズがCLK端子を有するかどうかをカメラ側で識別する方法について説明する。
図4は、図1で示したカメラと交換レンズの接続構成及び装着された交換レンズの識別方法を示す図である。71はカメラのマイクロコンピュータ13に制御端子であるゲートが接続されたMOSFET、72はカメラ側CLK端子15に接続され、MOSFET71により、グランドに接続されるプルダウン抵抗である。73はカメラのマイクロコンピュータ13に制御端子であるゲートが接続されたMOSFET、74はカメラ側DOC端子16に接続され、MOSFET73により、グランドに接続されるプルダウン抵抗である。なお、MOSFET71及びMOSFET73は、カメラ側接地端子18と電気的に接続することでグランドに接続されている。
図4(A)は、CLK端子の無い交換レンズ2が装着されている場合を示している。75はレンズ側DOC端子26に接続され、この信号線を電源にプルアップするためのプルアップ抵抗である。
図4(B)は、CLK端子のある交換レンズ3が装着されている場合を示している。76はレンズ側CLK端子35を電源にプルアップするためのプルアップ抵抗、77はレンズ側DOC端子36を電源にプルアップするためのプルアップ抵抗である。
図4(A)で、プルダウン抵抗72とプルアップ抵抗75の抵抗比は、10:1程度に設定されている。MOSFET71をONして、プルダウン抵抗72を有効にすると、カメラ側CLK端子15にレンズ3が装着された場合は、カメラ側CLK端子15の電圧が電源電圧の9/10程度の電圧となり、Highと判定される。また、レンズ2が装着された場合や何も接続されていない場合には、カメラ側CLK端子15にはレンズ側の端子が接続されない。そのため、カメラ側CLK端子15の電圧は、GNDレベルとなり、Lowと判定される。
図4(B)で、プルダウン抵抗74とプルアップ抵抗76、77の抵抗比は、10:1程度に設定されている。MOSFET73をONして、プルダウン抵抗74を有効にすると、カメラにレンズ2又は3が装着された場合は、カメラ側DOC端子16の電圧が電源電圧の9/10程度の電圧となり、Highと判定される。また、レンズが装着されていない場合には、カメラ側DOC端子16にはレンズ側の端子が接続されない。そのため、カメラ側DOC端子16の電圧は、GNDレベルとなり、Lowと判定される。
この構成において、カメラ側マイクロコンピュータ13は、MOSFET71及びMOSFET73を制御して、カメラ側CLK端子15、カメラ側DOC端子16にレンズの信号線が接続されているかどうかを検出するようになっている。
図5は本発明を実施したカメラと交換レンズからなるカメラシステムの装着レンズ判定に関するフローチャートである。カメラ側マイクロコンピュータ13における装着レンズ判定の流れについて説明する。不図示の電源スイッチがオンされてカメラと交換レンズとが動作可能になると、フローチャートの(ステップ001)から動作を開始する。
(ステップ001)MOSFET71、73をONして、プルダウン抵抗72、74を有効にし、(ステップ002)へ進む。
(ステップ002)カメラ側DOC端子16の電圧を検出し、Highであれば(ステップ003)へ進む。Highでなければ(ステップ006)へ進む。
(ステップ003)カメラ側CLK端子15の電圧を検出し、Highであれば(ステップ004)へ進む。Highでなければ(ステップ005)へ進む。
(ステップ004)カメラ側CLK端子15及びカメラ側DOC端子16がプルアップされた状態であることから、カメラ側CLK端子15にレンズ側CLK端子35が、カメラ側DOC端子16にレンズ側のDOC端子36が接続されている。したがって、通信用CLK端子を持つレンズ3が装着されたと判断し、(ステップ007)へ進む。
(ステップ005)カメラ側CLK端子15がプルアップされていないことから、カメラ側CLK端子15には何も接続されていない。一方、カメラ側DOC端子16がプルアップされた状態であることから、カメラ側DOC端子16にレンズ側のDOC端子26が接続されている。したがって、通信用CLK端子を持たないレンズ2が装着されたと判断し、(ステップ007)へ進む。
(ステップ006)カメラ側CLK端子15、カメラ側DOC端子16共にプルアップされていないことから、それぞれの端子に何も接続されておらず、レンズ未装着と判断し(ステップ007)へ進む。
(ステップ007)MOSFET71、73をOFFして装着レンズ検出動作を終了する。
(ステップ004)でCLK端子有りのレンズ3が装着されたと判定された場合、上述した図6のフローチャートの(ステップ101)から動作を開始し、はじめに同期通信を行う。なお、カメラ側CLK端子15及びカメラ側DOC端子16の電圧を検出する手段を別に設けて、カメラ側マイクロコンピュータ13に接続するようにしてもよい。
また、プルダウン抵抗74をカメラ側DOL端子17に、プルアップ抵抗75をレンズ側DOL端子27に、プルアップ抵抗77をレンズ側DOL端子37に接続するような構成でもよい。この場合、カメラ側マイクロコンピュータ13は、カメラ側DOL端子17の電圧に基づいて、交換レンズが装着されたかどうかを判定可能である。
また、交換レンズが装着されたかどうかを判定する方法は上記方法に限定されない。
図15は、図5で説明したCLK端子無しのレンズ2が装着された場合の、本発明を実施したカメラと交換レンズとからなるカメラシステムの通信に関する設定動作フローチャートである。カメラ側及び交換レンズ側マイクロコンピュータ個々の動作フローは後述するが、最初に全体的な動作の流れとして本図を説明する。
図5の動作で、CLK端子無しのレンズ2が装着されたことを検出すると、フローチャートの(ステップ501)から動作を開始する。
(ステップ501)非同期通信を行うように通信制御回路43並びにIO制御回路45〜47の設定を行い、(ステップ502)へ進む。この際、通信のためのボーレートをあらかじめ決められた標準の値、たとえば19200bpsに設定する。
(ステップ502)カメラと交換レンズとの間で非同期方式による通信を行い(ステップ503)に進む。この通信で、カメラ側は交換レンズに対してDATA_C1にて交換レンズの種類や名称を知るためのレンズ情報送信コマンドを送信する。
交換レンズ側はレンズ情報送信コマンドを受信すると、これに対応したレンズ情報をDATA_L2にてカメラに送信する。
(ステップ503)(ステップ502)で行った通信が成立したかどうかを判断する。成立していれば(ステップ510)へ進み、成立していなければ(ステップ504)へ進む。
(ステップ504)(ステップ502)で行った通信が非成立であったが、この原因がボーレートのずれである可能性があるため、通信できるボーレートを探すために、ボーレート変更を行い(ステップ505)に進む。
一般的に、ボーレートのずれが5%程度までは正常に通信を行うことができるが、これ以上の差が生じると正しく通信ができないため、(ステップ501)の非同期通信設定で設定したボーレートよりも5%程度高いボーレートを設定する。たとえば、(ステップ501)での設定が19200bpsの設定であった場合20160bps程度のボーレートを設定する。
(ステップ505)カメラと交換レンズとの間で非同期方式による通信を行い(ステップ506)に進む。この通信でカメラ側は交換レンズに対してDATA_C1にて交換レンズの種類や名称を知るためのレンズ情報送信コマンドを送信する。
交換レンズ側はレンズ情報送信コマンドを受信すると、これに対応したレンズ情報をDATA_L2にてカメラに送信する。
(ステップ506)(ステップ505)で行った通信が成立したかどうかを判断する。成立していれば(ステップ510)へ進み、成立していなければ(ステップ507)へ進む。
(ステップ507)(ステップ505)で行った通信が非成立であったが、この原因がボーレートのずれである可能性があるため、通信できるボーレートを探すためにボーレート変更を行い(ステップ508)に進む。
一般的に、ボーレートのずれが5%程度までは正常に通信を行うことができるが、これ以上の差が生じると正しく通信ができないため、(ステップ501)の非同期通信設定で設定したボーレートよりも5%程度低いボーレートを設定する。たとえば、(ステップ501)での設定が19200bpsの設定であった場合、18240bps程度のボーレートを設定する。
(ステップ508)カメラと交換レンズとの間で非同期方式による通信を行い、(ステップ509)に進む。この通信でカメラ側は交換レンズに対してDATA_C1にて交換レンズの種類や名称を知るためのレンズ情報送信コマンドを送信する。
交換レンズ側はレンズ情報送信コマンドを受信すると、これに対応したレンズ情報をDATA_L2にてカメラに送信する。
(ステップ509)(ステップ508)で行った通信が成立したかどうかを判断する。成立していれば(ステップ510)へ進み、成立していなければ(ステップ511)へ進む。
(ステップ510)ここまでに通信の成立したボーレートで今後も通信を行うよう設定を行い、CLK端子を有しない交換レンズ2の通信設定を終了する。
(ステップ511)ボーレートを変更して何度か通信を行ったが、通信が成立しなかったため、通信エラー処理を行い終了する。
なお、これまでの説明で、ボーレート変更をアップとダウンの一回ずつ行うこととしたが、さらにボーレート変更を複数回行い、より広い範囲で通信可能なボーレートを探すこともできる。
以上、CLK端子を有しない交換レンズ2がカメラに装着された場合におけるカメラとレンズの通信設定について説明した。上記構成によれば、CLK端子を有しないレンズが非同期通信に対応可能なカメラに装着された場合ははじめから非同期通信を行うことにより、確認のための同期通信が不要になり、レンズを装着してから撮影可能になるまでの時間を短縮することができる。また、レンズ側は端子部材を削減することができる。
上記説明したように、本実施例では、非同期通信に対応可能なカメラが、装着されたレンズのCLK端子の有無を検出してそのレンズに応じた通信方式を設定する。具体的には、CLK端子を有しないレンズが装着されたときははじめから非同期通信を行う。一方、CLK端子を有するレンズが装着されたときははじめに同期通信を行い、レンズが非同期通信に対応可能であることを確認してから非同期通信に切り替える。このとき、レンズが非同期通信に対応しない場合は同期通信を継続する。
以上、本実施例にて説明したように、本発明によれば、非同期通信対応可能なカメラは、従来のレンズとの互換性を保ちつつ、新しい通信に対応可能なレンズに対しては通信パフォーマンスを向上させることが可能になる。
<実施例1の変形>
上記実施例1は本発明を実施した代表的なカメラと交換レンズの実施形態であるが、考えられる実施形態の全てを表した訳ではない。
図7の(ステップ105)などで説明したレンズが出力するボーレート調整用パルスTmesの出力端子は実施例1記載のCLK端子に限定される必要はなく、DOC端子やDOL端子であっても良い。また、第1の実施形態ではレンズが出力するボーレート調整用パルスTmesはその信号出力の立下りから立ち上がりの区間であったが、これもこの形態に限定される必要はない。また、カメラと交換レンズとの通信回路方式において特許文献1のようにオープンドレイン方式とCMOS方式との切替えを有している場合は、CMOS方式に回路を切替えてからボーレート調整用パルスTmesをレンズが出力する方が出力波形の遅延なまりが少なくなりより好ましい。
実施例1ではレンズが出力するボーレート調整用パルスTmesの出力タイミングをDATA_C2の受信直後としたが、これも一例であり特に限定する必要はない。
また、マイクロコンピュータやその発振回路用に用いる発振子などの電子部品の特性は温度の変化に依存して変化する場合が多く、発振周波数は温度変化によってある範囲内で変化することが多い。よって図6の(ステップ105)などで説明した同期通信から非同期通信に切替える直前だけでなく、それ以外のタイミングでもボーレート調整を行うようにした方がより好ましい。具体的にはカメラ側マイクロコンピュータ13はその動作中に適当な時間間隔で温度センサー19の出力をモニターし、温度変化が所定以上発生したらボーレート調整を行うようなことが考えられる。
<実施例2>
実施例1では、レンズ側CLK端子の有無を調べるために、端子の電気的接続を検出することでカメラ側CLK端子15にレンズの信号線が接続されているかどうかを検出する方法を述べたが、他の方法でも検出可能である。例えば、カメラ側CLK端子15のメカ的な動作を検出する方法もある。その一例を図16に示す。
図16において、カメラ側CLK端子15は、不図示のバネで付勢されておりカメラ側から若干飛び出すようになっている。図16(A)に示すように、カメラ側CLK端子15に対応するレンズ側の端子がない場合、カメラ側CLK端子15はカメラ側から飛び出したままである。一方、図16(B)で示すように、カメラ側CLK端子15に対応するレンズ側CLK端子35がある場合、カメラ側CLK端子15はレンズ側CLK端子35によってカメラ側へ押し込まれる。
この違いを、CLK端子15近傍に設けた検出スイッチ20により検出することで、CLK端子15にレンズの信号線が接続されているかどうかを検出することが可能である。
本実施例を適用した場合でも、非同期通信対応可能なカメラは、従来のレンズとの互換性を保ちつつ、新しい通信に対応可能なレンズに対しては通信パフォーマンスを向上させることが可能になる。