(57)【要約】【課題】マイクロコンピュータに通信インターフェイスLSIを付加することなく、マイクロコンピュータと半導体メモリカードとの間の高速のシリアル通信を可能にする。【解決手段】マイクロコンピュータ１０は、同期式シリアル通信インターフェース２０と汎用入出力ポート２２とを備えている。マイクロコンピュータ１０と半導体メモリカード１２とは、クロック線１４及びデータ線１６を介して接続されている。同期式シリアル通信インターフェース２０のクロック入出力端子２４からのクロック出力と、汎用入出力ポート２２の端子２８からのクロック出力との間で、クロック出力元を切り替えるようにした。【選択図】図１
2005352658.tif 000002
【特許請求の範囲】
【請求項１】
中央処理部（ＣＰＵ）と、クロック入出力端子及びデータ入出力端子を有し前記ＣＰＵによってトリガされハードウェアフロー制御により所定ビット数を単位として高速シリアル通信を行う同期式シリアル通信インターフェースと、複数の端子を有し前記ＣＰＵによって１ビットずつの入出力制御が可能な汎用入出力ポートとを備えたマイクロコンピュータと、クロック入力端子及びシリアルデータ入出力端子を有する半導体メモリカードとの間の、シリアル通信方式によるデータ通信を制御するためのシリアル通信制御方法において、
前記マイクロコンピュータと前記半導体メモリカードとを接続するためのクロック線及びデータ線を用意し、
前記同期式シリアル通信インターフェースの前記クロック入出力端子を前記クロック線に接続し、前記同期式シリアル通信インターフェースの前記データ入出力端子を前記データ線に接続し、
前記汎用入出力ポートの前記複数の端子のうちの第１端子を前記クロック線に接続し、
前記半導体メモリカードの前記クロック入力端子を前記クロック線に接続し、前記半導体メモリカードの前記シリアルデータ入出力端子を前記データ線に接続し、
前記ＣＰＵが実行するコンピュータプログラムにより構成される通信切り替え手段が、前記同期式シリアル通信インターフェースの前記クロック入出力端子からのクロック出力と、前記汎用入出力ポートの前記第１端子からのクロック出力との間で、クロック出力元切り替えを行うようにする、
ことを特徴とするシリアル通信制御方法。
【請求項２】
前記クロック線をプルアップまたはプルダウンしておき、
前記通信切り替え手段が、前記クロック出力元切り替えに際して、前記同期式シリアル通信インターフェースの前記クロック入出力端子からのクロック出力と、前記汎用入出力ポートの前記第１端子からのクロック出力とが同時に有効状態にならぬようにし、それら２つのクロック出力が共に無効状態にあるときには、前記クロック線がプルアップまたはプルダウンされた状態にあるようにする、
ことを特徴とする請求項１記載のシリアル通信制御方法。
【請求項３】
前記汎用入出力ポートの前記複数の端子のうちの第２端子を前記データ線に接続し、
前記通信切り替え手段が、前記クロック元出力切り替えに際して、前記同期式シリアル通信インターフェースの前記データ入出力端子と、前記汎用入出力ポートの前記第２端子との間で、前記半導体メモリカードとの間のデータ転送に使用する端子を切り替える、データ端子切り替えを行うようにする、
ことを特徴とする請求項１記載のシリアル通信制御方法。
【請求項４】
前記データ線をプルアップまたはプルダウンしておき、
前記通信切り替え手段が、前記データ端子切り替えに際して、前記同期式シリアル通信インターフェースの前記データ入出力端子からのデータビット出力と、前記汎用入出力ポートの前記第２端子からのデータビット出力とが同時に有効状態にならぬようにし、それら２つのデータビット出力が共に無効状態にあるときには、前記データ線がプルアップまたはプルダウンされた状態にあるようにする、
ことを特徴とする請求項３記載のシリアル通信制御方法。
【請求項５】
連続する複数のデータビットから成る１つの通信メッセージを前記マイクロコンピュータと前記半導体メモリカードとの間で通信しているときに、前記通信切り替え手段が前記クロック出力元切り替え及び前記データ端子切り替えを行うことで、前記同期式シリアル通信インターフェースの前記クロック入出力端子から前記クロック線上へ出力される前記所定ビット数を単位とするクロック出力により制御される前記所定ビット数を単位とするデータ転送と、前記汎用入出力ポートの前記第１端子から前記クロック線上へ出力されるクロック出力により制御されるデータ転送との間で、データ転送切り替えを行うようにすることを特徴とする請求項３記載のシリアル通信制御方法。
【請求項６】
前記半導体メモリカードが制御端子を有し、
前記マイクロコンピュータと前記半導体メモリカードとを接続するための制御線を用意し、
前記汎用入出力ポートの前記複数の端子のうちの第２端子を前記制御線に接続し、
前記半導体メモリカードの前記制御端子を前記制御線に接続し、
前記通信切り替え手段が、前記汎用入出力ポートの前記第２端子から前記制御線上へ出力された制御出力を前記半導体メモリカードに読み取らせるときには前記汎用入出力ポートの前記第１端子からクロック出力を送出させ、前記同期式シリアル通信インターフェースの前記データ入出力端子と前記半導体メモリカードの前記データ入出力端子との間のデータ転送を行わせるときには前記同期式シリアル通信インターフェースの前記クロック入出力端子からクロック出力を送出させるようにする、
ことを特徴とする請求項１記載のシリアル通信制御方法。
【請求項７】
前記半導体メモリカードの通信プロトコルが、前記制御端子を介して受信する制御出力と、前記データ入出力端子を介して受信する連続する複数のデータビットとの組合せによって構成されるコマンドを使用しており、
前記通信切り替え手段が、前記クロック出力切り替えを行うことで、前記コマンドを前記半導体メモリカードに読み取らせる、
ことを特徴とする請求項６記載のシリアル通信制御方法。
【請求項８】
前記マイクロコンピュータは、オーディオプレーヤに装備されており、
前記半導体メモリカードには、オーディオデータが格納されている、
前記マイクロコンピュータは、前記半導体メモリカードから読み出した前記オーディオデータに処理を施して音響を再生する、
ことを特徴とする請求項１記載のシリアル通信制御方法。
【請求項９】
中央処理部（ＣＰＵ）と、クロック入出力端子及びデータ入出力端子を有し前記ＣＰＵによってトリガされハードウェアフロー制御により所定ビット数を単位として高速シリアル通信を行う同期式シリアル通信インターフェースと、複数の端子を有し前記ＣＰＵによって１ビットずつの入出力制御が可能な汎用入出力ポートとを備えたマイクロコンピュータと、クロック入力端子及びシリアルデータ入出力端子を有する半導体メモリカードとの間の、シリアル通信方式によるデータ通信を制御するためのシリアル通信制御方法において、
前記マイクロコンピュータと前記半導体メモリカードとを接続するためのクロック線及びデータ線を用意し、
前記同期式シリアル通信インターフェースの前記クロック入出力端子を前記クロック線に接続し、前記同期式シリアル通信インターフェースの前記データ入出力端子を前記データ線に接続し、
前記汎用入出力ポートの前記複数の端子のうちの第１端子を前記クロック線に接続し、前記汎用入出力ポートの前記複数の端子のうちの第２端子を前記データ線に接続し、
前記半導体メモリカードの前記クロック入力端子を前記クロック線に接続し、前記半導体メモリカードの前記シリアルデータ入出力端子を前記データ線に接続し、
前記ＣＰＵが実行するコンピュータプログラムにより構成される通信切り替え手段が、前記マイクロコンピュータと前記半導体メモリカードとの間で１つの通信メッセージを通信しているときに、前記同期式シリアル通信インターフェースによる前記所定ビット数を単位としたデータ転送と、前記汎用入出力ポートによるデータ転送との間で切り替えを行い、それによって、前記同期式シリアル通信インターフェースを介して転送される前記所定ビット数の整数倍のビット数から成るデータビット列と、前記汎用入出力ポートを介して転送されるデータビット列または単一データビットとで、その１つの通信メッセージが構成されるようにする、
ことを特徴とするシリアル通信制御方法。
【請求項１０】
前記クロック線をプルアップまたはプルダウンしておき、
前記通信切り替え手段が、前記切り替えに際して、前記同期式シリアル通信インターフェースの前記クロック入出力端子からのクロック出力と、前記汎用入出力ポートの前記第１端子からのクロック出力とが同時に有効状態にならぬようにし、それら２つのクロック出力が共に無効状態にあるときには、前記クロック線がプルアップまたはプルダウンされた状態にあるようにする、
ことを特徴とする請求項９記載のシリアル通信制御方法。
【請求項１１】
前記データ線をプルアップまたはプルダウンしておき、
前記通信切り替え手段が、前記切り替えに際して、前記同期式シリアル通信インターフェースの前記データ入出力端子からのデータビット出力と、前記汎用入出力ポートの前記第２端子からのデータビット出力とが同時に有効状態にならぬようにし、それら２つのデータビット出力が共に無効状態にあるときには、前記データ線がプルアップまたはプルダウンされた状態にあるようにする、
ことを特徴とする請求項９記載のシリアル通信制御方法。
【請求項１２】
前記マイクロコンピュータは、オーディオプレーヤに装備されており、
前記半導体メモリカードには、オーディオデータが格納されている、
前記マイクロコンピュータは、前記半導体メモリカードから読み出した前記オーディオデータに処理を施して音響を再生する、
ことを特徴とする請求項９記載のシリアル通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータと半導体メモリカードとの間のシリアル通信制御方法に関する。
【背景技術】
【０００２】
半導体メモリカードは、様々な種類のものが製品化されているが、それぞれが独自の通信方式を採用しているため、データ通信プロトコルは製品によってまちまちであり、標準化されていない。そのためマイクロコンピュータには、多くの場合、半導体メモリカードとの間でデータ転送を行うための専用の通信インターフェイスは内蔵されておらず、マイクロコンピュータに専用の通信インターフェイスLSIを外付けし、その通信インターフェースLSIを介して半導体メモリカードをマイクロコンピュータに接続するようにしている。
半導体メモリカードとの間でデータ転送を行うための専用の通信インターフェイスを内蔵したマイクロコンピュータは一般に高価であり、また、専用の通信インターフェースLSIを外付けする場合にもその分のコストが必要になるので、コスト制限の厳しい機器で半導体メモリカードに対応するのは、現状非常に困難となっている。
マイクロコンピュータと半導体メモリカードとの間のデータ転送に使用することのできるシリアル通信インターフェースを開示した文献としては、例えば特開平7-129484号公報などがある。
【特許文献１】特開平7-129484号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は上記問題を解決すべく成されたものであり、本発明の目的は、既存の多くの汎用マイクロコンピュータに装備されている機能のみを用いて、専用の通信インターフェイスLSIを付加することなく、マイクロコンピュータと半導体メモリカードとの間の高速のシリアル通信を可能にすることにある。
【課題を解決するための手段】
【０００４】
上記目的を達成するため本発明に係るシリアル通信制御方法は、中央処理部（ＣＰＵ）と、クロック入出力端子及びデータ入出力端子を有し前記ＣＰＵによってトリガされハードウェアフロー制御により所定ビット数を単位として高速シリアル通信を行う同期式シリアル通信インターフェースと、複数の端子を有し前記ＣＰＵによって１ビットずつの入出力制御が可能な汎用入出力ポートとを備えたマイクロコンピュータと、クロック入力端子及びシリアルデータ入出力端子を有する半導体メモリカードとの間の、シリアル通信方式によるデータ通信を制御するためのシリアル通信制御方法において、前記マイクロコンピュータと前記半導体メモリカードとを接続するためのクロック線及びデータ線を用意し、前記同期式シリアル通信インターフェースの前記クロック入出力端子を前記クロック線に接続し、前記同期式シリアル通信インターフェースの前記データ入出力端子を前記データ線に接続し、前記汎用入出力ポートの前記複数の端子のうちの第１端子を前記クロック線に接続し、前記半導体メモリカードの前記クロック入力端子を前記クロック線に接続し、前記半導体メモリカードの前記シリアルデータ入出力端子を前記データ線に接続し、前記ＣＰＵが実行するコンピュータプログラムにより構成される通信切り替え手段が、前記同期式シリアル通信インターフェースの前記クロック入出力端子からのクロック出力と、前記汎用入出力ポートの前記第１端子からのクロック出力との間で、クロック出力元切り替えを行うようにすることを特徴とする。
【発明の効果】
【０００５】
本発明によれば、既存の多くのマイクロコンピュータに内蔵されている、同期式シリアル通信インターフェースと汎用入出力ポートとを用いて、クロック出力元を切り替えることによって、マイクロコンピュータと半導体メモリカードとの間のシリアル通信を行うため、専用の通信インターフェイスLSIを付加する必要がなく、しかも、そのシリアル通信を高速で行うことができる。
【発明を実施するための最良の形態】
【０００６】
以下に本発明の実施の形態について図面を参照して説明する。図１は本発明に係るシリアル通信制御方法を用いてシリアル通信を行うマイクロコンピュータと半導体メモリカードとを接続する接続形態の第１の具体例を示した模式図であり、図２は同じく第２の具体例を示した模式図である。マイクロコンピュータ１０は、半導体メモリカード１２を利用する電子機器（例えば携帯用オーディオプレーヤなど）１１に装備されている、この電子機器１１の構成要素である。半導体メモリカード１２には、マイクロコンピュータ１０によって読み出し及び／または書き込みが行われるデータ（例えばオーディオデータなど）が格納されている。電子機器１１がオーディオプレーヤで、半導体メモリカード１２にオーディオデータが格納されている場合には、マイクロコンピュータ１０は、その半導体メモリカード１２から読み出したオーディオデータに処理を施して音響を再生する。半導体メモリカード１２は、電子機器１１に対して取り外し可能に接続され、そのために電子機器１１には、半導体メモリカード１２を挿入するコネクタ１３が装備されている。本発明においては、先ず、マイクロコンピュータ１０と半導体メモリカード１２とを接続するためのクロック線１４及びデータ線１６を用意し、図１及び図２の具体例では、それらクロック線１４及びデータ線１６に、マイクロコンピュータ１０とコネクタ１３とを接続している。
【０００７】
マイクロコンピュータ１０は、中央処理部（ＣＰＵ）１８を備えており、また、このＣＰＵ１８によって制御される、同期式シリアル通信インターフェース２０及び汎用入出力ポート２２を備えている。同期式シリアル通信インターフェース２０は、ＣＰＵ１８によってトリガされハードウェアフロー制御により所定ビット数を単位として高速シリアル通信を行う通信インターフェースである。現在使用されている多くのマイクロコンピュータには標準的な同期式シリアル通信インターフェースが内蔵されており、それは主として、マイクロコンピュータが、ＥＥＰＲＯＭ（電気的に消去可能なプログラマブルＲＯＭ）やＡＤＣ（アナログ・デジタル・コンバータ）などの、外付けデバイスとの間で高速シリアル通信を行うために使用されている。本発明は、そのような標準的な同期式シリアル通信インターフェースを用いて実施し得るものである。また、その通信単位である所定ビット数は、８ビットまたは１６ビットとされていることが多いが、本発明を実施する上では、所定ビット数がいくつでもあっても構わない。汎用入出力ポート２２は、ＣＰＵ１８がコンピュータプログラムに従って制御することにより、１ビットずつの入出力制御を行うことのできるポートであり、既存のマイクロコンピュータの略々全てに装備されているものである。
【０００８】
図１に示した第１の具体例では、同期式シリアル通信インターフェース２０が、クロック入出力端子２４及びデータ入出力端子２６を備えており、クロック入出力端子２４をクロック線１４に接続し、データ入出力端子２６をデータ線１６に接続してある。データ入出力端子２６は、信号の入出力方向を動的に制御することのできるものである。図２に示した第２の具体例では、同期式シリアル通信インターフェース２０が、クロック入出力端子２４、データ入力端子２６ａ、及びデータ出力端子２６ｂを備えており、クロック入出力端子２４をクロック線１４に接続し、データ入出力端子２６ａ、２６ｂを共にデータ線１６に接続してある。第１の具体例と第２の具体例とでは、同期式シリアル通信インターフェース２０のデータ入出力端子が、共通端子か、個別端子かということが異なるだけであり、図２の具体例でデータ入出力端子２６ａ、２６ｂを共にデータ線１６に接続することによって、マイクロコンピュータ１０と半導体メモリカード１２との間のデータ通信の機能に関して、図１の具体例と図２の具体例とが実質的に同一のものとなっている。そこで、以下の説明では、図１の第１の具体例に則して説明することにする。
【０００９】
汎用入出力ポートは２２は多数の入出力端子を含むものであるが、本発明に係るシリアル通信制御方法と直截的な関係を持たない端子は図示せず、その説明も省略する。汎用入出力ポート２２は第１端子２８及び第２端子３０を含んでおり、第１端子２８をクロック線１４に接続し、第２端子３０をデータ線１６に接続してある。ＣＰＵ１８の制御により第１端子２８から送出される出力はクロックとして利用され、同じくＣＰＵ１８の制御により第２端子３０から送出される出力は、シリアル通信されるデータの一部を構成する。これらクロック出力及びデータ出力については後に更に詳細に説明する。
【００１０】
半導体メモリカード１２は、クロック入力端子３２と、シリアルデータ入出力端子３４とを備えている。半導体メモリカード１２をコネクタ１３に挿入すると、クロック入力端子３２はクロック線１４に接続され、シリアルデータ入出力端子３４はデータ線１６に接続される。半導体メモリカード１２は、クロック入力端子３２及びシリアルデータ入出力端子３４以外にも、マイクロコンピュータ１０の適当な端子に接続される制御端子を備えているが、それら制御端子は、本発明に係る方法と直截的な関係を持たないものであるため図示せず、その説明も省略する。半導体メモリカード１２は、クロック入力端子３２を介して受け取るクロックに同期して、シリアルデータ入出力端子３４を介してシリアルにデータビットを受信または送信する機能を備えており、このようなシリアル通信機能は、既存の殆ど全ての半導体メモリカードに備えられているものである。
【００１１】
クロック線１４及びデータ線１６は、各々を、プルアップ用の抵抗を介してプルアップしてある。ただし、使用する半導体メモリカードの通信プロトコルによっては、それらクロック線１４及びデータ線１６の一方もしくは両方を、プルアップではなくプルダウンしておくようにすることもあり、このプルアップ、プルダウンの詳細については後述する。
【００１２】
これより、以上のようにして接続したマイクロコンピュータ１０と半導体メモリカード１２との間の、シリアル通信方式によるデータ通信を制御するための、本発明に係るシリアル通信制御方法について説明する。本発明に係るシリアル通信制御方法の重要なポイントは、マイクロコンピュータ１０が、半導体メモリカード１２との間でシリアル通信方式で連続して転送するデータのうち、連続的にデータ転送できるところは同期式シリアル通信インターフェース２０を介して転送し、それ以外の部分は汎用入出力ポート２２を介して転送することにある。また更に、以下に説明するシリアル通信制御方法は、同期式シリアル通信インターフェース２０を介したデータ転送と、汎用入出力ポート２２を介したデータ転送との間の切り替えを、データ波形の乱れなく行い得るものである。
【００１３】
先ず、マイクロコンピュータ１０が同期式シリアル通信インターフェース２０を介して実行する、半導体メモリカード１２との間の連続データ転送について説明する。図３は、同期式シリアル通信インターフェース２０を介して転送されるデータ波形の具体例を示した波形図であり、図中の上段がクロック波形（クロック線１４上の波形）、下段がデータ波形（データ線１６上の波形）である。図３の示した具体例は、データ転送単位を８ビット、送信ビット順をMSBファーストとし、データの切り替えをクロック波形の立下りエッジで行い、データの取り込みをクロック波形の立ち上がりエッジで行うようにした場合の例である。ただし、既存のマイクロコンピュータの多くは、クロックエッジや送信ビット順の設定を、そのマイクロコンピュータのレジスタ設定により変更できるように構成されているため、対象となる半導体メモリカードの通信プロトコルに整合するように、それらを設定すればよい。簡単のため以後の説明では、同期式シリアル通信インターフェース２０のデータ転送単位以外は、上記条件であることを前提として説明して行くこととし、データ転送単位は、一般化してＮビットであるものとする。既述のごとく、同期式シリアル通信インターフェース２０を介したデータ転送は、ハードウェアによってフロー制御が行われるため、１ビットのデータを転送するたびにＣＰＵ１８が介入するということがなく、高速のシリアル通信が可能である。
【００１４】
次に、マイクロコンピュータ１０が汎用入出力ポート２２を介して実行する、半導体メモリカード１２との間のデータ転送について説明する。マイクロコンピュータ１０から半導体メモリカード１２へデータを送信する場合には、マイクロコンピュータ１０は、汎用入出力ポート２２の第１端子２８を駆動してクロック線１４上に「０」を出力し、また、第２端子３０を駆動して１ビットのデータビットをデータ線１６上に出力する。尚、第１端子２８の駆動と第２端子３０の駆動との順番は、半導体メモリカード１２に採用されている通信プロトコルに整合するように定めればよい。その後、マイクロコンピュータ１０は、汎用入出力ポート２２の第１端子２８を駆動してクロック線１４上に「１」を出力する。これによって、半導体メモリカード１２にデータ線１６上のデータビットが取り込まれる。
【００１５】
一方、マイクロコンピュータ１０が、半導体メモリカード１２からデータを受信する場合には、マイクロコンピュータ１０は、汎用入出力ポート２２の第１端子２８を駆動してクロック線１４上に「０」を出力する。すると、半導体メモリカード１２がデータ線１６を駆動して１ビットのデータを出力する。その後、マイクロコンピュータ１０は汎用入出力ポート２２の第２端子３０を介してそのデータ線１６上のデータビットを読み取り、また、第１端子２８を駆動してクロック線１４上に「１」を出力する。第２端子３０を介したデータビットの読み取りと、第１端子２８からクロック線１４への「１」の出力との順番は、半導体メモリカード１２に採用されている通信プロトコルに整合するように定めればよい。
【００１６】
このように、汎用入出力ポート２２を介したデータ転送は、１ビットのデータを転送するたびにＣＰＵ１８が複数回介入する必要があるため、ＣＰＵ１８の負荷が大きく、データ転送速度は、同期式シリアル通信インターフェース２０を介したデータ転送と比べて、格段に低速となる。尚、以上に説明した同期式シリアル通信インターフェース２０を介したデータ転送方法と、汎用入出力ポート２２を介したデータ転送方法とは、いずれも慣用的な方法である。
【００１７】
既述のごとく、本発明に係るシリアル通信制御方法は、同期式シリアル通信インターフェース２０を介したデータ転送と、汎用入出力ポート２２を介したデータ転送とを切り替えることを特徴としている。その切り替えを行うのは、マイクロコンピュータ１０のＣＰＵ１８が実行するコンピュータプログラムにより構成される通信切り替え手段である。その切り替えについて以下に説明する。ここでは具体例として、マイクロコンピュータ１０が半導体メモリカード１２との間で、Ｘビットの連続データ転送を行う場合について説明する。図４は、そのＸビットの連続データ転送によって転送されるデータ波形を示した波形図であり、図中の上段がクロック波形（クロック線１４上の波形）、下段がデータ波形（データ線１６上の波形）である。
【００１８】
本発明に係る方法を用いることで利点を享受できるのは、ＸとＮが、以下の式を満たすときである。
Ｘ＝Ａ×Ｎ＋Ｂ  （Ａ及びＢはいずれも正の整数であり、０＜Ｂ＜Ｎである）
ここでは、ＸとＮが、上式を満たすものとする。マイクロコンピュータ１０の通信切り替え手段は、一度に連続して転送するＸビットのうち、最初のＡ×Ｎビットの転送区間では、同期式シリアル通信インターフェース２０を使用したＮビット単位のデータ転送をＡ回繰り返させる。例えば、マイクロコンピュータ１０から半導体メモリカード１２へデータを送信する場合には、マイクロコンピュータ１０のＣＰＵ１８が、送信データをＲＡＭ（不図示）から読み込み、同期式シリアル通信インターフェース２０の送信データ格納レジスタ（不図示）にこれをセットし、同期式シリアル通信インターフェース２０に送信開始命令を出す（即ち、同期式シリアル通信インターフェース２０をトリガする）。すると同期式シリアル通信インターフェース２０は、それ以後はＣＰＵ１８の介入を必要とすることなく、ハードウェアフロー制御により、クロック入出力端子２４及びデータ入出力端子２６を制御して、Ｎビットのデータの送信を自動で行う。ＣＰＵ１８は、このＮビットのデータの送信中は、データ転送以外の他のタスクを実行することができ、このＮビットのデータの送信終了を確認したならば、データ転送に関する次の動作に移る。
【００１９】
一方、マイクロコンピュータ１０が半導体メモリカード１２からデータを受信する場合には、マイクロコンピュータ１０のＣＰＵ１８が、同期式シリアル通信インターフェース２０に受信開始命令を出す（即ち、同期式シリアル通信インターフェース２０をトリガする）。すると同期式シリアル通信インターフェース２０は、それ以後はＣＰＵ１８の介入を必要とすることなく、ハードウェアフロー制御により、クロック入出力端子２４及びデータ入出力端子２６を制御して、Ｎビットのデータの受信を自動で行う。ＣＰＵ１８は、このＮビットのデータの受信中は、データ転送以外の他のタスクを実行することができ、このＮビットのデータの受信終了を確認したならば、同期式シリアル通信インターフェース２０の受信データ格納レジスタ（不図示）からデータを読み出し、それをＲＡＭに格納する。
【００２０】
Ｎビットを単位とした以上の送信動作または受信動作がＡ回繰り返されたならば、通信切り替え手段が、同期式シリアル通信インターフェース２０を介したデータ転送から、汎用入出力ポート２２を介したデータ転送へ切り替える。そして、連続して送信するＸビットのうちの残りのＢビットの転送は、汎用入出力ポート２２を使用して上で説明したようにして実行する。尚、別法として、先に汎用入出力ポート２２を使用してＢビットの転送を行い、その後に、同期式シリアル通信インターフェース２０を使用したデータ転送に切り替えて、残りのＮ×Ａビットの転送を行うようにしてもよい。
【００２１】
通信切り替え手段は、同期式シリアル通信インターフェース２０を介したデータ転送と汎用入出力ポート２２を介したデータ転送との間で、切り替えを行うタイミングを判断するために、例えば、Ｘビットのデータの送信を開始するのに先立って、ＸをＮで除する除算を実行し、上掲の式に示したＡ及びＢの値を算出して記憶しておくようにすればよく、その記憶しておいたＡないしＢの値に基づいて、切り替えのタイミングを判断することができる。
【００２２】
また、マイクロコンピュータ１０から半導体メモリカード１２へデータを送信する場合であれば、同期式シリアル通信インターフェース２０のハードウェアが送信データ格納レジスタにセットする送信データを常時モニタしておき、そこにセットされた送信データのデータビットがＮビット未満になったときに、そのことを通信切り替え手段に知らせるようにしてもよい。通信切り替え手段は、それに応答して、同期式シリアル通信インターフェース２０を介したデータ転送から、汎用入出力ポート２２を介したデータ転送に切り替えて、そのＮビット未満の残りのデータビットを、汎用入出力ポート２２から出力させるようにすればよい。
【００２３】
以上に説明したシリアル通信制御方法では、マイクロコンピュータ１０のＣＰＵ１８が実行するコンピュータプログラムにより構成される通信切り替え手段が、マイクロコンピュータ１０と半導体メモリカード１２との間で１つの通信メッセージを通信しているときに、同期式シリアル通信インターフェース２０による所定ビット数（Ｎビット）を単位としたデータ転送と、汎用入出力ポート２２によるデータ転送との間で切り替えを行う。そして、それによって、同期式シリアル通信インターフェース２０を介して転送される所定ビット数の整数倍のビット数（Ｎ×Ａビット）から成るデータビット列と、汎用入出力ポート２２を介して転送されるデータビット列または単一データビットとで、その１つの通信メッセージが構成されるようにしている。尚、汎用入出力ポート２２がデータビット列を転送するというのはＢ≧２の場合であり、単一データビットを転送するというのはＢ＝１の場合である。
【００２４】
既に述べたように、汎用入出力ポート２２を使用してデータ転送をする場合には、同期式シリアル通信インターフェース２０を使用する場合と比べてデータ転送速度がかなり低下するが、これは、そのデータ転送に関係する全ての制御をマイクロコンピュータ１０のＣＰＵ１８が実行しなければならないからである。例えば、汎用入出力ポート２２の１つの端子の出力を１回変えるだけでも、複数の命令が必要になるため、マイクロコンピュータ１０のシステムクロック数周期分の時間を要する。その上に更に、各ビットごとのループ判定等の処理が上乗せされるので、総転送時間はかなり長くなる。これに対して、同期式シリアル通信インターフェース２０を用いる場合には、データ転送単位であるＮビットの転送はハードウェア的に自動で行われるため、転送に使われるクロック周波数はマイクロコンピュータのシステムクロックと同等まで上げることができる。このため、非常に高速な転送が可能になり、しかも、そのＮビットの転送の間は、マイクロコンピュータ１０のＣＰＵ１８は別の処理をしていることができるので、システム全体のスループットも上げることができる。そして、半導体メモリカード１２との通信においては、通信全体に対して、連続したデータ転送を単純に行っている部分が大部分を占めるので、この部分に同期式シリアル通信インターフェース２０を利用することによるデータ転送高速化の効果は非常に大きい。
【００２５】
以上に説明したシリアル通信制御方法では、通信切り替え手段が、同期式シリアル通信インターフェース２０によるデータ転送と、汎用入出力ポート２２によるデータ転送とを切り替える際に、（１）同期式シリアル通信インターフェース２０のクロック入出力端子２４からのクロック出力と、汎用入出力ポート２２の第１端子２８からのクロック出力との間で、クロック出力元切り替えを行い、またそれと同時に、（２）同期式シリアル通信インターフェース２０のデータ入出力端子２６と、汎用入出力ポート２２の第２端子３０との間で、半導体メモリカード１２との間のデータ転送に使用する端子を切り替える、データ端子切り替えを行うようにしている。従って、通信切り替え手段が、これら２つの切り替えを共に行うことで、上記利点を得ているのであるが、本発明の別の実施の形態として、通信切り替え手段が（１）のクロック出力元切り替えだけを行い、（２）のデータ端子切り替えを行わないような形態とすることも可能であり、そのような実施の形態については、後に図７及び図８を参照して説明する。
【００２６】
同期式シリアル通信インターフェース２０と汎用入出力ポート２２との切り替えに関しては、その切り替えに際して、通信線（クロック線１４及びデータ線１６）上の波形の乱れが発生しないようにすることが重要であり、さもないと通信エラーが発生するおそれがある。図１及び図２に示した具体例では、波形の乱れを防止するための手段として、クロック線１４及びデータ線１６をプルアップしている。これについて、以下に、図５Ａ〜図５Ｃと、図６とを参照して説明する。
【００２７】
図５Ａ〜図５Ｃは、同期式シリアル通信インターフェース２０の受信バッファ４２及び出力バッファ４４、汎用入出力ポート２２の受信バッファ４６及び出力バッファ４８、それに、半導体メモリカード１２のデータ入出力回路５０の受信バッファ５２及び出力バッファ５４を示しており、それら受信バッファ及び出力バッファはいずれも、上述した夫々の端子（図５Ａ〜図５Ｃでは省略した）及びコネクタ（これも図５Ａ〜図５Ｃでは省略した）を介してデータ線１６に接続されている。これらの図は、同期式シリアル通信インターフェース２０から汎用入出力ポート２２への切り替えを行う際に、データ線１６に接続されている夫々の出力バッファの状態がどのように変化するかを、模式的に示したものである。図中に実線で示した出力バッファが、有効状態（データ線１６上に出力を送出している状態）にあるバッファである。図中に点線で示した出力バッファは、ハイインピーダンス状態（データ線１６から回路的に切り離された状態）にあり、ハイインピーダンス状態にある出力バッファが接続されている端子は、入力状態（その出力バッファに対応した受信バッファがデータを受信できる状態）になっている。
【００２８】
図５Ａに示したのは、同期式シリアル通信インターフェース２０が半導体メモリカード１２へデータを送信している状態である。この状態では、同期式シリアル通信インターフェース２０の出力バッファ４４のみが有効（端子が出力状態）となっており、それ以外の出力バッファはハイインピーダンス（端子が入力状態）となっている。データ線１６に接続されている出力バッファ４４、４８、５４は、いかなる場合にも、それらのうちの２つ以上のものが同時に有効になってはならず、なぜならば、同時に複数の出力バッファが有効となった場合には、電源とグラウンドとが短絡して過大な電流が流れることによって、素子の破壊が生じるおそれがあるからである。
【００２９】
同期式シリアル通信インターフェース２０によるデータ転送を行っている状態から、汎用入出力ポート２２によるデータ転送に切り替える際には、それらの出力バッファ４４、４８が同時に有効になるのを確実に防止するために、図５Ｂに示したように、一旦、全ての出力バッファ４４、４８、５４を同時にハイインピーダンス状態にする。この後、汎用入出力ポート２２の出力バッファ４８を有効にすることで、図５Ｃに示した状態となり、これによって汎用入出力ポート２２による送信が可能になる。しかるに、図５Ｂに示した状態では、データ線１６を駆動しているバッファが存在していないため、データ線１６は浮いている状態になる。そのため、もしデータ線１６がプルアップもプルダウンもされていなかったならば、このとき、データ線１６の電位は浮遊容量によってのみ決まるため、非常に不安定な挙動を示すことになる。データ線１６のプルアップは、そのような事態を防止する役割を果たしているのである。
【００３０】
次にクロック線１４のプルアップについて、図６を参照して説明する。図６は、図４の波形図のうちの、同期式シリアル通信インターフェース２０から汎用入出力ポート２２への切り替え部分を拡大したものを下段に示し、上段には比較例としてクロック線１４をプルアップもプルダウンもしていない場合を示した波形図である。この図６から明らかなように、プルアップしている場合には、切り替えの際にクロック線１４の電位がハイ状態に保たれるのに対し、プルアップもプルダウンもしていない場合には、クロック線１４の電位が不安定となっている。クロック線１４において、図６の上段に示したようにクロック波形が変化した場合には、半導体メモリカード１２が、その不安定な電位によって発生した立上りエッジＬＥを、クロックエッジとして誤認識してしまうおそれがある。半導体メモリカード１２の通信プロトコル上、このような誤認識が問題となる場合には、プルアップないしプルダウンは必須である。プルアップとプルダウンとのどちらにすべきかは、実際に使用している半導体メモリカードの通信プロトコルに依存するが、切り替え前のクロック線１４の状態が「１」ならプルアップ、「０」ならプルダウンとすればよい。尚、以上のプルアップ／プルダウンはクロック線１４及びデータ線１６の電位を保持するだけあり、それらを充放電することはないので、プルアップ／プルダウン用抵抗の抵抗値は大きな値で構わない。
【００３１】
半導体メモリカードの通信プロトコルとして、上記以外にも制御線が必要になる場合には、汎用入出力ポートで使用する入出力端子を増やし、これを制御線に割り当てた上で、既に述べたような方法で制御してやればよい。一般に、制御線が制御される区間は通信全体のごく一部であるため、この部分を制御してやることによるデータ転送速度の低下は殆どない。その１つの具体例を図７及び図８に示した。この具体例はまた、先に述べた、通信切り替え手段がクロック出力元切り替えだけを行い、データ端子切り替えを行わないようにした実施の形態の具体例でもある。
【００３２】
図７は、マイクロコンピュータ１０が、メモリースティック（「メモリースティック」はソニー株式会社の商標である）と呼ばれている半導体メモリカード１２との間でデータ通信を行う場合の、両者間の接続形態の具体例を示した模式図であり、図８は、その制御方法の一部を示したタイミングチャートである。マイクロコンピュータ１０は携帯用オーディオプレーヤ１１に装備されており、メモリースティック１２には、マイクロコンピュータ１０によって読み出されるオーディオデータが格納されている。マイクロコンピュータ１０は、メモリースティック１２から読み出したオーディオデータに処理を施して音響を再生する。メモリースティック１２は、携帯用オーディオプレーヤ１１に対して取り外し可能に接続され、そのために携帯用オーディオプレーヤ１１には、メモリースティック１２を挿入するコネクタ１３が装備されている。メモリースティック１２は、クロック入力端子（SCLK）３２と、シリアルデータ入出力端子（SDIO）３４と、制御端子（BS）５６とを備えており、この具体例では、マイクロコンピュータ１０とメモリースティック１２とを接続するためのクロック線１４、データ線１６、及び制御線５８が用意されている。図７の具体例では、それら各線は、マイクロコンピュータ１０とメモリースティック用コネクタ１３との間を接続しており、メモリースティック１２をコネクタ１３に挿入すると、クロック入力端子（SCLK）３２はクロック線１４に接続され、シリアルデータ入出力端子（SDIO）３４はデータ線１６に接続され、制御端子（BS）５６は制御線５８に接続される。
【００３３】
図１及び図２の具体例と同様に、図７の具体例でも、マイクロコンピュータ１０は、中央処理部（ＣＰＵ）１８と、このＣＰＵ１８によって制御される、同期式シリアル通信インターフェース２０及び汎用入出力ポート２２とを備えている。メモリースティック１２は、その通信プロトコルとして、データ転送を常に８ビット単位で行うようにしているため、同期式シリアル通信インターフェース２０は、その送信単位を８ビットとしてある。データ線１６は同期式シリアル通信インターフェース２０のデータ入出力端子２６だけに接続されており、汎用入出力ポート２２には接続されていない。同期式シリアル通信インターフェース２０は、クロック入出力端子（Serial_SCK）２４及びデータ入出力端子（Serial_SDO）２６を備えており、クロック入出力端子２４をクロック線１４に接続し、データ入出力端子２６をデータ線１６に接続してある。データ入出力端子２６は、信号の入出力方向を動的に制御することのできるものである。
【００３４】
汎用入出力ポートは２２は多数の入出力端子を含むものであるが、図２はそれらのうちの入出力Ａ端子６０、入出力Ｂ端子（PIO_SCK）６２、及び入出力Ｃ端子（PIO_BS）６４の、３つの端子だけを示した。それらのうち、入出力Ａ端子６０は使用していない。入出力Ｂ端子（PIO_SCK）６２は、クロック出力端子として使用しており、クロック線１４に接続してある。入出力Ｃ端子（PIO_BS）６４は、制御信号出力端子として使用しており、制御線５８に接続してある。この図８の具体例では、汎用入出力ポート２２を介したデータビットの送受信は行わないため、汎用入出力ポート２２はデータ線１６には接続していない。また、クロック線１４及びデータ線１６は、各々を、プルアップ用の抵抗を介してプルアップしてあり、このプルアップは、図１及び図２の具体例と同様、それら各線の状態が不安定になるのを防止するためのものである。
【００３５】
メモリースティック１２の通信プロトコルは、メモリースティック１２が待機状態にあるときにクロックを受け取ったならば、そのときの制御線５８上の制御出力を読み取り、更にそれに続いて受け取る８個のクロックに同期して、データ線１６から８個のデータビットを読み取り、それら制御出力と８個のデータビットの組合せをもって、１つの通信コマンドとして認識するように定められている。ここで、例えば汎用入出力ポート２２の入出力Ａ端子６０をデータ線１６に接続しておき、この入出力Ａ端子６０からデータビットを送出するようにしておけば、通信コマンドの８個のデータビットの転送を、汎用入出力ポート２２を介して行うことができるが、そのようにすると比較的長い時間がかかり、ＣＰＵ１８の負荷も比較的大きなものとなる。そこで、本発明に係るシリアル通信制御方法を、通信コマンドの送信に適用することによって、より高速で低負荷のコマンド送信を行えるようになる。
【００３６】
通信コマンドの送信を、本発明に係るシリアル通信制御方法に従って行う場合には、通信コマンドの送信に適用した場合には、マイクロコンピュータ１０のＣＰＵ１８が実行するコンピュータプログラムにより構成される通信切り替え手段が、同期式シリアル通信インターフェース２０のクロック入出力端子（Serial_SCK）２４からのクロック出力と、汎用入出力ポート２２の入出力Ｂ端子（PIO_SCK）６２からのクロック出力との間で、クロック出力元切り替えを行う。
【００３７】
より詳しく述べるならば、通信切り替え手段は、汎用入出力ポート２２の入出力Ｃ端子（PIO_BS）６４から制御線５８上へ出力された制御出力をメモリースティック１２に読み取らせるときには汎用入出力ポート２２の入出力Ｂ端子（PIO_SCK）６２からクロック出力を送出させ、一方、同期式シリアル通信インターフェース２０のデータ入出力端子（Serial_SDO）２６とメモリースティック１２のシリアルデータ入出力端子（SDIO）３４との間のデータ転送を行わせるときには同期式シリアル通信インターフェース２２のクロック入出力端子（Serial_SCK）２４からクロック出力を送出させるようにする。既述のごとく、メモリースティック１２の通信プロトコルは、制御端子（BS）５６を介して受信する制御出力と、シリアルデータ入出力端子（SDIO）３４を介して受信する連続する複数のデータビットとの組合せによって構成されるコマンドを使用しているため、通信切り替え手段が、以上のようにクロック出力切り替えを行うことで、そのコマンドをメモリースティック１２に読み取らせることができる。
【００３８】
図８は、図７の接続形態において以上のシリアル通信制御を行う際のクロック線１４、データ線１６、及び制御線５８上の波形を示した波形図である。図８において、上段はデータ線１６上の波形であり、MSで示したのは、メモリースティック１２のシリアルデータ入出力端子（SDIO）３４が有効状態にある期間、Serial_SDOで示したのは、マイクロコンピュータ１０の同期式シリアル通信インターフェース２０のデータ入出力端子（Serial_SDO）２６が有効状態にある期間、そして斜線で示したのは、データ線１６がプルアップされることでハイ状態に維持されている期間である。中段はクロック線１４上の波形であり、Serial_SCKで示したのは、同期式シリアル通信インターフェース２２のクロック入出力端子（Serial_SCK）２４が有効状態にある期間、PIO_SCKで示したのは、汎用入出力ポート２２の入出力Ｂ端子（PIO_SCK）６２が有効状態にある期間、そして斜線で示したのは、クロック線１４がプルアップされることでハイ状態に維持されている期間である。下段は制御線５８上の波形であり、PIO_BSという表記は、汎用入出力ポート２２の入出力Ｃ端子（PIO_BS）６４が有効状態にあることを表している。
【００３９】
以上のシリアル通信制御方法によれば、専用の通信インターフェイスLSIを使用することなく、マイクロコンピュータ１０とメモリースティック１２との間のシリアルデータ転送を行うことができ、しかも、その通信を比較的高速で行うことができる。
【図面の簡単な説明】
【００４０】
【図１】本発明に係るシリアル通信制御方法を用いてシリアル通信を行うマイクロコンピュータと半導体メモリカードとを接続する接続形態の第１の具体例を示した模式図である。
【図２】本発明に係るシリアル通信制御方法を用いてシリアル通信を行うマイクロコンピュータと半導体メモリカードとを接続する接続形態の第２の具体例を示した模式図である。
【図３】同期式シリアル通信インターフェースを介して転送されるデータ波形の具体例を示した波形図である。
【図４】Ｘビットの連続データ転送によって転送されるデータ波形を示した波形図である。
【図５Ａ】同期式シリアル通信インターフェースから汎用入出力ポートへの切り替えを行う際に、データ線に接続されている夫々の出力バッファの状態がどのように変化するかを示した模式図である。
【図５Ｂ】同期式シリアル通信インターフェースから汎用入出力ポートへの切り替えを行う際に、データ線に接続されている夫々の出力バッファの状態がどのように変化するかを示した模式図である。
【図５Ｃ】同期式シリアル通信インターフェースから汎用入出力ポートへの切り替えを行う際に、データ線に接続されている夫々の出力バッファの状態がどのように変化するかを示した模式図である。
【図６】図４の波形図のうちの、同期式シリアル通信インターフェースから汎用入出力ポートへの切り替え部分を拡大したものを下段に示し、上段には比較例としてクロック線をプルアップもプルダウンもしていない場合を示した波形図である。
【図７】マイクロコンピュータが、メモリースティック（「メモリースティック」はソニー株式会社の商標である）と呼ばれている半導体メモリカードとの間でデータ通信を行う場合の、両者間の接続形態の具体例を示した模式図である。
【図８】図７の接続形態においてシリアル通信制御を行う際の、クロック線、データ線、及び制御線上の波形を示した波形図である。
【符号の説明】
【００４１】
１０……マイクロコンピュータ、１２……半導体メモリカード、１４……クロック線、１６……データ線、１８……中央処理部（ＣＰＵ）、２０……同期式シリアル通信インターフェース、２２……汎用入出力ポート、２４……クロック入出力端子、２６……データ入出力端子、２６ａ……データ入力端子、２６ｂ……データ出力端子、３２……クロック入力端子、３４……シリアルデータ入出力端子、４２……受信バッファ、４４……出力バッファ、４６……受信バッファ、４８……出力バッファ、５０……データ入出力回路、５２……出力バッファ、５４……受信バッファ、５６……制御端子、５８……制御線。
【図１】
2005352658.tif 000003
【図２】
2005352658.tif 000004
【図３】
2005352658.tif 000005
【図４】
2005352658.tif 000006
【図５Ａ】
2005352658.tif 000007
【図５Ｂ】
2005352658.tif 000008
【図５Ｃ】
2005352658.tif 000009
【図６】
2005352658.tif 000010
【図７】
2005352658.tif 000011
【図８】
2005352658.tif 000012