(57)【要約】【課題】  従来のシリアル通信装置は、信号線を増やさずに通信開始タイミングを通知することが難しく、速やかにエラー復帰することができなかった。【解決手段】  本発明では、マスター制御部とスレーブ制御部との間でシリアルデータを伝送するシリアル通信装置において、前記マスター制御部と前記スレーブ制御部は、ＣＰＵと、シリアル通信部と、ＤＭＡ部とでそれぞれ構成され、前記ＣＰＵが主体となって前記シリアル通信部を介してデータ伝送を行うＣＰＵ通信モードと、前記ＤＭＡ部が主体となって前記シリアル通信部を介してデータ伝送を行うＤＭＡ通信モードとを有し、前記マスター制御部と前記スレーブ制御部との間で送受信されるデータを第１データと第２データとに分割して、前記第１データを前記ＣＰＵ通信モードで送受信した後、前記第２のデータを前記ＤＭＡ通信モードで送受信することを特徴とする。【選択図】図４
2013172403.tif 000002
【特許請求の範囲】
【請求項１】
マスター制御部とスレーブ制御部との間でシリアルデータを伝送するシリアル通信装置において、
前記マスター制御部と前記スレーブ制御部は、ＣＰＵと、シリアル通信部と、ＤＭＡ部とでそれぞれ構成され、前記ＣＰＵが主体となって前記シリアル通信部を介してデータ伝送を行うＣＰＵ通信モードと、前記ＤＭＡ部が主体となって前記シリアル通信部を介してデータ伝送を行うＤＭＡ通信モードとを有し、
前記マスター制御部と前記スレーブ制御部との間で送受信されるデータを第１データと第２データとに分割して、前記第１データを前記ＣＰＵ通信モードで送受信した後、前記第２のデータを前記ＤＭＡ通信モードで送受信する
ことを特徴とするシリアル通信装置。
【請求項２】
請求項１に記載のシリアル通信装置において、
前記スレーブ制御部に予め設定されたタイマ時間を計測するタイマ部を設け、
前記スレーブ制御部は、前記第１データを受信後に前記タイマ部を起動し、前記タイマ時間が経過しても前記第２データのＤＭＡ通信が終了しない場合は、前記スレーブ制御部側の通信処理をリセットする
ことを特徴とするシリアル通信装置。
【請求項３】
請求項１または２に記載のシリアル通信装置において、
前記第１データは、前記マスター制御部と前記スレーブ制御部との間で送受信可能な最小単位のデータ長に設定する
ことを特徴とするシリアル通信装置。
【請求項４】
請求項１から３のいずれか一項に記載のシリアル通信装置において、
前記スレーブ制御部は、前記第２データのデータ長に比例して前記タイマ部のタイマ時間を設定する
ことを特徴とするシリアル通信装置。
【請求項５】
請求項１から４のいずれか一項に記載のシリアル通信装置において、
前記マスター制御部は、前記第１データの送受信終了タイミングから予め設定されたウェイト時間だけウェイトした後、前記第２のデータを前記ＤＭＡ通信モードで送受信する
ことを特徴とするシリアル通信装置。
【請求項６】
請求項５に記載のシリアル通信装置において、
前記スレーブ制御部は、前記マスター制御部からの指令によって動作周波数を変更する機能を更に備え、
前記マスター制御部は、前記スレーブ制御部のＣＰＵの動作周波数を低く設定する場合は前記ウェイト時間を長く設定し、前記スレーブ制御部の動作周波数を高く設定する場合は前記ウェイト時間を短く設定する
ことを特徴とするシリアル通信装置。
【請求項７】
請求項１から６のいずれか一項に記載のシリアル通信装置を搭載する電子カメラにおいて、
前記電子カメラは、カメラ本体と、前記カメラ本体に着脱可能な撮影レンズとで構成され、前記カメラ本体側に配置された前記マスター制御部と、前記撮影レンズ側に配置された前記スレーブ制御部との間でシリアル通信を行う
ことを特徴とする電子カメラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル通信装置および電子カメラに関する。
【背景技術】
【０００２】
従来、少ない配線でデータ伝送を行うことができる同期式シリアル通信が回路間や基板間のデータ伝送に用いられている。データ伝送方法には、データ単位毎にＣＰＵを介して伝送する方法と、ＣＰＵを介さずにＤＭＡ（ダイレクトメモリアクセス）方式により伝送する方法とがある。また、回路のバスをＣＰＵとＤＭＡで兼用する方法と独立して設ける方法とがある。多量のデータを高速で送受信しながら、機械制御系のようなリアルタイム処理がＣＰＵに要求される場合、ＤＭＡ用のバスによるＤＭＡ転送が用いられている。例えば一眼レフ型カメラのカメラ本体と撮影レンズとの間では光学系の多量な情報を送受信しながら、フォーカス制御などの機械制御をリアルタイムで行わなければならないので、ＤＭＡ転送が用いられている。しかしながら、何らかの要因でマスターから規定バイト数分のクロック信号を受信できない場合、ＤＭＡ転送が完了しないという問題がある。
【０００３】
そこで、クロック信号、データ信号（ＤＯＵＴおよびＤＩＮ）の３線の他にＤＭＡの開始タイミングを通知するためのストローブ信号や応答を示すＡＣＫ信号などの信号線を追加して、スレーブ側で通信開始タイミングを把握し、エラータイマを起動する方法などが考えられている。ところが、この場合は５本の信号線が必要となり、スペースやコスト的に問題があるので、クロック信号やデータ信号のレベルを変化させてスレーブ側に通信開始タイミングを通知する方法が考えられている（例えば、参考文献１参照）。
【０００４】
また、通信開始タイミングを通知しない方法として、定期的にデータ通信する方法も考えられている（例えば、参考文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１３５５４５号公報
【特許文献２】特開２００５−３３３４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術ではＤＭＡ通信の開始タイミングを知らせるための信号線を増やさない代わりに、例えばマスター側では通信開始前にクロック信号やデータ信号のレベルを変化させる必要があり、スレーブ側ではレベル変化を確実に捉えなければならないという問題が生じる。また、定期的に通信する方法では、想定される最大データ送受信量よりも十分に長い通信周期を設定しておかなければならず、電子カメラのような即時性が要求される用途には問題がある。
【０００７】
本発明の目的は、信号線を増やさずに通信開始タイミングを通知するとともに、速やかにエラー復帰することができるシリアル通信装置および電子カメラを提供することである。
【課題を解決するための手段】
【０００８】
本発明に係るシリアル通信装置は、マスター制御部とスレーブ制御部との間でシリアルデータを伝送するシリアル通信装置において、前記マスター制御部と前記スレーブ制御部は、ＣＰＵと、シリアル通信部と、ＤＭＡ部とでそれぞれ構成され、前記ＣＰＵが主体となって前記シリアル通信部を介してデータ伝送を行うＣＰＵ通信モードと、前記ＤＭＡ部が主体となって前記シリアル通信部を介してデータ伝送を行うＤＭＡ通信モードとを有し、前記マスター制御部と前記スレーブ制御部との間で送受信されるデータを第１データと第２データとに分割して、前記第１データを前記ＣＰＵ通信モードで送受信した後、前記第２のデータを前記ＤＭＡ通信モードで送受信することを特徴とする。
【０００９】
さらに、前記スレーブ制御部に予め設定されたタイマ時間を計測するタイマ部を設け、前記スレーブ制御部は、前記第１データを受信後に前記タイマ部を起動し、前記タイマ時間が経過しても前記第２データのＤＭＡ通信が終了しない場合は、前記スレーブ制御部側の通信処理をリセットすることを特徴とする。
【００１０】
特に、前記第１データは、前記マスター制御部と前記スレーブ制御部との間で送受信可能な最小単位のデータ長に設定することを特徴とする。
【００１１】
また、前記スレーブ制御部は、前記第２データのデータ長に比例して前記タイマ部のタイマ時間を設定することを特徴とする。
【００１２】
さらに、前記マスター制御部は、前記第１データの送受信終了タイミングから予め設定されたウェイト時間だけウェイトした後、前記第２のデータを前記ＤＭＡ通信モードで送受信することを特徴とする。
【００１３】
特に、前記スレーブ制御部は、前記マスター制御部からの指令によって動作周波数を変更する機能を更に備え、前記マスター制御部は、前記スレーブ制御部のＣＰＵの動作周波数を低く設定する場合は前記ウェイト時間を長く設定し、前記スレーブ制御部の動作周波数を高く設定する場合は前記ウェイト時間を短く設定することを特徴とする。
【００１４】
本発明に係る電子カメラは、前記シリアル通信装置を搭載する電子カメラにおいて、前記電子カメラは、カメラ本体と、前記カメラ本体に着脱可能な撮影レンズとで構成され、前記カメラ本体側に配置された前記マスター制御部と、前記撮影レンズ側に配置された前記スレーブ制御部との間でシリアル通信を行うことを特徴とする。
【発明の効果】
【００１５】
本発明に係るシリアル通信装置および電子カメラは、信号線を増やさずに通信開始タイミングを通知するとともに、速やかにエラー復帰することができる。
【図面の簡単な説明】
【００１６】
【図１】各実施形態に係る電子カメラ１０１の構成例を示す図である。
【図２】レンズ側マイコン３０１の構成例を示す図である。
【図３】従来の構成例およびタイミング例を示す図である。
【図４】ボディ側マイコン２０１とレンズ側マイコン３０１の処理を示す図である。
【図５】送受信データの分割例を示す図である。
【図６】ボディ側マイコン２０１とレンズ側マイコン３０１のその他の処理内容を示す図である。
【図７】クロック不足の場合のシリアル通信のタイミング例を示す図である。
【図８】タイマ４１２を用いない場合のシリアル通信のタイミング例を示す図である。
【図９】クロック過剰の場合のシリアル通信のタイミング例を示す図である。
【図１０】レンズ側マイコン３０１の処理タイミングの詳細を示す図である。
【図１１】レンズ側マイコン３０１の処理例を示すフローチャートである。
【図１２】ボディ側マイコン２０１の処理例を示すフローチャートである。
【図１３】レンズ側マイコン３０１の処理タイミングの変形例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明に係るシリアル通信装置および電子カメラの実施形態について図面を用いて詳しく説明する。尚、以下の実施形態では、本発明に係るシリアル通信装置が搭載された電子カメラの例を挙げて説明するが、電子カメラ以外の装置に適用してもよい。
【００１８】
［電子カメラ１０１の構成および基本動作］
先ず、本実施形態に係る電子カメラ１０１の構成について説明する。図１は電子カメラ１０１の構成例を示す図で、電子カメラ１０１は、カメラ本体１０２と、カメラ本体１０２に着脱可能な撮影レンズ１０３とで構成される一眼レフ型カメラである。
【００１９】
図１において、カメラ本体１０２は、ボディ側マイコン２０１と、操作部２０２と、表示部２０３と、記憶部２０４と、撮影部２０５とで構成される。また、撮影レンズ１０３は、レンズ側マイコン３０１と、手振れ補正レンズ駆動部３０２と、フォーカスレンズ駆動部３０３と、ズームレンズ駆動部３０４と、絞り駆動部３０５とで構成される。
【００２０】
ボディ側マイコン２０１は、撮影者による操作部２０２のボタン操作に応じて電子カメラ１０１全体の動作を制御する。また、ボディ側マイコン２０１は、撮影部２０５のイメージセンサから得られる画像情報に基づいて、被写体までの距離を求めてフォーカス位置を算出する測距演算２５１、被写体の明るさを計測して絞り値やシャッター速度などを求める測光演算２５２などを行う。尚、専用の測光センサやＡＦセンサなどが搭載されている場合は、撮影部２０５のイメージセンサの画像情報を用いずに測距演算２５１や測光演算２５２を行ってもよい。
【００２１】
操作部２０２は、電源ボタン、シャッターボタン、ズームボタン、撮影モード選択ダイヤル、メニューボタンなどで構成され、撮影者はこれらの操作ボタンにより電子カメラ１０１を操作する。そして、操作部２０２の操作情報は、ボディ側マイコン２０１に出力される。
【００２２】
表示部２０３は、液晶モニタなどの表示媒体で構成され、ボディ側マイコン２０１から出力されるメニュー画面や撮影画像などが表示される。
【００２３】
記憶部２０４は、不揮発性のフラッシュメモリなどで構成され、撮影画像や撮影モードなどの動作に必要なパラメータなどが記憶される。
【００２４】
撮影部２０５は、イメージセンサ、画像バッファ、画像処理デバイスなどで構成され、撮影レンズ１０３から入射する光を受光して被写体像を撮像し、ホワイトバランス処理やガンマ補正処理などの画像処理を施した画像データを取得する。そして、ボディ側マイコン２０１は、撮影部２０５により撮影された画像データを撮影画像として表示部２０３に表示したり、記憶部２０４に保存する。
【００２５】
一方、撮影レンズ１０３のレンズ側マイコン３０１は、カメラ本体１０２のボディ側マイコン２０１からの指令に応じて撮影レンズ１０３の動作を制御する。例えばボディ側マイコン２０１から指令される手振れ補正レンズの補正量に応じて手振れ補正レンズ駆動部３０２を制御し、手振れ補正レンズ位置を変える。同様に、ボディ側マイコン２０１からフォーカスレンズ位置の変更指令を受けた場合はフォーカスレンズ駆動部３０３を制御してフォーカスレンズ位置を移動し、ズームレンズ位置の変更指令を受けた場合はズームレンズ駆動部３０４を制御してズームレンズ位置を移動する。或いは、ボディ側マイコン２０１から絞り値の変更指令を受けた場合は、絞り駆動部３０５を制御して絞り値を変える。尚、上記のような制御を行う場合に、ボディ側マイコン２０１は、撮影レンズ１０３の各レンズ位置や絞り値などの光学情報をレンズ側マイコン３０１から取得し、適正なフォーカスレンズの移動量や絞り値などを算出する。
【００２６】
このように、電子カメラ１０１は、カメラ本体１０２のボディ側マイコン２０１と撮影レンズ１０３のレンズ側マイコン３０１との間でコマンドや光学情報などのデータを送受信して、撮影制御を行う。そして、カメラ本体１０２と撮影レンズ１０３との間に電気的な接点が配置され、撮影レンズ１０３をカメラ本体１０２に装着したときに接点を介してコマンドや光学情報などを送受信するためのシリアルデータ通信を行うことができる。例えば図１の電子カメラ１０１では、カメラ本体１０２から撮影レンズ１０３に対して、電源と、クロックＣＬＫと、データ出力ＤＯＵＴとが出力され、撮影レンズ１０３からカメラ本体１０２に対して、データ入力ＤＩＮと、応答信号ＡＣＫとが出力される。尚、ＧＮＤ（接地）は共通である。
【００２７】
［レンズ側マイコン３０１の構成例］
次に、レンズ側マイコン３０１の構成例について図２を用いて説明する。図２において、レンズ側マイコン３０１は、ＣＰＵコア４０１と、内蔵ＲＯＭ４０２と、内蔵ＲＡＭ４０３と、ＣＰＵバス４０４と、内部バス４０５と、周辺バスコントローラ４０６と、ＤＭＡコントローラ４０７と、周辺バス４０８と、割り込みコントローラ４０９と、Ｉ／Ｏポート４１０と、ＳＣＩ４１１（シリアル通信インターフェース（シリアルＩＦ））と、タイマ４１２とで構成される。
【００２８】
ＣＰＵコア４０１は、内蔵ＲＯＭ４０２に予め記憶されたプログラムに従って動作する中央演算処理部で、ＣＰＵバス４０４を介して内蔵ＲＯＭ４０２や内蔵ＲＡＭ４０３との間でデータを入出力する。また、ＣＰＵコア４０１は、内部バス４０５を介して周辺バスコントローラ４０６やＤＭＡコントローラ４０７との間で制御コマンドやデータを入出力する。ここで、内蔵ＲＯＭ４０２には、ＣＰＵコア４０１のプログラムやデフォルトのパラメータなどが製造時に記憶されており、内蔵ＲＡＭ４０３には、電子カメラ１０１の動作時のパラメータや露光情報などが一時的に記憶される。
【００２９】
周辺バスコントローラ４０６は、周辺バス４０８を介して、割り込みコントローラ４０９、Ｉ／Ｏポート４１０、ＳＣＩ４１１およびタイマ４１２などが接続され、ＣＰＵコア４０１との間で制御コマンドやデータなどを入出力する。
【００３０】
ＤＭＡコントローラ（ＤＭＡＣ）４０７は、ＣＰＵコア４０１を介さずにＳＣＩ４１１を介してシリアルデータの送受信を行うＤＭＡ（ダイレクトメモリアクセス）動作を制御するためのコントローラである。ＤＭＡは、ＣＰＵコア４０１およびＣＰＵバス４０４を介さずに大量のデータを高速に送受信でき、ＣＰＵコア４０１の処理に与える影響を少なくすることができる。
【００３１】
割り込みコントローラ４０９は、周辺バスコントローラ４０６を介してＣＰＵコア４０１に出力する割り込みを制御するためのコントローラである。例えばＩ／Ｏポート４１０の特定ポートからの割り込み、ＳＣＩ４１１の送受信完了時の割り込み、タイマ４１２が予め設定された時間経過時の割り込み、ＤＭＡコントローラ４０７によるＤＭＡ完了時の割り込みなどが予め設定された優先順位で制御され、ＣＰＵコア４０１に割り込み信号を出力する。
【００３２】
Ｉ／Ｏポート４１０は、例えば手振れ補正レンズ駆動部３０２、フォーカスレンズ駆動部３０３、ズームレンズ駆動部３０４および絞り駆動部３０５などを制御するための信号を入出力するためのポートである。
【００３３】
ＳＣＩ４１１は、ボディ側マイコン２０１との間でシリアル通信を行うためのインターフェース（ＳＣＩ）で、図１で説明したクロックＣＬＫ、データ出力ＤＯＵＴ、データ入力ＤＩＮ、応答ＡＣＫの４つの信号線により、制御コマンドやデータが送受信される。尚、ＳＣＩ４１１は、クロックＣＬＫに同期して制御コマンドやデータの送信と受信とが同時に行われるので、ボディ側マイコン２０１からレンズ側マイコン３０１へのみデータを送信する場合でもレンズ側マイコン３０１からボディ側マイコン２０１に対してダミーのデータが送信される。同様に、レンズ側マイコン３０１からボディ側マイコン２０１にデータを送信する場合もボディ側マイコン２０１からレンズ側マイコン３０１にダミーのデータが送信される。或いは、同時に必要なデータを送受信してもよいが、この場合はデータ量の多い方に合わせてデータが送受信され、データ量の少ない方のデータにはダミーデータが挿入される。
【００３４】
タイマ４１２は、ＣＰＵコア４０１により設定された時間を計測し、設定時間が経過した時に、割り込みコントローラ４０９を介してＣＰＵコア４０１に割り込み信号を出力する。
【００３５】
尚、本実施形態の動作では、次のような割り込みを利用する。
（１）ＳＣＩ４１１の送受信が完了した時に出力されるＳＣＩ送受信完了割り込み
（２）ＤＭＡコントローラ４０７によるＤＭＡ送受信が完了した時に出力されるＤＭＡ完了割り込み
（３）タイマ４１２がタイムアウトした時に出力されるタイマ割り込み
（４）ＳＣＩ４１１の送信バッファが空になった場合に出力されるＳＣＩ送信エンプティ割り込み
ここで、図２はレンズ側マイコン３０１の構成例として説明したが、ボディ側マイコン２０１の構成も図２と同様なので、ボディ側マイコン２０１の構成例についての説明は省略するが、ボディ側マイコン２０１の場合、タイマ４１２はなくても構わない。尚、以降の説明において、図２のレンズ側マイコン３０１の各ブロックに相当するボディ側マイコン２０１のブロックについては符号にアルファベットのａを付加して表記する。例えばレンズ側マイコン３０１のＣＰＵコア４０１に対して、ボディ側マイコン２０１のＣＰＵコア４０１ａ、レンズ側マイコン３０１のＳＣＩ４１１に対して、ボディ側マイコン２０１のＳＣＩ４１１ａのように表記する。また、ボディ側マイコン２０１の場合は、操作部２０２はＩ／Ｏポート４１０ａに接続され、表示部２０３、記憶部２０４および撮影部２０５は、大量のデータを入出力する必要があるので、Ｉ／Ｏポート４１０ａだけでなく周辺バス４０８ａや内部バス４０５ａにダイレクトに接続するようにしてもよい。
【００３６】
［従来の構成例］
ここで、本実施形態に係る電子カメラ１０１におけるシリアル通信方法の特徴がわかり易いように、従来の構成例について図３を用いて簡単に説明する。図３（ａ）は、従来例を示すボディ側マイコン９０１とレンズ側マイコン９０２との間の信号線の一例を示す図である。図１で説明した電子カメラ１０１ではボディ側マイコン２０１とレンズ側マイコン３０１との間は電源とＧＮＤ以外に、クロックＣＬＫ、データ出力ＤＯＵＴ、データ入力ＤＩＮおよび応答ＡＣＫの４つの信号線で接続されていたが、図３の例ではボディ側マイコン９０１からレンズ側マイコン９０２にＤＭＡ通信の開始を通知するためのストローブＳＴＲＯＢＥ用の信号線が配置されている。
【００３７】
図３（ｂ）は、ボディ側マイコン９０１とレンズ側マイコン９０２との間でＤＭＡによる送受信を行う場合の各信号線のタイミング例を示す図である。図３（ｂ）において、タイミングＴ５１でストローブＳＴＲＯＢＥを”Ｌ”にしてレンズ側マイコン９０２にＤＭＡ通信の開始を通知する。これを受けたレンズ側マイコン９０２は、タイミングＴ５２で応答ＡＣＫを”Ｌ”にしてＤＭＡ通信の開始を了解したことをボディ側マイコン９０１に応答する。そして、ボディ側マイコン９０１はタイミングＴ５３でストローブＳＴＲＯＢＥ”Ｈ”にして、タイミングＴ５４からタイミングＴ５５までの間で送受信するデータのバイト数に応じたクロックＣＬＫのタイミングに同期して、コマンド（ｃｏｍｍａｎｄ）やデータ（ｄａｔａ）をデータ出力ＤＯＵＴからレンズ側マイコン９０２に送信し、レンズ側マイコン９０２から応答データ（ｒｅｓｐｏｎｓｅ）をデータ入力ＤＩＮから受信する。そして、データの送受信が終了すると、応答ＡＣＫを”Ｈ”にする。
【００３８】
このようにして、従来はストローブＳＴＲＯＢＥを用いて、ボディ側マイコン９０１とレンズ側マイコン９０２との間でＤＭＡによるシリアルデータの転送を行っていた。これに対して、本実施形態に係る電子カメラ１０１のボディ側マイコン２０１とレンズ側マイコン３０１との間では、ＤＭＡ通信の開始を通知するためのストローブＳＴＲＯＢＥ用の信号線を用いることなく、ＤＭＡ通信を行えるようになっている。尚、クロックＣＬＫに同期してデータ出力ＤＯＵＴとデータ入力ＤＩＮのシリアルデータが送受信される動作は、本実施形態におけるボディ側マイコン２０１とレンズ側マイコン３０１間の通信においても同じである。
【００３９】
［本実施形態のボディ側マイコン２０１とレンズ側マイコン３０１間の通信］
次に、ボディ側マイコン２０１とレンズ側マイコン３０１との間で行われるシリアル通信の動作について図４を用いて説明する。尚、図４において、ボディ側マイコン２０１のＳＣＩ４１１ａとレンズ側マイコン３０１のＳＣＩ４１１との間は、図１で説明したように、クロックＣＬＫ、データ出力ＤＯＵＴ、データ入力ＤＩＮ、応答ＡＣＫの４つの信号線と、電源およびＧＮＤとを接続されている。尚、ボディ側マイコン２０１およびレンズ側マイコン３０１は初期化が終了し、いつでも通信できる状態（通信確立状態）にあるものとする。また、以下の例では２５６バイトのデータを送受信する場合について説明する。
【００４０】
図４において、ボディ側マイコン２０１のＣＰＵコア４０１ａは、レンズ側マイコン３０１からの応答ＡＣＫが通信可能を示す”Ｌ”（二値信号のＬｏｗレベル）になるのを待つ。そして、ＣＰＵコア４０１ａは、応答ＡＣＫが”Ｌ”になったら予め設定されたバイト数（ここでは最小単位の１バイトとする）のデータを非ＤＭＡで送受信する。ここで、図３で説明したように、非ＤＭＡ通信においても、クロックＣＬＫに同期してデータ出力ＤＯＵＴとデータ入力ＤＩＮのシリアルデータが送受信される動作はＤＭＡ通信の場合と同じである。そして、１バイトのシリアルデータの送受信が完了すると、ＳＣＩ４１１ａからＣＰＵコア４０１ａにＳＣＩ送受信完了割込が出力される。
【００４１】
同様に、レンズ側マイコン３０１においても、１バイトのシリアルデータの送受信が完了すると、ＳＣＩ４１１からＣＰＵコア４０１にＳＣＩ送受信完了割込が出力される。これにより、レンズ側マイコン３０１のＣＰＵコア４０１は、非ＤＭＡ転送の完了（つまり、ＤＭＡ通信の開始）を知ることができ、タイマ４１２の起動を行うと共に、ＤＭＡコントローラ４０７にＤＭＡ転送の設定（送受信バイト数など）を行う。ここでは、先に送受信した１バイトのデータを含めて２５６バイトのデータを送受信するので、ＤＭＡ転送で送受信するデータは２５５バイトである。この状態で、レンズ側マイコン３０１は、いつでもＤＭＡ転送を行える状態にあり、ボディ側マイコン２０１からクロックＣＬＫが出力されるのを待っている状態にある。
【００４２】
一方、ボディ側マイコン２０１では、ＣＰＵコア４０１ａがＳＣＩ４１１ａからＳＣＩ送受信完了割込を受け取ってＤＭＡ転送を開始するが、レンズ側マイコン３０１の動作周波数が低速である場合、レンズ側マイコン３０１でＤＭＡ転送の準備を行う時間を確保するために、ＤＭＡ転送の開始を少し遅らせるウェイト処理を行う。尚、ウェイト処理について後で詳しく説明する。そして、ＤＭＡ転送の開始をＤＭＡコントローラ４０７ａに指令し、ＤＭＡコントローラ４０７ａは、ＣＰＵコア４０１ａを介さないＤＭＡによるシリアルデータの送受信を開始する。ＤＭＡでは、ボディ側マイコン２０１のＤＭＡコントローラ４０７ａとＳＣＩ４１１ａおよびレンズ側マイコン３０１のＳＣＩ４１１とＤＭＡコントローラ４０７の間で行われ、ＣＰＵコア４０１およびＣＰＵコア４０１ａはＤＭＡ完了割込を受け取るまで関知する必要がない。このようにして、設定されたバイト数（ここでは２５５バイト）のシリアルデータがＤＭＡによって送受信された後、ボディ側マイコン２０１およびレンズ側マイコン３０１の双方において、それぞれＤＭＡ完了割込がＣＰＵコア４０１ａおよびＣＰＵコア４０１に出力される。
【００４３】
ＤＭＡ完了割込を受けたボディ側マイコン２０１のＣＰＵコア４０１ａは、受信したデータに誤りがないかをチェックサムにより確認する。そして、エラーがあった場合はリトライして一連の動作をやり直し、エラーがなかった場合は終了する。同様に、ＤＭＡ完了割込を受けたレンズ側マイコン３０１のＣＰＵコア４０１も、受信したデータに誤りがないかをチェックサムにより確認する。そして、エラーがあった場合はリトライして一連の動作をやり直し、エラーがなかった場合はタイマ４１２のタイマ動作を停止して終了する。
【００４４】
ここで、ボディ側マイコン２０１では、ＳＣＩ４１１ａ自らがクロックＣＬＫを出力しているので、ＤＭＡ完了割込は確実に発生するが、レンズ側マイコン３０１のＤＭＡ完了割込は、送受信予定のシリアルデータのバイト数に応じた数のクロックを受信した時に発生するので、カメラ本体１０２と撮影レンズ１０３との間の接点不良などによってクロックが不足した場合、ＤＭＡ完了割込が長時間発生しない状態になってしまう。この場合、例えば次のＤＭＡ通信のクロックでＤＭＡ完了割込が発生することになる。本実施形態に係る電子カメラ１０１では、レンズ側マイコン３０１において、ＤＭＡ完了割込が発生しない場合でもタイマ４１２がタイムアウトするので、迅速にリトライすることができ、エラーが次のＤＭＡ転送に波及するのを防止できる。
【００４５】
このように、本実施形態に係る電子カメラ１０１は、図５において、ボディ側マイコン２０１とレンズ側マイコン３０１との間で送受信するデータ５００（ｘバイト）を非ＤＭＡで送受信するデータ５０１（ｎバイト）と、ＤＭＡで送受信するデータ５０２（ｍバイト）とに分割して送受信し、ＤＭＡの開始を通知するストローブＳＴＲＯＢＥの代わりに非ＤＭＡによるデータの送受信のタイミングを使用するので、ストローブＳＴＲＯＢＥ用の信号線を減らすことができる。さらに、ＤＭＡ通信の開始前にタイマ４１２を起動することにより、何らかの要因によってクロックＣＬＫが不足してＤＭＡ完了割込が発生しない状態になった場合でも迅速に復帰することができ、次のＤＭＡ転送サイクルへのエラーの波及を防止できる。尚、図５において、非ＤＭＡで送受信するデータｎは、通信エラーになる確率が低くなるように、（ｎ＜＜ｘ）の関係を満足するできるだけ小さいデータ単位（最小単位）が望ましく、図４の例ではｎ＝１（バイト）とした。
【００４６】
尚、図４の説明では、ボディ側マイコン２０１も１バイトと２５５バイトとに分割して非ＤＭＡによる送受信と、ＤＭＡによる送受信とに分けたが、図６に示すように、ボディ側マイコン２０１は、全てのデータ（図４の例では２５６バイト）をＤＭＡで送受信しても構わない。これは、ＳＣＩ４１１ａとＳＣＩ４１１との間では、非ＤＭＡおよびＤＭＡに依らず、クロックＣＬＫに同期してデータの送受信が行われるので、レンズ側マイコン３０１の処理が十分に速ければ図４と同様の処理を行うことができるからである。図６において、ボディ側マイコン２０１の処理は、レンズ側マイコン３０１からの応答ＡＣＫが”Ｌ”になったら２５６バイトのＤＭＡ転送を開始する。尚、レンズ側マイコン３０１の処理は、図４と同じである。
【００４７】
［タイミング例］
（クロックＣＬＫの数が不足する場合）
図７は、ボディ側マイコン２０１とレンズ側マイコン３０１の間のタイミング例を示す図で、クロックＣＬＫおよび応答ＡＣＫ、カメラ本体１０２側の処理内容、撮影レンズ１０３側の処理内容、タイマ４１２の動作内容をそれぞれ示している。
【００４８】
図７において、タイミングＴ１からタイミングＴ３までの間にデータ（例えばｘバイト）の送受信が行われる。先に、図４で説明したように、タイミングＴ１からタイミングＴ２は非ＤＭＡによるデータの送受信（ＣＰＵによる送受信）が行われ、タイミングＴ２からタイミングＴ３はＤＭＡによるデータの送受信が行われる。図７の場合、タイミングＴ１でカメラ本体１０２と撮影レンズ１０３において、送受信処理が開始される。そして、タイミングＴ２でタイマ４１２はタイマの計時を開始すると共に、ＤＭＡによる通信が開始される。ところが、ＤＭＡ転送中に何らかの要因によりクロックが欠落してクロック数が不足した場合、カメラ本体１０２側では、タイミングＴ３でＳＣＩ４１１ａからＤＭＡ完了割込がＣＰＵコア４０１ａに入り、チェックサムによりエラーが発生したことがわかる。一方、撮影レンズ１０３側では、クロック数の不足によりＤＭＡ完了割込が発生しないのでクロック待ちの状態になって送受信処理が継続されるが、タイミングＴ４でタイマ４１２がタイムアウトする。これにより、ＤＭＡ転送は終了し、応答ＡＣＫを”Ｈ”に戻して、チェックサムによるエラー処理が行われる。そして、受信準備が完了したら、タイミングＴ５で再び応答ＡＣＫを”Ｌ”にして次のＤＭＡに備えることができる。
【００４９】
ボディ側マイコン２０１は、応答ＡＣＫが”Ｌ”になったのを確認して、リトライの通信をタイミングＴ６からタイミングＴ８までの期間に行う。この場合も、タイミングＴ６からタイミングＴ７の期間は非ＤＭＡによるデータの送受信（ＣＰＵによる送受信）が行われ、タイミングＴ７からタイミングＴ８の期間はＤＭＡによるデータの送受信が行われる。そして、クロックＣＬＫの数が不足することなくタイミングＴ８でＤＭＡ転送が終了すると、ＤＭＡ完了割込が発生し、撮影レンズ１０３のレンズ側マイコン３０１はＤＭＡ転送の完了を認識し、タイマ４１２を初期化して停止状態にする。また、カメラ本体１０２および撮影レンズ１０３において、チェックサムでエラーの有無を判別して受信データにエラーがない場合は処理を終了し、エラーがある場合はリトライを行う。
【００５０】
このように、本実施形態に係る電子カメラ１０１は、レンズ側マイコン３０１において、クロック数の不足などでＤＭＡ完了割込が発生しない場合でもタイマ４１２がタイムアウトするので、迅速にリトライすることができ、エラーが次のＤＭＡ転送に波及するのを防止できる。また、ボディ側マイコン２０１とレンズ側マイコン３０１との間で送受信するデータを非ＤＭＡで送受信するデータと、ＤＭＡで送受信するデータとに分割し、非ＤＭＡによるデータの送受信によりＤＭＡの開始を通知するので、従来のようにストローブＳＴＲＯＢＥの信号線を減らすことができる。特に、非ＤＭＡで転送するデータを最小単位にすることにより、通信エラーになる確率をできるだけ低くし、且つＤＭＡの割合を高めることができる。
（タイマ４１２を用いない場合）
ここで、本実施形態に係る電子カメラ１０１のシリアル通信の効果を説明するために、タイマ４１２を用いない場合の通信例について図８を用いて説明する。図８は、先に説明した図７に対応する図で、ボディ側マイコン２０１とレンズ側マイコン３０１の間のタイミングを示す図である。
【００５１】
図８において、図７と同様に、タイミングＴ１からタイミングＴ３までの間に一連のデータ（例えばｘバイト）の送受信が行われるが、ｘバイトのデータは全てＤＭＡにより送受信される。そして、図７の例と同様に、タイミングＴ１とタイミングＴ３の間のＤＭＡ転送中に何らかの要因によりクロックが欠落した場合、カメラ本体１０２側は、ＳＣＩ４１１ａからＤＭＡ完了割込がＣＰＵコア４０１ａに入るので、タイミングＴ３でエラーが発生したことがわかるので、図７の例と同様にリトライ処理を行うことができる。
【００５２】
ところが、撮影レンズ１０３側では、クロック数の不足によりＤＭＡ完了割込が発生しないのでクロック待ちの状態のまま送受信処理が継続され、タイミングＴ６の次のＤＭＡのクロックＣＬＫを不足分のクロックとして捉えるため、タイミングＴ９で最初のＤＭＡ転送に対するＤＭＡ完了割込が発生し、レンズ側マイコン３０１のＤＭＡが終了する。そして、レンズ側マイコン３０１は、応答ＡＣＫを”Ｈ”に戻して、チェックサムによりエラー処理を行うことになる。このため、レンズ側マイコン３０１ではタイミングＴ６からタイミングＴ８までの２回目のＤＭＡによる送受信処理を行われず、カメラ本体１０２側では、タイミングＴ８でＤＭＡ完了割込が発生して受信データのチェックサムでエラーを検出し、再びリトライを行うことになる。そして、タイミングＴ１０からタイミングＴ１１までの３度目のＤＭＡでやっと正常に送受信処理を行うことができる。
【００５３】
このように、タイマ４１２を用いない従来の方法では、２回目のＤＭＡが無駄になってしまい、正常なデータを送受信するのに時間が掛かってしまうという問題が生じる。これに対して、図７で説明した本実施形態に係る電子カメラ１０１では、レンズ側マイコン３０１にタイマ４１２を搭載して、ＤＭＡ開始時にタイマ４１２を起動することによって、クロック数が不足した場合でも次のＤＭＡが開始される前にタイムアウトするので、長時間に亘ってクロック待ちの状態にならず、無駄なＤＭＡ転送を行う問題を回避できる。これにより、カメラ本体１０２と撮影レンズ１０３との間で迅速なデータの送受信を確実に行うことができるので、撮影レンズ１０３のフォーカスレンズや絞りなどを迅速に駆動することが可能になる。
【００５４】
尚、タイマ４１２が計測するタイマ時間は、ＤＭＡ周期（正確には図７のタイミングＴ２からタイミングＴ６）よりも短くなるように予め設定されている。
（クロックＣＬＫの数が過剰になる場合）
図７の例では、何らかの要因によってクロックＣＬＫの数が不足する場合のタイミング例について説明したが、ここではノイズなどによりクロックＣＬＫの数が過剰になる場合のタイミング例について図９を用いて説明する。図９は、図７と同様に、ボディ側マイコン２０１とレンズ側マイコン３０１間のタイミング例を示す図で、クロックＣＬＫおよび応答ＡＣＫ、カメラ本体１０２側の処理内容、撮影レンズ１０３側の処理内容、タイマ４１２の動作内容の各タイミング関係を示している。
【００５５】
図９において、図７と同様に、タイミングＴ１からタイミングＴ３までの間に一連のデータ（例えばｘバイト）の送受信が行われ、タイミングＴ１からタイミングＴ２は非ＤＭＡによるデータの送受信（ＣＰＵによる送受信）が行われ、タイミングＴ２からタイミングＴ３はＤＭＡによるデータの送受信が行われる。図７の例と異なるのは、タイミングＴ２からタイミングＴ３のＤＭＡ転送中にノイズなどによりクロック数が過剰になり、レンズ側マイコン３０１では、タイミングＴ３より前のタイミングＴ４ａでｘバイトの転送に必要なクロック数をカウントしてＤＭＡ完了割込が発生する。そして、レンズ側マイコン３０１は、応答ＡＣＫを”Ｈ”にしてＤＭＡ転送を終了し、タイマ４１２を停止して初期化すると共にエラー処理を行う。ところが、タイミングＴ４ａの時点で実際のＤＭＡは終了していないので、レンズ側マイコン３０１のエラー処理でチェックサムエラーが検出される。一方、ボディ側マイコン２０１では、ｘバイトの転送に必要な数のクロックＣＬＫを出力後のタイミングＴ３でＤＭＡ完了割込が発生してＤＭＡを終了する。ところが、レンズ側マイコン３０１はタイミングＴ４ａでＤＭＡを終了しているので、正常なデータが送受信されず、ボディ側マイコン２０１はチェックサムエラーを検出し、リトライ処理を行う。そして、タイミングＴ５ａでレンズ側マイコン３０１の応答ＡＣＫが”Ｌ”になった後、図７と同様に、タイミングＴ６からタイミングＴ８の期間で２回目のｘバイトのデータの送受信が非ＤＭＡおよびＤＭＡにより行われ、正常に送受信が完了する。
【００５６】
このように、本実施形態に係る電子カメラ１０１は、ノイズなどによりクロックＣＬＫの数が過剰になった場合でも問題なく動作し、次のＤＭＡでリトライを行うことができる。
（レンズ側マイコン３０１のタイミング例）
次に、レンズ側マイコン３０１のタイミング例について図１０を用いて説明する。図１０のタイミング例は、図７および図９のタイミングＴ６からタイミングＴ８の期間に正常に送受信が終了した場合のレンズ側マイコン３０１が行う処理例を示している。尚、非ＤＭＡで送受信するデータは１バイトとする。
【００５７】
図１０において、タイミングＴ６からタイミングＴ７の期間で非ＤＭＡによる１バイトのデータをレンズ側マイコン３０１とボディ側マイコン２０１との間で送受信する（非ＤＭＡ転送処理）。そして、タイミングＴ７で１バイト分のクロックＣＬＫを受信し終えると、ＳＣＩ送受信完了割込がＣＰＵコア４０１に出力され、ＣＰＵコア４０１はＳＣＩ割込処理を実行すると共にタイマ４１２の計時を開始する。ここで、ＳＣＩ割込処理では、タイマ４１２の計時開始、非ＤＭＡ転送の受信データの格納、次のＤＭＡで送受信する転送バイト数（クロックＣＬＫの数）などのＤＭＡ設定を行う。尚、図１０の例では、ｍバイトのデータをＤＭＡ転送する。
【００５８】
そして、レンズ側マイコン３０１は、タイミングＴ２１でボディ側マイコン２０１から出力されるクロックＣＬＫを受け取るとＤＭＡ転送処理を開始する。尚、ＤＭＡ転送処理中においても１バイトの送受信が終了する毎に、例えばタイミングＴ２２，Ｔ２３およびＴ８などでＳＣＩ４１１からＳＣＩ送受信完了割込が出力されるが、ＣＰＵコア４０１へは入力されずＤＭＡコントローラ４０７への割込み信号として入力される。ここで、ＳＣＩ４１１が出力するＳＣＩ送受信完了割込の出力先の切り替えは、例えば割り込みコントローラ４０９により行われ、非ＤＭＡ時はＣＰＵコア４０１にＳＣＩ送受信完了割込を出力し、ＤＭＡ時は割り込みコントローラ４０９にＳＣＩ送受信完了割込を出力する。
【００５９】
図１０において、タイミングＴ８でｍバイトのデータに対応するクロックＣＬＫを受け取ると、ＤＭＡコントローラ４０７はＣＰＵコア４０１に対してＤＭＡ完了割込を出力する。そして、レンズ側マイコン３０１のＣＰＵコア４０１は、ＤＭＡ割込処理を実行し、タイマ４１２を停止して初期化すると共にチェックサムによる受信データの確認を行う。尚、図７で説明したように、クロック数が不足してＤＭＡ完了割込が発生しない場合は、タイミングＴ２４でタイマ４１２によるタイマ割込がＣＰＵコア４０１に出力され、ＣＰＵコア４０１はタイマ割込処理を実行する。タイマ割込処理では応答ＡＣＫを”Ｈ”にしてエラー処理を行い、タイマ４１２を停止して初期化する。
【００６０】
このようにして、本実施形態に係る電子カメラ１０１では、送受信データを非ＤＭＡ転送とＤＭＡ転送とに分割して、非ＤＭＡ転送のデータ送受信によりＤＭＡ転送の開始通知とタイマ４１２の起動を行うことにより、クロック不足などでＤＭＡが終了しない場合でも確実にタイムアウトして次のＤＭＡ転送に波及することを防止できる。
【００６１】
［レンズ側マイコン３０１の処理］
次に、レンズ側マイコン３０１の処理について、図１１のフローチャートを用いて詳しく説明する。尚、図１１の処理は、レンズ側マイコン３０１のＣＰＵコア４０１を中心として実行される。ここではｘバイトのデータをレンズ側マイコン３０１とボディ側マイコン２０１との間で送受信する場合について説明する。
【００６２】
（ステップＳ１０１）ＣＰＵコア４０１は、周辺回路のリセットなど電源投入後の一般的なパラメータ設定を行う。
【００６３】
（ステップＳ１０２）ＣＰＵコア４０１は、ボディ側マイコン２０１との間でシリアル通信を行うために、ＳＣＩ４１１、ＤＭＡコントローラ４０７、タイマ４１２などの初期設定を行う。例えば、ＳＣＩ４１１の応答ＡＣＫを”Ｈ”、ＳＣＩ送受信完了割込の信号を”Ｌ（割込み無しの状態）”にリセットする。同様に、ＤＭＡコントローラ４０７のＤＭＡ完了割込の信号を”Ｌ（割込み無しの状態）”にリセットする。また、タイマ４１２のタイマ割込の信号も”Ｌ（割込み無しの状態）”にリセットし、タイマの初期値を設定する。ここで、タイマの初期値は、先に説明したように、ＤＭＡ周期より短い時間に設定される。
【００６４】
（ステップＳ１０３）ＣＰＵコア４０１は、ＳＣＩ４１１に対してｎバイトのデータの送受信設定を行う。ここで、非ＤＭＡにより送受信されるｎバイトのデータはＳＣＩ４１１で送受信可能な最小データ単位とするのが望ましく、先の例ではｎ＝１バイトとする。最小データ単位が２バイトや４バイトの場合は、ｎ＝２バイトまたはｎ＝４バイトとする。
【００６５】
（ステップＳ１０４）ＣＰＵコア４０１は、ＳＣＩ４１１の応答ＡＣＫを”Ｌ”にして、ボディ側マイコン２０１に通信可能な状態になったことを通知する。
【００６６】
（ステップＳ１０５）ＣＰＵコア４０１は、ｎバイトのデータの送受信が完了するまで待つ。尚、図１１では、ステップＳ１０５でループ状態になっているが、実際にはｎバイトのデータの送受信完了時にＳＣＩ４１１からＣＰＵコア４０１に対してＳＣＩ送受信完了割込が出力されるので、ＣＰＵコア４０１は別の処理を行うことができる。
【００６７】
（ステップＳ１０６）ＣＰＵコア４０１は、データ送受信が完了したｎバイトの受信データをＳＣＩ４１１の受信バッファから収納する。
【００６８】
（ステップＳ１０７）ＣＰＵコア４０１は、タイマ４１２の計時を開始する。
【００６９】
（ステップＳ１０８）ＣＰＵコア４０１は、ＤＭＡコントローラ４０７にＤＭＡで送受信するデータのバイト数を設定し、ＤＭＡコントローラ４０７はＤＭＡによる送受信を開始する。ここでは、ｘバイトのデータを送受信するので、先に非ＤＭＡで送受信したｎバイトのデータを除いた（ｘ−ｎ）バイトのデータがＤＭＡにより送受信される。
【００７０】
（ステップＳ１０９）ＣＰＵコア４０１は、ＤＭＡ伝送完了の通知を待つ。尚、実際には、ＤＭＡコントローラ４０７からのＤＭＡ完了割込を待つことになるので、ＣＰＵコア４０１は別の処理を行うことができる。そして、ＤＭＡ完了割込がない場合はステップＳ１１０に進み、ＤＭＡ完了割込があった場合はステップＳ１１１に進む。
【００７１】
（ステップＳ１１０）ＣＰＵコア４０１は、タイマ４１２がタイムアウトしたか否かを判別する。尚、実際には、タイマ４１２からのタイマ割込を待つことになるので、ＣＰＵコア４０１は別の処理を行うことができる。そして、タイマ４１２がタイムアウトしていない場合はステップＳ１０９に戻ってＤＭＡ完了割込とタイマ割込を待つ処理を継続し、タイムアウトした場合はステップＳ１１４に進む。尚、タイムアウトの確認は処理負荷が小さいのでタイマ４１２の割込み処理とせずにＣＰＵコア４０１が定期的にタイマ４１２の計時状態を確認するようにしてもよい。
【００７２】
（ステップＳ１１１）ＤＭＡ完了割込を受けてＤＭＡが完了した場合、ＣＰＵコア４０１は、タイマ４１２の計時動作を停止する。
【００７３】
（ステップＳ１１２）ＣＰＵコア４０１は、ＳＣＩ４１１の受信バッファに取り込まれた受信データのチェックサムが正しいか否かを判定する。
【００７４】
（ステップＳ１１３）ＣＰＵコア４０１は、ステップＳ１１２で行ったチェックサム判定がエラーの場合はステップＳ１１４に進み、エラーがなく正常に受信できた場合はステップＳ１１５に進む。
【００７５】
（ステップＳ１１４）ＣＰＵコア４０１は、ＳＣＩ４１１の応答ＡＣＫを”Ｈ（通信不可）”にしてステップＳ１０２に戻り、同様の受信処理を繰り返す。
【００７６】
（ステップＳ１１５）ＣＰＵコア４０１は、受信データ解析を行う。例えば、ボディ側マイコン２０１から受けたコマンド内容（レンズ駆動や絞り駆動など）の解析を行う。
【００７７】
（ステップＳ１１６）ＣＰＵコア４０１は、ステップＳ１１５で受けたコマンドがデータ転送数ｘの変更を指示するコマンドである場合、ステップＳ１１８に進み、変更しない場合はステップＳ１１９に進む。
【００７８】
（ステップＳ１１７）ＣＰＵコア４０１は、ステップＳ１１５で受けたデータ転送数ｘの変更を指示するコマンドで指定されたデータ転送数に変更する。
【００７９】
（ステップＳ１１８）ＣＰＵコア４０１は、ステップＳ１１７で変更したデータ転送数に対するタイムアウト時間を設定する。例えばＤＭＡで送受信するデータ転送数（（ｘ−ｎ）バイト）が１／２になればタイマ４１２に設定するタイムアウト時間を１／２にし、２倍になればタイマ４１２に設定するタイムアウト時間を２倍に設定する。尚、実際には、準備時間などを考慮して多少のマージンを含めた時間が設定される。但し、タイマ時間はＤＭＡ転送周期より短い時間に設定される。
【００８０】
（ステップＳ１１９）ＣＰＵコア４０１は、ステップＳ１１５で受けたコマンドがレンズ側マイコン３０１のＣＰＵコア４０１の動作クロックの変更を指示するコマンドである場合、ステップＳ１２０に進み、変更しない場合はステップＳ１２１に進む。
【００８１】
（ステップＳ１２０）ＣＰＵコア４０１は、ステップＳ１１５で受けたＣＰＵコア４０１の動作クロックの変更を指示するコマンドで指定された周波数に動作クロックを変更する。
【００８２】
（ステップＳ１２１）ＣＰＵコア４０１は、一連のシリアル通信を終了するか否かを判別し、終了しない場合はステップＳ１０２に戻って同様の処理を繰り返す。尚、シリアル通信はボディ側マイコン２０１をマスター側として主導し、レンズ側マイコン３０１は応答ＡＣＫを”Ｌ”にしてクロックＣＬＫを待つだけでよいので、撮影レンズ１０３がカメラ本体１０２に装着された状態にある場合は、常にステップＳ１０２に戻るようにしてもよい。
【００８３】
［ボディ側マイコン２０１の処理］
次に、ボディ側マイコン２０１の処理について、図１２のフローチャートを用いて詳しく説明する。尚、図１２の処理は、ボディ側マイコン２０１のＣＰＵコア４０１ａを中心として実行される。ここではｘバイトのデータをレンズ側マイコン３０１とボディ側マイコン２０１との間で送受信する場合について説明する。
【００８４】
（ステップＳ２０１）ＣＰＵコア４０１ａは、周辺回路のリセットなど電源投入後の一般的なパラメータ設定を行う。
【００８５】
（ステップＳ２０２）ＣＰＵコア４０１ａは、次のステップＳ２０３と併せて、撮影者の操作部２０２の操作に応じて、レンズ側マイコン３０１との間で送受信するデータの種類を判別する。例えば操作部２０２のシャッターボタンが半押しされた場合は、別途、測距演算２５１で求めたフォーカスレンズ位置に撮影レンズ１０３のフォーカスレンズを移動するための動作指示コマンドをレンズ側マイコン３０１に送信する必要がある。同様に、測光演算２５２で求めた絞り値になるように撮影レンズ１０３の絞りを制御するための動作指示コマンドをレンズ側マイコン３０１に送信する必要がある。或いは、レンズ側マイコン３０１から光学情報（レンズ特性やレンズ位置などの情報）を取得する場合にはデータ系コマンドをレンズ側マイコン３０１に送信する必要がある。本ステップＳ２０２では、動作指示コマンドの要求が有ったか否かを判別し、動作指示コマンドの要求が有った場合はステップＳ２０４に進み、動作指示コマンドの要求が無い場合はステップＳ２０３に進む。
【００８６】
（ステップＳ２０３）ＣＰＵコア４０１ａは、前のステップＳ２０２と併せて、レンズ側マイコン３０１との間で送受信するデータの種類を判別する。本ステップＳ２０３では、データ系コマンドの要求が有ったか否かを判別し、データ系コマンドの要求が有った場合はステップＳ２０６に進み、データ系コマンドの要求が無い場合はステップＳ２０２に戻り、コマンド待ちのループ処理が行われる。
【００８７】
（ステップＳ２０４）ＣＰＵコア４０１ａは、動作指示コマンドに対応する動作指示データを設定する。例えばフォーカスレンズの位置指定などの動作指示データが設定される。
【００８８】
（ステップＳ２０５）ＣＰＵコア４０１ａは、ステップＳ２０４で設定された動作指示データのバイト数を送受信バイト数として設定する。例えば、動作指示データのバイト数がｃｍｄ＿ｘの場合は、送受信バイト数ｘ＝ｃｍｄ＿ｘが設定される。
【００８９】
（ステップＳ２０６）ＣＰＵコア４０１ａは、データ系コマンドに対応する情報データを設定する。例えば光学情報などのデータが設定される。
【００９０】
（ステップＳ２０７）ＣＰＵコア４０１ａは、ステップＳ２０６で設定された情報データのバイト数を送受信バイト数として設定する。例えば、情報データのバイト数がｄａｔ＿ｘの場合は、送受信バイト数ｘ＝ｄａｔ＿ｘが設定される。
【００９１】
（ステップＳ２０８）ＣＰＵコア４０１ａは、レンズ側マイコン３０１が出力する応答ＡＣＫが”Ｌ（通信可能）”であるか否かを判別し、応答ＡＣＫが”Ｌ”になるまで待機する。そして、応答ＡＣＫが”Ｌ”になったら次のステップに進む。
【００９２】
（ステップＳ２０９）ＣＰＵコア４０１ａは、予め設定されたｎバイトのデータの非ＤＭＡでの送受信を開始する。具体的には、ＣＰＵコア４０１ａはＳＣＩ４１１ａの送信バッファに送信データを格納して送信データ数に対応するクロックＣＬＫの出力を開始する。
【００９３】
（ステップＳ２１０）ＣＰＵコア４０１ａは、ｎバイトのデータの非ＤＭＡでの送受信が完了するまで待つ。尚、実際には、ＣＰＵコア４０１ａはＳＣＩ４１１ａからのＳＣＩ送受信完了割込を待つことになるので、ＣＰＵコア４０１ａは別の処理を行うことができる。そして、ＳＣＩ送受信完了割込があった場合はステップＳ２１１に進む。
【００９４】
（ステップＳ２１１）ＣＰＵコア４０１ａは、予め設定されたウェイト時間Ｔだけ次の処理へ進むのを待つ。尚、ウェイト時間Ｔが長い場合は、タイマ４１２の計測時間をウェイト時間Ｔに設定してタイマ割込を利用することで、ＣＰＵコア４０１ａは別の処理を行うことができる。この場合は、タイマ４１２によるタイマ割込がＤＭＡ転送時のタイマ割り込みであるのかウェイト時間のタイマ割り込みであるのかを示すフラグなどを設ける必要がある。
【００９５】
（ステップＳ２１２）ＣＰＵコア４０１ａは、予め設定された（ｘ−ｎ）バイトのデータに対してＤＭＡでの送受信を開始する。具体的には、ＣＰＵコア４０１ａはＤＭＡコントローラ４０７ａに対してＤＭＡ開始を指示し、以降、ＤＭＡコントローラ４０７ａはＣＰＵコア４０１ａを介さずにＳＣＩ４１１ａとの間で（ｘ−ｎ）バイトのデータの送受信を実行する。例えばＤＭＡコントローラ４０７ａはＳＣＩ４１１ａの送信バッファに（ｘ−ｎ）バイトの送信データを順次格納して送信データ数に対応するクロックＣＬＫの出力を開始する。
【００９６】
（ステップＳ２１３）ＣＰＵコア４０１ａは、（ｘ−ｎ）バイトのデータに対するＤＭＡの送受信が完了するまで待つ。尚、実際には、ＣＰＵコア４０１ａはＤＭＡコントローラ４０７ａからのＤＭＡ完了割込を待つことになるので、ＣＰＵコア４０１ａは別の処理を行うことができる。そして、ＤＭＡ完了割込があった場合はステップＳ２１４に進む。
【００９７】
（ステップＳ２１４）ＣＰＵコア４０１ａは、ＤＭＡの受信データのチェックサムが正しいか否かを判定し、チェックサム判定がエラーの場合はステップＳ２０８に戻ってリトライを行い、エラーがなく正常に受信できた場合はステップＳ２１５に進む。
【００９８】
（ステップＳ２１５）ＣＰＵコア４０１ａは、応答ＡＣＫが”Ｌ”であるか否かを判別し、応答ＡＣＫが”Ｌ”の場合はステップＳ２１６に進み、応答ＡＣＫが”Ｈ”の場合はステップＳ２０８に戻ってリトライを行う。この処理は、例えば図７のタイミングＴ４からタイミングＴ５の処理で説明したように、レンズ側マイコン３０１でエラー処理を行っている期間、応答ＡＣＫが”Ｈ”に維持されるので、ボディ側マイコン２０１のＣＰＵコア４０１ａは、レンズ側マイコン３０１で受信エラーが発生したと判断し、リトライを実行する。
【００９９】
（ステップＳ２１６）ＣＰＵコア４０１ａは、正常に送受信できた場合、非ＤＭＡおよびＤＭＡによるｘバイトのデータの一連の送受信を終了する。
【０１００】
（ステップＳ２１７）ＣＰＵコア４０１ａは、レンズ側マイコン３０１のＣＰＵ動作モードの変更を行うか否かを判別する。例えば、撮影者が電子カメラ１０１の動作モードを例えば省エネルギーモードに設定した場合にレンズ側マイコン３０１のＣＰＵ動作周波数を低くするような設計が為されている場合、ボディ側マイコン２０１は、レンズ側マイコン３０１のＣＰＵ動作モードを変更する。そして、ＣＰＵ動作モードを変更する場合はステップＳ２１８に進み、変更しない場合はステップ２１９に進む。
【０１０１】
（ステップＳ２１８）ＣＰＵコア４０１ａは、ステップＳ２１２でウェイトする時間Ｔを変更する。例えば、レンズ側マイコン３０１のＣＰＵコア４０１の動作周波数を低くする場合は、ウェイト時間Ｔを長い時間Ｔ１に設定し、ＣＰＵコア４０１の動作周波数を高くする場合は、ウェイト時間Ｔを短い時間Ｔ２に設定する。ここで、時間Ｔ１と時間Ｔ２はＴ１＜Ｔ２の相対的な関係にある。ここで、ウェイト時間Ｔを設けるのは、図１１で説明したレンズ側マイコン３０１の処理において、非ＤＭＡの送受信処理からＤＭＡの送受信処理に移行するまでの処理時間を確保するためである。図１１の例では、ステップＳ１０６からステップＳ１０８までの処理時間を確保できるウェイト時間Ｔが設定される。尚、ウェイト時間Ｔとレンズ側マイコン３０１のＣＰＵコア４０１の動作周波数の対応は設計時に予め求められ、製造時に内蔵ＲＯＭ４０２ａに格納されている。
【０１０２】
（ステップＳ２１９）ＣＰＵコア４０１ａは、一連のシリアル通信を終了するか否かを判別し、終了しない場合はステップＳ２０２に戻って同様の処理を繰り返す。尚、定期的にシリアル通信を行う場合は、本処理ステップは定期的な時間になったか否かを判別する割込み処理としてもよく、この場合はシリアル通信を行う時間になったら割り込みが発生してステップＳ２０２に戻る処理を行う。
【０１０３】
以上、説明してきたように、本実施形態に係る電子カメラ１０１は、レンズ側マイコン３０１において、ＤＭＡ完了割込が発生しない場合でもタイマ４１２がタイムアウトするので、迅速にリトライすることができ、エラーが次のＤＭＡ転送に波及するのを防止できる。また、ボディ側マイコン２０１とレンズ側マイコン３０１との間で送受信するデータを非ＤＭＡで送受信するデータと、ＤＭＡで送受信するデータとに分割して送受信するようにし、非ＤＭＡによるデータの送受信によりＤＭＡの開始を通知するので、従来のようにストローブＳＴＲＯＢＥの信号線を減らすことができる。特に、非ＤＭＡで転送するデータを最小単位にすることにより、通信エラーになる確率をできるだけ低くし、且つＤＭＡの割合を高めることができる。
【０１０４】
尚、本発明に係るシリアル通信装置は、本実施形態に係る電子カメラ１０１において、ボディ側マイコン２０１とレンズ側マイコン３０１とで構成されるシリアル通信機能に対応する。
【０１０５】
［変形例］
次に、先に説明した電子カメラ１０１におけるシリアル通信の変形例について図１３を用いて説明する。図１３は、図１０に対応する図で、図１０と同符号の各タイミング同じである。図１３において、タイマ４１２を起動するタイミングが図１０とは異なる。図１０の例では、非ＤＭＡの送受信が完了したタイミングＴ７でタイマ４１２の計時を開始していたが、図１３の例では、非ＤＭＡの送受信を開始するタイミングＴ６でタイマ４１２の計時を開始する。ここで、ＳＣＩ４１１は、ＣＰＵコア４０１からデータが書き込まれる送信バッファと、クロックＣＬＫに同期して順番にデータを１ビットずつ送り出す送信シフトレジスタとで構成され、クロックＣＬＫの最初のタイミングで送信バッファから送信シフトレジスタにデータが移された時にＳＣＩ４１１からＣＰＵコア４０１に対してＳＣＩ送信エンプティ割込が出力される構成になっている。そこで、ＣＰＵコア４０１はタイミングＴ６でＳＣＩ送信エンプティ割込処理を実行し、タイマ４１２の計時を開始する。また、図１３の例では図１０でタイミングＴ７で行っていたＤＭＡの設定をＤＭＡ送信設定とＤＭＡ受信設定とに分散し、ＳＣＩ送信エンプティ割込処理でＤＭＡ送信設定を行い、ＳＣＩ送受信完了割込処理でＤＭＡ受信設定を行うようにしているが、図１０と同様にＳＣＩ送受信完了割込処理で送受信のＤＭＡ設定を行うようにしてもよい。尚、その他の動作については図１０と同じなので重複する説明は省略する。
【０１０６】
以上、本発明に係るシリアル通信装置および電子カメラについて、各実施形態で例を挙げて説明してきたが、その精神またはその主要な特徴から逸脱することなく他の多様な形で実施することができる。そのため、上述した実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明は、特許請求の範囲によって示されるものであって、本発明は明細書本文にはなんら拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内である。
【符号の説明】
【０１０７】
１０１・・・電子カメラ；１０２・・・カメラ本体；１０３・・・撮影レンズ；２０１・・・ボディ側マイコン；２０２・・・操作部；２０３・・・表示部；２０４・・・記憶部；３０１・・・レンズ側マイコン；３０２・・・手振れ補正レンズ駆動部；３０３・・・フォーカスレンズ駆動部；３０４・・・ズームレンズ駆動部；３０５・・・絞り駆動部；２０５・・・撮影部；１０１・・・電子カメラ；４０１，４０１ａ・・・ＣＰＵコア；４０２，４０２ａ・・・内蔵ＲＯＭ；４０３・・・内蔵ＲＡＭ；４０４・・・ＣＰＵバス；４０５・・・内部バス；４０６，４０６ａ・・・周辺バスコントローラ；４０７，４０７ａ・・・ＤＭＡコントローラ；４０８・・・周辺バス；４０９・・・割り込みコントローラ；４１０・・・Ｉ／Ｏポート；４１１，４１１ａ・・・ＳＣＩ；４１２・・・タイマ；ＣＬＫ・・・クロック；ＯＵＴ・・・データ出力Ｄ；ＤＩＮ・・・データ入力；ＡＣＫ・・・応答
【図１】
2013172403.tif 000003
【図２】
2013172403.tif 000004
【図３】
2013172403.tif 000005
【図４】
2013172403.tif 000006
【図５】
2013172403.tif 000007
【図６】
2013172403.tif 000008
【図７】
2013172403.tif 000009
【図８】
2013172403.tif 000010
【図９】
2013172403.tif 000011
【図１０】
2013172403.tif 000012
【図１１】
2013172403.tif 000013
【図１２】
2013172403.tif 000014
【図１３】
2013172403.tif 000015