以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した通信システム(システムとは、複数の装置が論理的に結合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない)の一実施の形態の構成例を示している。
図1においては、通信システムは、3つのNFC通信装置1,2,3から構成されている。NFC通信装置1乃至3それぞれは、他のNFC通信装置との間で、単一の周波数の搬送波を使用した、電磁誘導による近接通信(NFC(Near Field Communication))を行うことができるようになっている。
ここで、NFC通信装置1乃至3が使用する搬送波の周波数としては、例えば、ISM(Industrial Scientific Medical)バンドの13.56MHzなどを採用することができる。
また、近接通信とは、通信する装置どうしの距離が、数10cm以内となって可能となる通信を意味し、通信する装置どうし(の筐体)が接触して行う通信も含まれる。
なお、図1の通信システムは、NFC通信装置1乃至3のうちの1以上をリーダ/ライタとするとともに、他の1以上をICカードとするICカードシステムとして採用することができることは勿論、NFC通信装置1乃至3それぞれを、PDA(Personal Digital Assistant)、PC(Personal Computer)、携帯電話、腕時計、ペン等の通信システムとして採用することも可能である。即ち、NFC通信装置1乃至3は、近接通信を行う装置であり、ICカードシステムのICカードやリーダ/ライタなどに限定されるものではない。
NFC通信装置1乃至3は、第1に、2つの通信モードによる通信が可能であることと、第2に、複数の伝送レートによるデータ伝送が可能であることとの2つの特徴を有している。
2つの通信モードとしては、パッシブモードとアクティブモードとがある。いま、NFC通信装置1乃至3のうちの、例えば、NFC通信装置1と2の間の通信に注目すると、パッシブモードでは、上述した従来のICカードシステムと同様に、NFC通信装置1と2のうちの一方のNFC通信装置である、例えば、NFC通信装置1は、自身が発生する電磁波(に対応する搬送波)を変調することにより、他方のNFC通信装置であるNFC通信装置2にデータを送信し、NFC通信装置2は、NFC通信装置1が発生する電磁波(に対応する搬送波)を負荷変調することにより、NFC通信装置1にデータを送信する。
一方、アクティブモードでは、NFC通信装置1と2のいずれも、自身が発生する電磁波(に対応する搬送波)を変調することにより、データを送信する。
ここで、電磁誘導による近接通信を行う場合、最初に電磁波を出力して通信を開始し、いわば通信の主導権を握る装置を、イニシエータと呼ぶ。イニシエータは、通信相手にコマンドを送信し、その通信相手は、そのコマンドに対するレスポンスを返す形で、近接通信が行われるが、イニシエータからのコマンドに対するレスポンスを返す通信相手を、ターゲットと呼ぶ。
例えば、いま、NFC通信装置1が電磁波の出力を開始して、NFC通信装置2との通信を開始したとすると、図2および図3に示すように、NFC通信装置1がイニシエータとなり、NFC通信装置2がターゲットとなる。
そして、パッシブモードでは、図2に示すように、イニシエータであるNFC通信装置1が電磁波を出力し続け、NFC通信装置1は、自身が出力している電磁波を変調することにより、ターゲットであるNFC通信装置2に、データを送信するとともに、NFC通信装置2は、イニシエータであるNFC通信装置1が出力している電磁波を負荷変調することにより、NFC通信装置1に、データを送信する。
一方、アクティブモードでは、図3に示すように、イニシエータであるNFC通信装置1は、自身がデータを送信する場合に、自身で電磁波の出力を開始し、その電磁波を変調することにより、ターゲットであるNFC通信装置2に、データを送信する。そして、NFC通信装置1は、データの送信終了後は、電磁波の出力を停止する。ターゲットであるNFC通信装置2も、自身がデータを送信する場合に、自身で電磁波の出力を開始し、その電磁波を変調することにより、イニシエータであるNFC通信装置1に、データを送信する。そして、NFC通信装置2は、データの送信終了後は、電磁波の出力を停止する。
なお、NFC通信装置1乃至3が、複数の伝送レートによるデータ伝送が可能であるという第2の特徴点については、後述する。
また、図1では、3つのNFC通信装置1乃至3によって、通信システムが構成されているが、通信システムを構成するNFC通信装置は、3つに限定されるものではなく、2または4以上であっても良い。さらに、通信システムは、NFC通信装置の他、例えば、従来のICカードシステムを構成するICカードやリーダ/ライタなどを含めて構成することも可能である。
次に、図4は、図1のNFC通信装置1の構成例を示している。なお、図1の他のNFC通信装置2および3も、図4のNFC通信装置1と同様に構成されるため、その説明は、省略する。
アンテナ11は、閉ループのコイルを構成しており、このコイルに流れる電流が変化することで、電磁波を出力する。また、アンテナ11としてのコイルを通る磁束が変化することで、アンテナ11に電流が流れる。
受信部12は、アンテナ11に流れる電流を受信し、同調と検波を行い、復調部13に出力する。復調部13は、受信部12から供給される信号を復調し、デコード部14に供給する。デコード部14は、復調部13から供給される信号としての、例えばマンチェスタ符号などをデコードし、そのデコードの結果得られるデータを、データ処理部15に供給する。
データ処理部15は、デコード部14から供給されるデータに基づき、所定の処理を行う。また、データ処理部15は、他の装置に送信すべきデータを、エンコード部16に供給する。
エンコード部16は、データ処理部15から供給されるデータを、例えば、マンチェスタ符号などにエンコードし、選択部17に供給する。選択部17は、変調部19または負荷変調部20のうちのいずれか一方を選択し、その選択した方に、エンコード部16から供給される信号を出力する。
ここで、選択部17は、制御部21の制御にしたがって、変調部19または負荷変調部20を選択する。制御部21は、通信モードがパッシブモードであり、NFC通信装置1がターゲットとなっている場合は、選択部17に負荷変調部20を選択させる。また、制御部21は、通信モードがアクティブモードである場合、または通信モードがパッシブモードであり、かつ、NFC通信装置1がイニシエータとなっている場合は、選択部17に変調部19を選択させる。従って、エンコード部16が出力する信号は、通信モードがパッシブモードであり、NFC通信装置1がターゲットとなっているケースでは、選択部17を介して、負荷変調部20に供給されるが、他のケースでは、選択部17を介して、変調部19に供給される。
電磁波出力部18は、アンテナ11から、所定の単一の周波数の搬送波(の電磁波)を放射させるための電流を、アンテナ11に流す。変調部19は、電磁波出力部18がアンテナ11に流す電流としての搬送波を、選択部17から供給される信号にしたがって変調する。これにより、アンテナ11からは、データ処理部15がエンコード部16に出力したデータにしたがって搬送波を変調した電磁波が放射される。
負荷変調部20は、外部からアンテナ11としてのコイルを見たときのインピーダンスを、選択部17から供給される信号にしたがって変化させる。他の装置が搬送波としての電磁波を出力することにより、アンテナ11の周囲にRFフィールド(磁界)が形成されている場合、アンテナ11としてのコイルを見たときのインピーダンスが変化することにより、アンテナ11の周囲のRFフィールドも変化する。これにより、他の装置が出力している電磁波としての搬送波が、選択部17から供給される信号にしたがって変調され、データ処理部15がエンコード部16に出力したデータが、電磁波を出力している他の装置に送信される。
ここで、変調部19および負荷変調部20における変調方式としては、例えば、振幅変調(ASK(Amplitude Shift Keying))を採用することができる。但し、変調部19および負荷変調部20における変調方式は、ASKに限定されるものではなく、PSK(Phase Shift Keying)やQAM(Quadrature Amplitude Modulation)その他を採用することが可能である。また、振幅の変調度についても8%から30%、50%、100%等数値に限定されることはなく、好適なものを選択すれば良い。
制御部21は、NFC通信装置1を構成する各ブロックを制御する。電源部22は、NFC通信装置1を構成する各ブロックに、必要な電源を供給する。なお、図4では、制御部21がNFC通信装置1を構成する各ブロックを制御することを表す線の図示と、電源部22がNFC通信装置1を構成する各ブロックに電源を供給することを表す線の図示は、図が煩雑になるため、省略してある。
ここで、上述の場合には、デコード部14およびエンコード部16において、前述のタイプCで採用されているマンチェスタ符号を処理するようにしたが、デコード部14およびエンコード部16では、マンチェスタ符号だけでなく、タイプAで採用されているモディファイドミラーや、タイプCで採用されているNRZなどの複数種類の符号の中から1つを選択して処理するようにすることが可能である。
次に、図5は、図4の復調部13の構成例を示している。
図5では、復調部13は、選択部31、2以上であるN個の復調部321乃至32N、および選択部33から構成されている。
選択部31は、制御部21(図4)の制御にしたがい、N個の復調部321乃至32Nの中から、1つの復調部32n(n=1,2,・・・,N)を選択し、その選択した復調部32nに、受信部12が出力する信号を供給する。
復調部32nは、第nの伝送レートで送信されてきた信号を復調し、選択部33に供給する。ここで、復調部32nと復調部32n'(n≠n’)は、異なる伝送レートで送信されてきた信号を復調する。従って、図5の復調部13は、第1乃至第NのN通りの伝送レートで送信されてくる信号を復調することができるようになっている。なお、N通りの伝送レートとしては、例えば、前述した106kbps,212kbps,424kbps,848kbpsなどを採用することができる。即ち、N通りの伝送レートには、例えば、既存のICカードシステムなどの近接通信において既に採用されている伝送レートと、それ以外の伝送レートとを含めることができる。
選択部33は、制御部21の制御にしたがい、N個の復調部321乃至32Nの中から、1つの復調部32nを選択し、その復調部32nで得られた復調出力を、デコード部14に供給する。
以上のように構成される復調部13では、制御部21(図4)は、例えば、選択部31に、N個の復調部321乃至32Nを順次選択させ、これにより、復調部321乃至32Nそれぞれに、受信部12から選択部31を介して供給される信号を復調させる。そして、制御部21は、例えば、受信部12から選択部31を介して供給される信号を正常に復調することができた復調部32nを認識し、その復調部32nの出力を選択するように、選択部33を制御する。選択部33は、制御部21の制御にしたがい、復調部32nを選択し、これにより、復調部32nで得られた正常な復調出力が、デコード部14に供給される。
従って、復調部13では、N通りの伝送レートのうちの任意の伝送レートで伝送されてくる信号を復調することができる。
なお、復調部321乃至32Nは、正常に復調を行うことができた場合のみ、復調出力を出力し、正常に復調を行うことができなかった場合には、何も出力しない(例えば、ハイインピーダンスとなる)ようにすることができる。この場合、選択部33は、復調部321乃至32Nの出力すべての論理和をとって、デコード部14に出力すれば良い。
次に、図6は、図4の変調部19の構成例を示している。
図6では、変調部19は、選択部41、2以上であるN個の変調部421乃至42N、および選択部43から構成されている。
選択部41は、制御部21(図4)の制御にしたがい、N個の変調部421乃至42Nの中から、1つの変調部42n(n=1,2,・・・,N)を選択し、その選択した変調部42nに、選択部17(図4)が出力する信号を供給する。
変調部42nは、第nの伝送レートでデータの送信が行われるように、選択部43を介して、アンテナ11に流れる電流としての搬送波を、選択部41から供給される信号にしたがって変調する。ここで、変調部42nと変調部42n'(n≠n’)は、搬送波を、異なる伝送レートで変調する。従って、図6の変調部19は、第1乃至第NのN通りの伝送レートでデータを送信することができるようになっている。なお、N通りの伝送レートとしては、例えば、図5の復調部13が復調することができるのと同一の伝送レートを採用することができる。
選択部43は、制御部21の制御にしたがい、N個の変調部421乃至42Nの中から、選択部41が選択するのと同一の変調部42nを選択し、その変調部42nと、アンテナ11とを電気的に接続する。
以上のように構成される変調部19では、制御部21(図4)は、例えば、選択部41に、N個の変調部421乃至42Nを順次選択させ、これにより、変調部421乃至42Nそれぞれに、選択部41から供給される信号にしたがい、選択部43を介して、アンテナ11に流れる電流としての搬送波を変調させる。
従って、変調部19では、N通りの伝送レートのうちの任意の伝送レートでデータが送信されるように、搬送波を変調してデータを送信することができる。
なお、図4の負荷変調部20は、例えば、図6の変調部19と同様に構成されるため、その説明は、省略する。
以上から、NFC通信装置1乃至3では、搬送波を、N通りの伝送レートのうちのいずれかの伝送レートで送信されるデータの信号に変調するとともに、N通りの伝送レートのうちのいずれかの伝送レートで送信されてくるデータの信号を復調することができる。そして、N通りの伝送レートには、例えば、上述したように、既存のICカードシステム(FeliCa方式など)などの近接通信において既に採用されている伝送レートと、それ以外の伝送レートとを含めることができる。従って、NFC通信装置1乃至3によれば、それぞれの間では、そのN通りの伝送レートのいずれの伝送レートでも、データのやりとりを行うことができる。さらに、NFC通信装置1乃至3によれば、既存のICカードシステムを構成するICカードやリーダ/ライタとの間でも、そのICカードやリーダ/ライタが採用している伝送レートで、データのやりとりを行うことができる。
そして、その結果、NFC通信装置1乃至3を、既存の近接通信が採用されているサービスに導入しても、ユーザが混乱等することはなく、従って、その導入を容易に行うことができる。さらに、将来登場することが予想される高速なデータレートによる近接通信が採用されるサービスにも、既存の近接通信との共存を図りながら、NFC通信装置1乃至3を、容易に導入することができる。
また、NFC通信装置1乃至3では、従来の近接通信で採用されていたパッシブモードの他、自身が電磁波を出力することによってデータを送信するアクティブモードでのデータ伝送が可能であるため、リーダ/ライタ等の他の装置を介さなくても、データのやりとりを直接行うことができる。
次に、図7は、図4の復調部13の他の構成例を示している。なお、図中、図5における場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。即ち、図7の復調部13は、選択部31が設けられていない他は、図5における場合と基本的に同様に構成されている。
即ち、図7の実施の形態では、受信部12が出力する信号は、復調部321乃至32Nに、同時に供給され、復調部321乃至32Nでは、受信部12からの信号が同時に復調される。そして、制御部21は、例えば、受信部12からの信号を正常に復調することができた復調部32nを認識し、その復調部32nを出力するように、選択部33を制御する。選択部33は、制御部21の制御にしたがい、復調部32nを選択し、これにより、復調部32nで得られた正常な復調出力が、デコード部14に供給される。
なお、図7の実施の形態では、復調部321乃至32Nに、常に、復調動作を行わせる必要がある。これに対して、図5の実施の形態では、復調部321乃至32Nのうちの、選択部31に選択されているものだけに復調動作を行わせ、他のものは動作を停止させておくことができる。従って、装置の消費電力を節約する観点からは、図7よりも、図5の構成の方が有利である。一方、正常な復調出力を早期に得る観点からは、図5よりも、図7の構成の方が有利である。
次に、図8は、図4の復調部13のさらに他の構成例を示している。
図8では、復調部13は、可変レート復調部51とレート検出部52から構成されている。
可変レート復調部51は、受信部12から供給される信号を、レート検出部52からの指示に応じた伝送レートの信号として復調し、その復調結果を、デコード部14に供給する。レート検出部52は、受信部12から供給される信号の伝送レートを検出し、その伝送レートの信号を復調するように、可変レート復調部51に指示する。
以上のように構成される復調部13では、受信部12が出力する信号が、可変レート復調部51とレート検出部52に供給される。レート検出部52は、受信部12から供給される信号の伝送レートが、例えば、第1乃至第NのN通りの伝送レートのうちのいずれであるかを検出し、その伝送レートの信号を復調するように、可変レート復調部51に指示する。そして、可変レート復調部51は、受信部12から供給される信号を、レート検出部52からの指示に応じた伝送レートの信号として復調し、その復調結果を、デコード部14に供給する。
次に、NFC通信装置1乃至3は、いずれも、最初に電磁波を出力して通信を開始するイニシエータになり得る。さらに、アクティブモードでは、NFC通信装置1乃至3は、イニシエータとなる場合でも、ターゲットとなる場合でも、自身で電磁波を出力する。
従って、NFC通信装置1乃至3が近接している状態で、そのうちの2以上が同時に電磁波を出力した場合には、コリジョン(collision)が生じ、通信を行うことができなくなる。
そこで、NFC通信装置1乃至3それぞれは、他の装置からの電磁波(によるRFフィールド)が存在するかどうかを検出し、存在しない場合にのみ、電磁波の出力を開始し、これにより、コリジョンを防止するようになっている。ここで、このように、他の装置からの電磁波が存在するかどうかを検出し、存在しない場合にのみ、電磁波の出力を開始する処理を、コリジョンを防止するという目的から、RFCA(RF Collision Avoidance)処理という。
RFCA処理には、イニシエータとなろうとするNFC通信装置(図1では、NFC通信装置1乃至3のうちの1以上)が最初に行う初期RFCA処理と、アクティブモードでの通信中において、電磁波の出力を開始するNFC通信装置が、その開始をしようとするごとに行うレスポンスRFCA処理との2つがある。初期RFCA処理であっても、レスポンスRFCA処理であっても、電磁波の出力を開始する前に、他の装置による電磁波が存在するかどうかを検出し、存在しない場合にのみ、電磁波の出力を開始するという点は同一である。但し、初期RFCA処理とレスポンスRFCA処理とでは、他の装置による電磁波の存在が検出されなくなってから、電磁波の出力を開始しなければならないタイミングまでの時間等が異なる。
そこで、まず図9を参照して、初期RFCA処理について説明する。
図9は、初期RFCA処理によって出力が開始される電磁波を示している。なお、図9において(後述する図10も同様)、横軸は時間を表し、縦軸は、NFC通信装置が出力する電磁波のレベルを表す。
イニシエータとなろうとするNFC通信装置は、常時、他の装置による電磁波の検出を行っており、他の装置による電磁波が、時間TIDT+n×TRFWだけ連続して検出されなかった場合、電磁波の出力を開始し、その出力から時間TIRFGだけ経過した後に、データ(コマンドを含む)の送信(Send Request)を開始する。
ここで、時間TIDT+n×TRFWにおけるTIDTは、初期遅延時間と呼ばれ、搬送波の周波数をfcで表すこととすると、例えば、4096/fcより大の値が採用される。nは、例えば、0以上3以下の整数で、乱数を用いて生成される。TRFWは、RF待ち時間と呼ばれ、例えば、512/fcが採用される。時間TIRFGは、初期ガードタイムと呼ばれ、例えば、5msより大の値が採用される。
なお、電磁波が検出されてはならない時間TIDT+n×TRFWに、乱数であるnを採用することにより、複数のNFC通信装置が同一のタイミングで、電磁波の出力を開始してしまう可能性の低減が図られている。
NFC通信装置が、初期RFCA処理によって、電磁波の出力を開始した場合、そのNFC通信装置は、イニシエータとなるが、その際、通信モードとして、アクティブモードが設定されたときには、イニシエータとなったNFC通信装置は、自身のデータの送信を終了した後、電磁波の出力を停止する。一方、通信モードとして、パッシブモードが設定されたときには、イニシエータとなったNFC通信装置は、ターゲットとの通信が完全に完了するまで、初期RFCA処理によって開始した電磁波の出力を、そのまま続行する。
次に、図10は、レスポンスRFCA処理によって出力が開始される電磁波を示している。
アクティブモードにおいて電磁波を出力しようとするNFC通信装置は、他の装置による電磁波の検出を行い、他の装置による電磁波が、時間TADT+n×TRFWだけ連続して検出されなかった場合、電磁波の出力を開始し、その出力から時間TARFGだけ経過した後に、データの送信(Send Response)を開始する。
ここで、時間TADT+n×TRFWにおけるnとTRFWは、図9の初期RFCA処理における場合と同一のものである。また、時間TADT+n×TRFWにおけるTADTは、アクティブディレイタイムと呼ばれ、例えば、768/fc以上2559/fc以下の値が採用される。時間TARFGは、アクティブガードタイムと呼ばれ、例えば、1024/fcより大の値が採用される。
図9と図10から明らかなように、初期RFCA処理によって電磁波の出力を開始するには、少なくとも初期遅延時間TIDTの間、電磁波が存在してはならず、レスポンスRFCA処理によって電磁波の出力を開始するには、少なくともアクティブディレイタイムTADTの間、電磁波が存在してはならない。
そして、初期遅延時間TIDTは、4096/fcより大の値であるのに対して、アクティブディレイタイムTADTは、768/fc以上2559/fc以下の値であることから、NFC通信装置がイニシエータになろうとする場合には、アクティブモードでの通信中において電磁波を出力しようとする場合よりも、電磁波が存在しない状態が長時間必要である。逆に言えば、NFC通信装置がアクティブモードでの通信中において電磁波を出力しようとする場合には、イニシエータになろうとする場合よりも、電磁波が存在しない状態になってから、それほど間をおかずに、電磁波を出力しなければならない。これは、次のような理由による。
即ち、NFC通信装置がアクティブモードで通信を行う場合、一方のNFC通信装置は、自身で電磁波を出力してデータを送信し、その後、電磁波の出力を停止する。そして、他方のNFC通信装置が電磁波の出力を開始し、データを送信する。従って、アクティブモードの通信では、いずれのNFC通信装置も、電磁波の出力を停止していることがある。このため、NFC通信装置がイニシエータになろうとする場合には、そのNFC通信装置の周囲でアクティブモードの通信が行われていないことを確認するために、イニシエータになろうとしているNFC通信装置の周囲で、他の装置が電磁波を出力していないことを、十分な時間確認する必要がある。
これに対して、アクティブモードでは、上述したように、イニシエータが電磁波を出力することにより、ターゲットにデータを送信する。そして、ターゲットは、イニシエータが電磁波の出力を停止してから、電磁波の出力を開始することにより、イニシエータにデータを送信する。その後、イニシエータは、ターゲットが電磁波の出力を停止してから、電磁波の出力を開始することにより、イニシエータにデータを送信し、以下、同様にして、イニシエータとターゲットの間でデータがやりとりされる。
従って、アクティブモードの通信を行っているイニシエータとターゲットの周囲に、イニシエータとなろうとするNFC通信装置が存在する場合に、アクティブモードの通信を行っているイニシエータとターゲットのうちの一方が電磁波の出力を停止してから、他方が電磁波の出力を開始するまでの時間が長いと、その間は電磁波が存在しないため、イニシエータとなろうとするNFC通信装置が、初期RFCA処理によって電磁波の出力を開始する。この場合、先に行われていたアクティブモードの通信が妨げられることになる。
このため、アクティブモードの通信中に行われるレスポンスRFCA処理では、電磁波が存在しない状態になってから、それほど間をおかずに、電磁波を出力しなければならないようにしている。
次に、イニシエータになろうとするNFC通信装置は、図9で説明したように、初期RFCA処理によって電磁波の出力を開始し、その後、データの送信を行う。イニシエータになろうとするNFC通信装置は、電磁波の出力を開始することで、イニシエータとなり、そのイニシエータに近接する位置に存在するNFC通信装置はターゲットとなるが、イニシエータが、ターゲットとデータのやりとりをするには、そのデータをやりとりするターゲットを特定しなければならない。このため、イニシエータは、初期RFCA処理によって電磁波の出力を開始した後に、そのイニシエータに近接する位置に存在する1以上のターゲットに対して、各ターゲットを特定する情報としてのNFCID(NFC Identification)を要求する。そして、イニシエータに近接する位置に存在するターゲットは、イニシエータからの要求に応じて、自身を特定するNFCIDを、イニシエータに送信する。
イニシエータは、以上のようにしてターゲットから送信されてくるNFCIDによってターゲットを特定し、その特定したターゲットとの間で、データのやりとりを行うが、イニシエータが、その周囲(近接する位置)に存在するターゲットを、そのNFCIDによって特定する処理は、SDD(Single Device Detection)処理と呼ばれる。
ここで、SDD処理において、イニシエータは、ターゲットのNFCIDを要求するが、この要求は、イニシエータが、ポーリングリクエストフレームと呼ばれるフレームを送信することによって行われる。ターゲットは、ポーリングリクエストフレームを受信すると、例えば、自身のNFCIDを乱数によって決定し、そのNFCIDを配置したポーリングレスポンスフレームと呼ばれるフレームを送信する。イニシエータは、ターゲットから送信されてくるポーリングレスポンスフレームを受信することで、ターゲットのNFCIDを認識する。
ところで、イニシエータが、その周囲のターゲットに対して、そのNFCIDを要求した場合、イニシエータの周囲に、複数のターゲットが存在するときには、その複数のターゲットの2以上から、同時に、NFCIDが送信されてくることがあり得る。この場合、その2以上のターゲットから送信されてくるNFCIDがコリジョンし、イニシエータは、そのコリジョンしたNFCIDを認識することができない。
そこで、SDD処理は、NFCIDのコリジョンをなるべく避けるために、例えば、タイムスロットを用いた方法で行われる。
即ち、図11は、タイムスロットを用いた方法により行われるSDD処理のシーケンスを示している。なお、図11では、イニシエータの周囲に、5つのターゲット#1,#2,#3,#4,#5が存在するものとしてある。
SDD処理では、イニシエータがポーリングリクエストフレームを送信するが、その送信の完了後、所定の時間Tdだけおいて、所定の時間Tsの幅のタイムスロットが設けられる。なお、時間Tdは、例えば、512×64/fcとされ、タイムスロットの幅としての時間Tsは、例えば、256×64/fcとされる。また、タイムスロットは、例えば、時間的に最も先行するものから、0からのシーケンシャルな番号(整数)が付されることによって特定される。
ここで、図11では、タイムスロット#0,#1,#2,#3の4つを示してあるが、タイムスロットは、例えば、16まで設けることが可能である。あるポーリングリクエストフレームに対して設けられるタイムスロットの数TSNは、イニシエータが指定し、ポーリングリクエストフレームに含められて、ターゲットに送信される。
ターゲットは、イニシエータから送信されてくるポーリングリクエストフレームを受信し、そのポーリングリクエストフレームに配置されているタイムスロットの数TSNを認識する。さらに、ターゲットは、0以上TSN−1の範囲の整数Rを、乱数により生成し、その整数Rによって特定されるタイムスロット#Rのタイミングで、自身のNFCIDを配置したポーリングレスポンスフレームを送信する。
以上のように、ターゲットは、ポーリングレスポンスフレームを送信するタイミングとしてのタイムスロットを、乱数により決定するので、複数のターゲットがポーリングレスポンスフレームを送信するタイミングがばらつくこととなり、これにより、複数のターゲットが送信するポーリングレスポンスフレームどうしのコリジョンをなるべく避けることができる。
なお、ターゲットにおいて、ポーリングレスポンスフレームを送信するタイミングとしてのタイムスロットを、乱数により決定しても、複数のターゲットがポーリングレスポンスフレームを送信するタイムスロットが一致し、これにより、ポーリングレスポンスフレームのコリジョンが生じる場合がある。図11の実施の形態では、タイムスロット#0において、ターゲット#4のポーリングレスポンスフレームが、タイムスロット#1において、ターゲット#1と#3のポーリングレスポンスフレームが、タイムスロット#2において、ターゲット#5のポーリングレスポンスフレームが、タイムスロット#3において、ターゲット#2のポーリングレスポンスフレームが、それぞれ送信されており、ターゲット#1と#3のポーリングレスポンスフレームがコリジョンを生じている。
この場合、イニシエータは、コリジョンを生じているターゲット#1と#3のポーリングレスポンスフレームを正常に受信することができない。そのため、イニシエータは、再度、ポーリングリクエストフレームを送信し、これにより、ターゲット#1と#3に対して、それぞれのNFCIDが配置されたポーリングレスポンスフレームの送信を要求する。以下、イニシエータにおいて、その周囲にあるターゲット#1乃至#5すべてのNFCIDを認識することができるまで、イニシエータによるポーリングリクエストフレームの送信と、ターゲットによるポーリングレスポンスフレームの送信とが繰り返し行われる。
なお、イニシエータが、ポーリングリクエストフレームを再度送信した場合に、すべてのターゲット#1乃至#5が、ポーリングレスポンスフレームを返すこととすると、再び、ポーリングレスポンスフレームどうしがコリジョンを起こす可能性がある。そこで、ターゲットにおいては、イニシエータからポーリングリクエストフレームを受信した後、それほど時間をおかずに、ポーリングリクエストフレームを再度受信した場合には、例えば、そのポーリングリクエストフレームを無視するようにすることができる。但し、この場合、図11の実施の形態では、最初に送信されたポーリングリクエストフレームに対して、ポーリングレスポンスのコリジョンを生じているターゲット#1と#3については、イニシエータは、そのターゲット#1と#3のNFCIDを認識することができないので、ターゲット#1または#3との間でのデータのやりとりは、できないことになる。
そこで、イニシエータが、ポーリングレスポンスフレームを正常に受信し、そのNFCIDを認識することができたターゲット#2,#4,#5については、後述するように、通信対象から一時的にはずし、これにより、ポーリングリクエストフレームに対する応答としてのポーリングレスポンスフレームを返さないようにすることができる。この場合、イニシエータが送信する再度のポーリングリクエストフレームに対して、ポーリングレスポンスフレームを返してくるのは、最初のポーリングリクエストフレームの送信によってNFCIDを認識することができなかったターゲット#1と#3だけとなる。従って、この場合、ポーリングレスポンスフレームどうしがコリジョンを起こす可能性を小さくしながら、ターゲット#1乃至#5すべてのNFCIDを認識することが可能となる。
また、ここでは、ターゲットは、上述したように、ポーリングリクエストフレームを受信すると、自身のNFCIDを、乱数によって決定(生成)する。このため、異なるターゲットから、同一のNFCIDがポーリングレスポンスフレームに配置されて、イニシエータに送信されてくる場合があり得る。イニシエータにおいて、異なるタイムスロットにおいて、同一のNFCIDが配置されたポーリングレスポンスフレームが受信された場合、イニシエータには、例えば、ポーリングレスポンスフレームどうしがコリジョンを起こした場合と同様に、ポーリングリクエストフレームを再度送信させることができる。
ここで、上述したように、NFC通信装置は、既存のICカードシステムを構成するICカードやリーダ/ライタとの間でも、そのICカードやリーダ/ライタが採用している伝送レートで、データのやりとりを行うことができる。いま、ターゲットが、例えば、既存のICカードシステムのICカードである場合、SDD処理は、例えば、次のようにして行われる。
即ち、イニシエータは、初期RFCA処理により、電磁波の出力を開始し、ターゲットであるICカードは、その電磁波から電源を得て、処理を開始する。つまり、いまの場合、ターゲットは、既存のICカードシステムのICカードであるから、動作するための電源を、イニシエータが出力する電磁波から生成する。
ターゲットは、電源を得て、動作可能な状態になってから、例えば、最長でも2秒以内に、ポーリングリクエストフレームを受信する準備を行い、イニシエータからポーリングリクエストフレームが送信されてくるのを待つ。
一方、イニシエータは、ターゲットにおいてポーリングリクエストフレームを受信する準備が整ったかどうかに関係なく、ポーリングリクエストフレームを送信することができる。
ターゲットは、イニシエータからのポーリングリクエストフレームを受信した場合、上述したように、所定のタイムスロットのタイミングで、ポーリングレスポンスフレームを、イニシエータに送信する。イニシエータは、ターゲットからのポーリングレスポンスフレームを正常受信することができた場合、上述したように、そのターゲットのNFCIDを認識する。一方、イニシエータは、ターゲットからのポーリングレスポンスフレームを正常受信することができなかった場合、ポーリングリクエストフレームを、再度送信することができる。
なお、いまの場合、ターゲットは、既存のICカードシステムのICカードであるから、動作するための電源を、イニシエータが出力する電磁波から生成する。このため、イニシエータは、初期RFCA処理によって開始した電磁波の出力を、ターゲットとの通信が完全に終了するまで続行する。
次に、NFC通信装置では、イニシエータがターゲットにコマンドを送信し、ターゲットが、イニシエータからのコマンドに対するレスポンスを送信する(返す)ことで、通信が行われる。
そこで、図12は、イニシエータがターゲットに送信するコマンドと、ターゲットがイニシエータに送信するレスポンスとを示している。
図12において、アンダーバー(_)の後にREQの文字が記述されているものは、コマンドを表し、アンダーバー(_)の後にRESの文字が記述されているものは、レスポンスを表す。図12の実施の形態では、コマンドとして、ATR_REQ,WUP_REQ,PSL_REQ,DEP_REQ,DSL_REQ,RLS_REQの6種類が用意されており、コマンドに対するレスポンスとしても、コマンドと同様に、ATR_RES,WUP_RES,PSL_RES,DEP_RES,DSL_RES,RLS_RESの6種類が用意されている。上述したように、イニシエータは、コマンド(リクエスト)をターゲットに送信し、ターゲットは、そのコマンドに対応するレスポンスをイニシエータに送信するので、コマンドは、イニシエータによって送信され、レスポンスは、ターゲットによって送信される。
コマンドATR_REQは、イニシエータが、ターゲットに対して、自身の属性(仕様)を知らせるとともに、ターゲットの属性を要求するときに、ターゲットに送信される。ここで、イニシエータまたはターゲットの属性としては、そのイニシエータまたはターゲットが送受信することのできるデータの伝送レートなどがある。なお、コマンドATR_REQには、イニシエータの属性の他、そのイニシエータを特定するNFCIDなどが配置され、ターゲットは、コマンドATR_REQを受信することにより、イニシエータの属性とNFCIDを認識する。
レスポンスATR_RESは、ターゲットが、コマンドATR_REQを受信した場合に、そのコマンドATR_REQに対する応答として、イニシエータに送信される。レスポンスATR_RESには、ターゲットの属性やNFCIDなどが配置される。
なお、コマンドATR_REQやレスポンスATR_RESに配置される属性としての伝送レートの情報には、イニシエータやターゲットが送受信することのできるデータの伝送レートすべてを含めることができる。この場合、イニシエータとターゲットとの間で、コマンドATR_REQとレスポンスATR_RESのやりとりが1度行われるだけで、イニシエータは、ターゲットが送受信可能な伝送レートを認識することができ、ターゲットも、イニシエータが送受信可能な伝送レートを認識することができる。
コマンドWUP_REQは、イニシエータが、通信するターゲットを選択するときに送信される。即ち、後述するコマンドDSL_REQを、イニシエータからターゲットに送信することにより、ターゲットを、ディセレクト(deselect)状態(イニシエータへのデータの送信(レスポンス)を禁止した状態)とすることができるが、コマンドWUP_REQは、そのディセレクト状態を解いて、ターゲットを、イニシエータへのデータの送信を可能にする状態とする場合に送信される。なお、コマンドWUP_REQには、ディセレクト状態を解くターゲットのNFCIDが配置され、コマンドWUP_REQを受信したターゲットのうち、そのコマンドWUP_REQに配置されているNFCIDによって特定されるターゲットが、ディセレクト状態を解く。
レスポンスWUP_RESは、コマンドWUP_REQを受信したターゲットのうち、そのコマンドWUP_REQに配置されているNFCIDによって特定されるターゲットが、ディセレクト状態を解いた場合にコマンドWUP_REQに対する応答として送信される。
コマンドPSL_REQは、イニシエータが、ターゲットとの通信に関する通信パラメータを変更するときに送信される。ここで、通信パラメータとしては、例えば、イニシエータとターゲットとの間でやりとりするデータの伝送レートなどがある。
コマンドPSL_REQには、変更後の通信パラメータの値が配置され、イニシエータからターゲットに送信される。ターゲットは、コマンドPSL_REQを受信し、そこに配置されている通信パラメータの値にしたがって、通信パラメータを変更する。さらに、ターゲットは、コマンドPSL_REQに対するレスポンスPSL_RESを送信する。
コマンドDEP_REQは、イニシエータが、データ(いわゆる実データ)の送受信(ターゲットとの間のデータ交換)を行うときに送信され、そこには、ターゲットに送信すべきデータが配置される。レスポンスDEP_RESは、ターゲットが、コマンドDEP_REQに対する応答として送信し、そこには、イニシエータに送信すべきデータが配置される。従って、コマンドDEP_REQによって、イニシエータからターゲットにデータが送信され、そのコマンドDEP_REQに対するレスポンスDEP_RESによって、ターゲットからイニシエータにデータが送信される。
コマンドDSL_REQは、イニシエータが、ターゲットをディセレクト状態とするときに送信される。コマンドDSL_REQを受信したターゲットは、そのコマンドDSL_REQに対するレスポンスDSL_RESを送信してディセレクト状態となり、以後、コマンドWUP_REQ以外のコマンドには反応しなくなる(レスポンスを返さなくなる)。
コマンドRLS_REQは、イニシエータが、ターゲットとの通信を完全に終了するときに送信される。コマンドRLS_REQを受信したターゲットは、そのコマンドRLS_REQに対するレスポンスRLS_RESを送信し、イニシエータとの通信を完全に終了する。
ここで、コマンドDSL_REQとRLS_REQは、いずれも、ターゲットを、イニシエータとの通信の対象から解放する点で共通する。しかしながら、コマンドDSL_REQによって解放されたターゲットは、コマンドWUP_REQによって、再び、イニシエータと通信可能な状態となるが、コマンドRLS_REQによって解放されたターゲットは、イニシエータとの間で、上述したポーリングリクエストフレームとポーリングレスポンスフレームのやりとりが行われないと、イニシエータと通信可能な状態とならない。かかる点で、コマンドDSL_REQとRLS_REQは、異なる。
なお、コマンドとレスポンスのやりとりは、例えば、トランスポート層で行うことができる。
次に、図13のフローチャートを参照して、NFC通信装置の通信処理について説明する。
NFC通信装置は、通信を開始する場合、まず最初に、ステップS1において、他の装置による電磁波を検出したかどうかを判定する。
ここで、NFC通信装置(図4)では、例えば、受信部12が復調部13に出力する信号のレベルを、制御部21が監視しており、ステップS1では、そのレベルに基づき、他の装置による電磁波を検出したかどうかが判定される。
ステップS1において、他の装置による電磁波が検出されなかったと判定された場合、ステップS2に進み、NFC通信装置は、その通信モードを、パッシブモードまたはアクティブモードに設定し、後述するパッシブモードのイニシエータの処理またはアクティブモードのイニシエータの処理を行う。そして、NFC通信装置は、その処理の終了後、ステップS1に戻り、以下、同様の処理を繰り返す。
ここで、ステップS2においては、NFC通信装置の通信モードは、上述したように、パッシブモードまたはアクティブモードのうちのいずれに設定してもかまわない。但し、ターゲットが、既存のICカードシステムのICカードなどのパッシブモードのターゲットにしかなり得ない場合は、ステップS2では、NFC通信装置は、その通信モードを、パッシブモードに設定し、パッシブモードのイニシエータの処理を行う必要がある。
一方、ステップS1において、他の装置による電磁波が検出されたと判定された場合、即ち、NFC通信装置の周辺で、他の装置による電磁波が検出された場合、ステップS3に進み、NFC通信装置は、ステップS1で検出された電磁波が検出され続けているかどうかを判定する。
ステップS3において、電磁波が検出され続けていると判定された場合、ステップS4に進み、NFC通信装置は、その通信モードを、パッシブモードに設定し、後述するパッシブモードのターゲットの処理を行う。即ち、電磁波が検出され続けている場合というのは、例えば、NFC通信装置に近接する他の装置が、パッシブモードのイニシエータとなって、初期RFCA処理によって出力を開始した電磁波を出力し続けているケースであり、NFC通信装置は、パッシブモードのターゲットとなって処理を行う。そして、その処理の終了後は、ステップS1に戻り、以下、同様の処理が繰り返される。
また、ステップS3において、電磁波が検出され続けていないと判定された場合、ステップS5に進み、NFC通信装置は、その通信モードを、アクティブモードに設定し、後述するアクティブモードのターゲットの処理を行う。即ち、電磁波が検出され続けていない場合というのは、例えば、NFC通信装置に近接する他の装置が、アクティブモードのイニシエータとなって、初期RFCA処理によって電磁波の出力を開始し、その後、その電磁波の出力を停止したケースであるから、NFC通信装置は、アクティブモードのターゲットとなって処理を行う。そして、その処理の終了後は、ステップS1に戻り、以下、同様の処理が繰り返される。
次に、図14のフローチャートを参照して、NFC通信装置によるパッシブモードのイニシエータの処理について説明する。
パッシブモードのイニシエータの処理では、まず最初に、ステップS11において、NFC通信装置は、電磁波の出力を開始する。なお、このパッシブモードのイニシエータの処理におけるステップS11は、上述の図13のステップS1において、電磁波が検出されなかった場合に行われる。即ち、NFC通信装置は、図13のステップS1において、電磁波が検出されなかった場合に、ステップS11において、電磁波の出力を開始する。従って、ステップS1およびS11の処理が、上述の初期RFCA処理に相当する。
その後、ステップS12に進み、NFC通信装置は、伝送レートを表す変数nを、初期値としての、例えば、1にセットし、ステップS13に進む。ステップS13では、NFC通信装置は、第nの伝送レート(以下、適宜、第nレートともいう)で、ポーリングリクエストフレームを送信し、ステップS14に進む。ステップS14では、NFC通信装置は、他の装置から、第nレートで、ポーリングレスポンスフレームが送信されてきたかどうかを判定する。
ステップS14において、他の装置から、ポーリングレスポンスフレームが送信されてきていないと判定された場合、即ち、例えば、NFC通信装置に近接する他の装置が、第nレートでの通信を行うことができず、第nレートで送信したポーリングリクエストフレームに対するポーリングレスポンスフレームが返ってこない場合、ステップS15乃至S17をスキップして、ステップS18に進む。
また、ステップS14において、他の装置から、第nレートで、ポーリングレスポンスフレームが送信されてきたと判定された場合、即ち、例えば、NFC通信装置に近接する他の装置が、第nレートでの通信を行うことができ、第nレートで送信したポーリングリクエストフレームに対するポーリングレスポンスフレームが返ってきた場合、ステップS15に進み、NFC通信装置は、そのポーリングレスポンスフレームを返してきた他の装置をパッシブモードのターゲットとして、そのターゲットのNFCIDを、ポーリングレスポンスフレームに配置されているNFCIDによって認識するとともに、そのターゲットが第nレートで通信可能であることを認識する。
ここで、NFC通信装置は、ステップS15において、パッシブモードのターゲットのNFCIDと、そのターゲットが第nレートで通信可能であることを認識すると、そのターゲットとの間の伝送レートを、第nレートに(一時的に)決定し、そのターゲットとは、コマンドPSL_REQによって伝送レートが変更されない限り、第nレートで通信を行う。
その後、ステップS16に進み、NFC通信装置は、ステップS15で認識したNFCIDのターゲット(パッシブモードのターゲット)に、コマンドDSL_REQを、第nレートで送信し、これにより、そのターゲットが、以後送信されるポーリングリクエストフレームに応答しないように、ディセレクト状態にして、ステップS17に進む。
ステップS17では、NFC通信装置は、ステップS16で送信したコマンドDSL_REQに対して、そのコマンドDSL_REQによりディセレクト状態とされるターゲットが返してくるレスポンスDSL_RESを受信し、ステップS18に進む。
ステップS18では、NFC通信装置は、ステップS13でポーリングリクエストフレームを、第nレートで送信してから、所定の時間が経過したかどうかを判定する。ここで、ステップS18における所定の時間は、0以上の時間とすることができる。
ステップS18において、ステップS13でポーリングリクエストフレームを、第nレートで送信してから、まだ、所定の時間が経過していないと判定された場合、ステップS14に戻り、以下、ステップS14乃至S18の処理が繰り返される。
ここで、ステップS14乃至S18の処理が繰り返されることにより、NFC通信装置は、図11で説明したように、異なるタイムスロットのタイミングで送信されてくるポーリングレスポンスフレームを受信することができる。
一方、ステップS18において、ステップS13でポーリングリクエストフレームを、第nレートで送信してから、所定の時間が経過したと判定された場合、ステップS19に進み、NFC通信装置は、変数nが、その最大値であるNに等しいかどうかを判定する。ステップS19において、変数nが、最大値Nに等しくないと判定された場合、即ち、変数nが最大値N未満である場合、ステップS20に進み、NFC通信装置は、変数nを1だけインクリメントして、ステップS13に戻り、以下、ステップS13乃至S20の処理が繰り返される。
ここで、ステップS13乃至S20の処理が繰り返されることにより、NFC通信装置は、N通りの伝送レートで、ポーリングリクエストフレームを送信するとともに、各伝送レートで返ってくるポーリングレスポンスフレームを受信する。
一方、ステップS19において、変数nが、最大値Nに等しいと判定された場合、即ち、NFC通信装置が、N通りの伝送レートで、ポーリングリクエストフレームを送信するとともに、各伝送レートで返ってくるポーリングレスポンスフレームを受信した場合、ステップS21に進み、NFC通信装置は、パッシブモードのイニシエータとして、その通信処理(パッシブモードのイニシエータの通信処理)を行う。ここで、パッシブモードのイニシエータの通信処理については、後述する。
そして、パッシブモードのイニシエータの通信処理が終了すると、NFC通信装置は、ステップS21からS22に進み、ステップS11で出力を開始した電磁波の出力を停止し、処理を終了する。
次に、図15のフローチャートを参照して、NFC通信装置によるパッシブモードのターゲットの処理について説明する。
パッシブモードのターゲットの処理では、まず最初に、ステップS31において、NFC通信装置は、伝送レートを表す変数nを、初期値としての、例えば、1にセットし、ステップS32に進む。ステップS32では、NFC通信装置は、パッシブモードのイニシエータとなっている他の装置から、第nレートで、ポーリングリクエストフレームが送信されてきたかどうかを判定する。
ステップS32において、パッシブモードのイニシエータから、ポーリングリクエストフレームが送信されてきていないと判定された場合、即ち、例えば、NFC通信装置に近接する他の装置が、第nレートでの通信を行うことができず、第nレートでポーリングリクエストフレームを送信することができない場合、ステップS33に進み、NFC通信装置は、変数nが、その最大値であるNに等しいかどうかを判定する。ステップS33において、変数nが、最大値Nに等しくないと判定された場合、即ち、変数nが最大値N未満である場合、ステップS34に進み、NFC通信装置は、変数nを1だけインクリメントして、ステップS32に戻り、以下、ステップS32乃至S34の処理が繰り返される。
また、ステップS33において、変数nが、最大値Nに等しいと判定された場合、ステップS31に戻り、以下、ステップS31乃至S34の処理が繰り返される。即ち、ここでは、パッシブモードのイニシエータから、N通りの伝送レートのうちのいずれかで送信されてくるポーリングリクエストフレームを受信することができるまで、ステップS31乃至S34の処理が繰り返される。
そして、ステップS32において、パッシブモードのイニシエータから、ポーリングリクエストフレームが送信されてきたと判定された場合、即ち、NFC通信装置が、第nレートのポーリングリクエストフレームを正常受信した場合、ステップS35に進み、NFC通信装置は、イニシエータの間の伝送レートを第nレートに決定するとともに、乱数によって、自身のNFCIDを生成し、ステップS36に進む。ステップS36では、NFC通信装置は、自身のNFCIDを配置したポーリングレスポンスフレームを、第nレートで送信し、ステップS37に進む。
ここで、NFC通信装置は、ステップS36でポーリングレスポンスフレームを、第nレートで送信した後は、パッシブモードのイニシエータからコマンドPSL_REQが送信されてくることによって伝送レートの変更が指示されない限り、第nレートで通信を行う。
ステップS37では、NFC通信装置は、パッシブモードのイニシエータから、コマンドDSL_REQが送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS37に戻り、パッシブモードのイニシエータからコマンドDSL_REQが送信されてくるのを待つ。
また、ステップS37において、パッシブモードのイニシエータから、コマンドDSL_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドDSL_REQを受信した場合、ステップS38に進み、NFC通信装置は、コマンドDSL_REQに対するレスポンスDSL_RESを送信し、ディセレクト状態となって、ステップS39に進む。
ステップS39では、NFC通信装置は、パッシブモードのターゲットとして、その通信処理(パッシブモードのターゲットの通信処理)を行い、そのパッシブモードのターゲットの通信処理が終了すると、処理を終了する。なお、パッシブモードのターゲットの通信処理については、後述する。
次に、図16のフローチャートを参照して、NFC通信装置によるアクティブモードのイニシエータの処理について説明する。
アクティブモードのイニシエータの処理では、ステップS51乃至S61において、図14のパッシブモードのイニシエータの処理のステップS11乃至S21における場合とそれぞれ同様の処理が行われる。但し、図14のパッシブモードのイニシエータの処理では、NFC通信装置は、その処理が終了するまで、電磁波を出力し続けるが、アクティブモードのイニシエータの処理では、NFC通信装置は、データを送信するときだけ、電磁波を出力する点が異なる。
即ち、ステップS51において、NFC通信装置は、電磁波の出力を開始する。なお、このアクティブモードのイニシエータの処理におけるステップS51は、上述の図13のステップS1において、電磁波が検出されなかった場合に行われる。即ち、NFC通信装置は、図13のステップS1において、電磁波が検出されなかった場合に、ステップS51において、電磁波の出力を開始する。従って、ステップS1およびS51の処理が、上述の初期RFCA処理に相当する。
その後、ステップS52に進み、NFC通信装置は、伝送レートを表す変数nを、初期値としての、例えば、1にセットし、ステップS53に進む。ステップS53では、NFC通信装置は、第nレートで、ポーリングリクエストフレームを送信して、電磁波の出力を停止し(以下、適宜、RFオフ処理を行う、ともいう)、ステップS54に進む。
ここで、ステップS53では、NFC通信装置は、ポーリングリクエストフレームを送信する前に、上述のアクティブRFCA処理によって電磁波の出力を開始する。但し、変数nが初期値である1の場合は、ステップS1およびS51の処理に対応する初期RFCA処理によって、既に電磁波の出力が開始されているので、アクティブRFCA処理を行う必要はない。
ステップS54では、NFC通信装置は、他の装置から、第nレートで、ポーリングレスポンスフレームが送信されてきたかどうかを判定する。
ステップS54において、他の装置から、ポーリングレスポンスフレームが送信されてきていないと判定された場合、即ち、例えば、NFC通信装置に近接する他の装置が、第nレートでの通信を行うことができず、第nレートで送信したポーリングリクエストフレームに対するポーリングレスポンスフレームが返ってこない場合、ステップS55乃至S57をスキップして、ステップS58に進む。
また、ステップS54において、他の装置から、第nレートで、ポーリングレスポンスフレームが送信されてきたと判定された場合、即ち、例えば、NFC通信装置に近接する他の装置が、第nレートでの通信を行うことができ、第nレートで送信したポーリングリクエストフレームに対するポーリングレスポンスフレームが返ってきた場合、ステップS55に進み、NFC通信装置は、そのポーリングレスポンスフレームを返してきた他の装置をアクティブモードのターゲットとして、そのターゲットのNFCIDを、ポーリングレスポンスフレームに配置されているNFCIDによって認識するとともに、そのターゲットが第nレートで通信可能であることを認識する。
ここで、NFC通信装置は、ステップS55において、アクティブモードのターゲットのNFCIDと、そのターゲットが第nレートで通信可能であることを認識すると、そのターゲットとの間の伝送レートを、第nレートに決定し、そのターゲットとは、コマンドPSL_REQによって伝送レートが変更されない限り、第nレートで通信を行う。
その後、ステップS56に進み、NFC通信装置は、アクティブRFCA処理によって電磁波の出力を開始し、ステップS55で認識したNFCIDのターゲット(アクティブモードのターゲット)に、コマンドDSL_REQを、第nレートで送信する。これにより、そのターゲットは、以後送信されるポーリングリクエストフレーム等に応答しないディセレクト状態となる。その後、NFC通信装置は、RFオフ処理を行い、ステップS56からS57に進む。
ステップS57では、NFC通信装置は、ステップS56で送信したコマンドDSL_REQに対して、そのコマンドDSL_REQによりディセレクト状態とされるターゲットが返してくるレスポンスDSL_RESを受信し、ステップS58に進む。
ステップS58では、NFC通信装置は、ステップS53でポーリングリクエストフレームを、第nレートで送信してから、所定の時間が経過したかどうかを判定する。
ステップS58において、ステップS53でポーリングリクエストフレームを、第nレートで送信してから、まだ、所定の時間が経過していないと判定された場合、ステップS54に戻り、以下、ステップS54乃至S58の処理が繰り返される。
一方、ステップS58において、ステップS53でポーリングリクエストフレームを、第nレートで送信してから、所定の時間が経過したと判定された場合、ステップS59に進み、NFC通信装置は、変数nが、その最大値であるNに等しいかどうかを判定する。ステップS59において、変数nが、最大値Nに等しくないと判定された場合、即ち、変数nが最大値N未満である場合、ステップS60に進み、NFC通信装置は、変数nを1だけインクリメントして、ステップS53に戻り、以下、ステップS53乃至S60の処理が繰り返される。
ここで、ステップS53乃至S60の処理が繰り返されることにより、NFC通信装置は、N通りの伝送レートで、ポーリングリクエストフレームを送信するとともに、各伝送レートで返ってくるポーリングレスポンスフレームを受信する。
一方、ステップS59において、変数nが、最大値Nに等しいと判定された場合、即ち、NFC通信装置が、N通りの伝送レートで、ポーリングリクエストフレームを送信するとともに、各伝送レートで返ってくるポーリングレスポンスフレームを受信した場合、ステップS61に進み、NFC通信装置は、アクティブモードのイニシエータとして、その通信処理(アクティブモードのイニシエータの通信処理)を行い、その後、処理を終了する。ここで、アクティブモードのイニシエータの通信処理については、後述する。
次に、図17のフローチャートを参照して、NFC通信装置によるアクティブモードのターゲットの処理について説明する。
アクティブモードのターゲットの処理では、ステップS71乃至S79において、図15のパッシブモードのターゲットの処理のステップS31乃至S39における場合とそれぞれ同様の処理が行われる。但し、図15のパッシブモードのターゲットの処理では、NFC通信装置は、パッシブモードのイニシエータが出力する電磁波を負荷変調することによってデータを送信するが、アクティブモードのターゲットの処理では、NFC通信装置は、自身で電磁波を出力してデータを送信する点が異なる。
即ち、アクティブモードのターゲットの処理では、ステップS71乃至S75において、図15のステップS31乃至S35における場合とそれぞれ同一の処理が行われる。
そして、ステップS75の処理後、ステップS76に進み、NFC通信装置は、アクティブRFCA処理によって電磁波の出力を開始し、自身のNFCIDを配置したポーリングレスポンスフレームを、第nレートで送信する。さらに、ステップS76では、NFC通信装置は、RFオフ処理を行い、ステップS77に進む。
ここで、NFC通信装置は、ステップS76でポーリングレスポンスフレームを、第nレートで送信した後は、アクティブモードのイニシエータからコマンドPSL_REQが送信されてくることによって伝送レートの変更が指示されない限り、第nレートで通信を行う。
ステップS77では、NFC通信装置は、アクティブモードのイニシエータから、コマンドDSL_REQが送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS77に戻り、アクティブモードのイニシエータからコマンドDSL_REQが送信されてくるのを待つ。
また、ステップS77において、アクティブモードのイニシエータから、コマンドDSL_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドDSL_REQを受信した場合、ステップS78に進み、NFC通信装置は、アクティブRFCA処理によって電磁波の出力を開始し、コマンドDSL_REQに対するレスポンスDSL_RESを送信する。さらに、ステップS78では、NFC通信装置は、RFオフ処理を行い、ディセレクト状態となって、ステップS79に進む。
ステップS79では、NFC通信装置は、アクティブモードのターゲットとして、その通信処理(アクティブモードのターゲットの通信処理)を行い、そのアクティブモードのターゲットの通信処理が終了すると、処理を終了する。なお、アクティブモードのターゲットの通信処理については、後述する。
次に、図18および図19のフローチャートを参照して、図14のステップS21におけるパッシブモードのイニシエータの通信処理について説明する。
パッシブモードのイニシエータであるNFC通信装置は、ステップS91において、通信する装置(以下、適宜、注目装置という)を、図14のステップS15でNFCIDを認識したターゲットの中から選択し、ステップS92に進む。ステップS92では、コマンドWUP_REQを、注目装置に送信し、これにより、図14のステップS16でコマンドDSL_REQを送信することによりディセレクト状態とした注目装置の、そのディセレクト状態を解除する(以下、適宜、ウエイクアップする、ともいう)。
その後、NFC通信装置は、注目装置が、コマンドWUP_REQに対するレスポンスWUP_RESを送信してくるのを待って、ステップS92からS93に進み、そのレスポンスWUP_RESを受信して、ステップS94に進む。ステップS94では、NFC通信装置は、コマンドATR_REQを、注目装置に送信する。そして、NFC通信装置は、注目装置が、コマンドATR_REQに対するレスポンスATR_RESを送信してくるのを待って、ステップS94からS95に進み、そのレスポンスATR_RESを受信する。
ここで、NFC通信装置および注目装置が、以上のようにして、属性が配置されるコマンドATR_REQとレスポンスATR_RESをやりとりすることで、NFC通信装置および注目装置は、互いに相手が通信可能な伝送レートなどを認識する。
その後、ステップS95からS96に進み、NFC通信装置は、コマンドDSL_REQを、注目装置に送信し、注目装置を、ディセレクト状態にする。そして、NFC通信装置は、注目装置が、コマンドDSL_REQに対するレスポンスDSL_RESを送信してくるのを待って、ステップS96からS97に進み、そのレスポンスDSL_RESを受信して、ステップS98に進む。
ステップS98では、NFC通信装置は、図14のステップS15でNFCIDを認識したターゲットすべてを、ステップS91で注目装置として選択したかどうかを判定する。ステップS98において、NFC通信装置が、まだ、注目装置として選択していないターゲットがあると判定した場合、ステップS91に戻り、NFC通信装置は、まだ、注目装置として選択していないターゲットのうちの1つを新たに注目装置として選択し、以下、同様の処理を繰り返す。
また、ステップS98において、NFC通信装置が、図14のステップS15でNFCIDを認識したターゲットすべてを、ステップS91で注目装置として選択したと判定した場合、即ち、NFC通信装置が、NFCIDを認識したターゲットすべてとの間で、コマンドATR_REQとレスポンスATR_RESをやりとりし、これにより、各ターゲットが通信可能な伝送レートなどを認識することができた場合、ステップS99に進み、NFC通信装置は、通信する装置(注目装置)を、ステップS94とS95でコマンドATR_REQとレスポンスATR_RESをやりとりしたターゲットの中から選択し、ステップS100に進む。
ステップS100では、NFC通信装置は、コマンドWUP_REQを、注目装置に送信し、これにより、ステップS96でコマンドDSL_REQを送信することによってディセレクト状態とした注目装置をウエイクアップする。そして、NFC通信装置は、注目装置が、コマンドWUP_REQに対するレスポンスWUP_RESを送信してくるのを待って、ステップS100からS101に進み、そのレスポンスWUP_RESを受信して、図19のステップS111に進む。
ステップS111では、NFC通信装置は、注目装置と通信を行う際の伝送レートなどの通信パラメータを変更するかどうかを判定する。
ここで、NFC通信装置は、図18のステップS95でレスポンスATR_RESを、注目装置から受信しており、そのレスポンスATR_RESに配置された属性に基づき、注目装置が通信可能な伝送レート等の通信パラメータを認識している。NFC通信装置は、例えば、注目装置との間で、現在の伝送レートよりも高速の伝送レートで通信可能な場合、伝送レートをより高速な伝送レートに変更すべく、ステップS111において、通信パラメータを変更すると判定する。また、NFC通信装置は、例えば、注目装置との間で、現在の伝送レートよりも低速の伝送レートで通信可能であり、かつ、現在の通信環境がノイズレベルの高い環境である場合、伝送エラーを低下するために、伝送レートをより低速な伝送レートに変更すべく、ステップS111において、通信パラメータを変更すると判定する。なお、NFC通信装置と注目装置との間で、現在の伝送レートと異なる伝送レートで通信可能な場合であっても、現在の伝送レートのままで通信を続行することは可能である。
ステップS111において、注目装置と通信を行う際の通信パラメータを変更しないと判定された場合、即ち、NFC通信装置と注目装置との間で、現在の伝送レートなどの現在の通信パラメータのままで、通信を続行する場合、ステップS112乃至S114をスキップして、ステップS115に進む。
また、ステップS111において、注目装置と通信を行う際の通信パラメータを変更すると判定された場合、ステップS112に進み、NFC通信装置は、その変更後の通信パラメータの値を、コマンドPSL_REQに配置して、注目装置に送信する。そして、NFC通信装置は、注目装置が、コマンドPSL_REQに対するレスポンスPSL_RESを送信してくるのを待って、ステップS112からS113に進み、そのレスポンスPSL_RESを受信して、ステップS114に進む。
ステップS114では、NFC通信装置は、注目装置との通信を行う際の伝送レートなどの通信パラメータを、ステップS112で送信したコマンドPSL_REQに配置した通信パラメータの値に変更する。NFC通信装置は、以後、注目装置との間で、再び、コマンドPSL_REQとレスポンスPSL_RESのやりとりをしない限り、ステップS114で変更された値の伝送レートなどの通信パラメータにしたがい、注目装置との通信を行う。
なお、コマンドPSL_REQとレスポンスPSL_RESのやりとり(ネゴシエーション)によれば、伝送レート以外の、例えば、図4のエンコード部16(デコード部14)のエンコード方式や、変調部19および負荷変調部20(復調部13)の変調方式などの変更も行うことが可能である。
その後、ステップS115に進み、NFC通信装置は、注目装置との間で送受信すべきデータがあるかどうかを判定し、ないと判定された場合、ステップS116およびS117をスキップして、ステップS118に進む。
また、ステップS115において、注目装置との間で送受信すべきデータがあると判定された場合、ステップS116に進み、NFC通信装置は、コマンドDEP_REQを注目装置に送信する。ここで、ステップS116では、NFC通信装置は、注目装置に送信すべきデータがある場合には、そのデータを、コマンドDEP_REQに配置して送信する。
そして、NFC通信装置は、注目装置が、コマンドDEP_REQに対するレスポンスDEP_RESを送信してくるのを待って、ステップS116からS117に進み、そのレスポンスDEP_RESを受信して、ステップS118に進む。
以上のように、NFC通信装置と注目装置との間で、コマンドDEP_REQとレスポンスDEP_RESがやりとりされることにより、いわゆる実データの送受信が行われる。
ステップS118では、NFC通信装置は、通信相手を変更するかどうかを判定する。ステップS118において、通信相手を変更しないと判定された場合、即ち、例えば、まだ、注目装置との間でやりとりするデータがある場合、ステップS111に戻り、以下、同様の処理が繰り返される。
また、ステップS118において、通信相手を変更すると判定された場合、即ち、例えば、注目装置との間でやりとりするデータはないが、他の通信相手とやりとりするデータがある場合、ステップS119に進み、NFC通信装置は、コマンドDSL_REQまたはRLS_REQを注目装置に送信する。そして、NFC通信装置は、注目装置が、コマンドDSL_REQまたはRLS_REQに対するレスポンスDSL_RESまたはRLS_RESを送信してくるのを待って、ステップS119からS120に進み、そのレスポンスDSL_RESまたはRLS_RESを受信する。
ここで、上述したように、NFC通信装置が、注目装置に対して、コマンドDSL_REQまたはRLS_REQを送信することにより、その注目装置としてのターゲットは、イニシエータとしてのNFC通信装置との通信の対象から解放される。但し、コマンドDSL_REQによって解放されたターゲットは、コマンドWUP_REQによって、再び、イニシエータと通信可能な状態となるが、コマンドRLS_REQによって解放されたターゲットは、イニシエータとの間で、上述したポーリングリクエストフレームとポーリングレスポンスフレームのやりとりが行われないと、イニシエータと通信可能な状態とならない。
なお、あるターゲットが、イニシエータとの通信の対象から解放されるケースとしては、上述のように、イニシエータからターゲットに対して、コマンドDSL_REQまたはRLS_REQが送信される場合の他、例えば、イニシエータとターゲットとが離れすぎて、近接通信を行うことができなくなった場合がある。この場合は、コマンドRLS_REQによって解放されたターゲットと同様に、ターゲットとイニシエータとの間で、ポーリングリクエストフレームとポーリングレスポンスフレームのやりとりが行われないと、イニシエータと通信可能な状態とならない。
ここで、以下、適宜、ターゲットとイニシエータとの間で、ポーリングリクエストフレームとポーリングレスポンスフレームのやりとりが行われないと、イニシエータと通信可能にならないターゲットの解放を、完全解放という。また、イニシエータからコマンドWUP_REQが送信されることによって、再び、イニシエータと通信可能となるターゲットの解放を、一時解放という。
ステップS120の処理後は、ステップS121に進み、NFC通信装置は、図14のステップS15でNFCIDを認識したターゲットすべてが完全解放されたかどうかを判定する。ステップS121において、NFCIDを認識したターゲットすべてが、まだ完全解放されていないと判定された場合、図18のステップS99に戻り、NFC通信装置は、完全解放されていないターゲット、即ち、一時解放されているターゲットの中から、新たに注目装置を選択し、以下、同様の処理を繰り返す。
また、ステップS121において、NFCIDを認識したターゲットすべてが完全解放されたと判定された場合、処理を終了する。
なお、図19のステップS116とS117において、コマンドDEP_REQとレスポンスDEP_RESがやりとりされることにより、ターゲットとイニシエータとの間で、データの送受信(データ交換)が行われるが、このコマンドDEP_REQとレスポンスDEP_RESのやりとりが、1つのトランザクションである。ステップS116とS117の処理後は、ステップS118,S111,S112,S113を介して、ステップS114に戻ることが可能であり、通信パラメータを変更することができる。従って、ターゲットとイニシエータとの間の通信に関する伝送レートなどの通信パラメータは、1つのトランザクションごとに変更することが可能である。
また、ステップS112とS113において、イニシエータとターゲットの間で、コマンドPSL_REQとレスポンスPSL_RESをやりとりすることにより、ステップS114では、通信パラメータの1つであるイニシエータとターゲットの通信モードを変更することが可能である。従って、ターゲットとイニシエータの通信モードは、1つのトランザクションごとに変更することが可能である。なお、このことは、ターゲットとイニシエータの通信モードを、1つのトランザクションの間は、変更してはならないことを意味する。
次に、図20のフローチャートを参照して、図15のステップS39におけるパッシブモードのターゲットの通信処理について説明する。
パッシブモードのターゲットであるNFC通信装置は、図15のステップS37およびS38において、パッシブモードのイニシエータとの間で、コマンドDSL_REQとレスポンスDSL_RESのやりとりをしているので、ディセレクト状態となっている。
そこで、ステップS131において、NFC通信装置は、イニシエータからコマンドWUP_REQが送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS131に戻り、ディセレクト状態のままとされる。
また、ステップS131において、イニシエータからコマンドWUP_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドWUP_REQを受信した場合、ステップS132に進み、NFC通信装置は、コマンドWUP_REQに対するレスポンスWUP_RESを送信し、ウエイクアップして、ステップS133に進む。
ステップS133では、NFC通信装置は、コマンドATR_REQが、イニシエータから送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS134をスキップして、ステップS135に進む。
また、ステップS133において、イニシエータから、コマンドATR_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドATR_REQを受信した場合、ステップS134に進み、NFC通信装置は、コマンドATR_REQに対するレスポンスATR_RESを送信し、ステップS135に進む。
ステップS135では、NFC通信装置は、コマンドDSL_REQが、イニシエータから送信されてきたかどうかを判定する。ステップS135において、イニシエータから、コマンドDSL_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドDSL_REQを受信した場合、ステップS136に進み、NFC通信装置は、コマンドDSL_REQに対するレスポンスDSL_RESを送信し、ステップS131に戻る。これにより、NFC通信装置は、ディセレクト状態となる。
一方、ステップS135において、イニシエータから、コマンドDSL_REQが送信されてきていないと判定された場合、ステップS137に進み、NFC通信装置は、コマンドPSL_REQが、イニシエータから送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS138およびS139をスキップして、ステップS140に進む。
また、ステップS137において、イニシエータから、コマンドPSL_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドPSL_REQを受信した場合、ステップS138に進み、NFC通信装置は、コマンドPSL_REQに対するレスポンスPSL_RESを送信し、ステップS139に進む。ステップS139では、NFC通信装置は、イニシエータからのコマンドPSL_REQにしたがい、その通信パラメータを変更し、ステップS140に進む。
ステップS140では、NFC通信装置は、イニシエータから、コマンドDEP_REQが送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS141をスキップして、ステップS142に進む。
また、ステップS140において、イニシエータから、コマンドDEP_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドDEP_REQを受信した場合、ステップS141に進み、NFC通信装置は、コマンドDEP_REQに対するレスポンスDEP_RESを送信し、ステップS142に進む。
ステップS142では、NFC通信装置は、イニシエータから、コマンドRSL_REQが送信されてきたかどうかを判定し、送信されてきていないと判定した場合、ステップS133に戻り、以下、同様の処理が繰り返される。
また、ステップS142において、イニシエータから、コマンドRSL_REQが送信されてきたと判定された場合、即ち、NFC通信装置がコマンドRSL_REQを受信した場合、ステップS143に進み、NFC通信装置は、コマンドRSL_REQに対するレスポンスRSL_RESを送信し、これにより、イニシエータとの通信を完全に終了して、処理を終了する。
次に、図21および図22は、図16のステップS61におけるアクティブモードのイニシエータの通信処理の詳細を示すフローチャートである。
なお、図18および図19で説明したパッシブモードのイニシエータの通信処理では、イニシエータが電磁波を出力し続けているが、図21および図22のアクティブモードのイニシエータの通信処理では、イニシエータが、コマンドを送信する前に、アクティブRFCA処理を行うことによって電磁波の出力を開始し、コマンドの送信の終了後に、その電磁波の出力を停止する処理(オフ処理)を行う。かかる点を除けば、図21のアクティブモードのイニシエータの通信処理では、ステップS151乃至S161と図22のステップS171乃至S181において、図18のステップステップS91乃至S101と図19のステップS111乃至S121における場合とそれぞれ同様の処理が行われるため、その説明は、省略する。
次に、図23は、図17のステップS79におけるアクティブモードのターゲットの通信処理の詳細を示すフローチャートである。
なお、図20で説明したパッシブモードのターゲットの通信処理では、ターゲットが、イニシエータが出力している電磁波を負荷変調することによってデータを送信するが、図23のアクティブモードのターゲットの通信処理では、ターゲットが、コマンドを送信する前に、アクティブRFCA処理を行うことによって電磁波の出力を開始し、コマンドの送信の終了後に、その電磁波の出力を停止する処理(オフ処理)を行う。かかる点を除けば、図23のアクティブモードのターゲットの通信処理では、ステップS191乃至S203において、図20のステップS131乃至S143における場合とそれぞれ同様の処理が行われるため、その説明は、省略する。
次に、NFC通信装置の通信では、例えば、NFCIP(Near Field Communication Interface and Protocol)-1と呼ばれる通信プロトコルが採用される。
図24乃至図29は、NFC通信装置による通信で採用されるNFCIP-1の詳細を説明する図である。
即ち、図24は、NFCIP-1による通信を行うNFC通信装置が行う一般的な初期化とSDDの処理を説明するフローチャートである。
まず最初に、ステップS301において、イニシエータとなるNFC通信装置は、初期RFCA処理を行い、ステップS302に進む。ステップS302では、イニシエータとなるNFC通信装置は、ステップS301の初期RFCA処理により、RFフィールドを検出したかどうかを判定する。ステップS302において、RFフィールドを検出したと判定された場合、ステップS301に戻り、以下、同様の処理が繰り返される。即ち、イニシエータとなるNFC通信装置は、RFフィールドを検出している間は、そのRFフィールドを形成している他のNFC通信装置による通信の妨げとならないように、RFフィールドを形成しない。
一方、ステップS302において、RFフィールドを検出していないと判定された場合、ステップS303に進み、NFC通信装置は、イニシエータとなって、通信モードと伝送レートの選択等を行う。
即ち、パッシブモードの通信を行う場合、ステップS302から、ステップS303を構成するステップS303−1とS303−2のうちのステップS303−1に進み、NFC通信装置は、イニシエータとなって、通信モードをパッシブモードに移行させ、伝送レートを選択する。さらに、ステップS303−1では、イニシエータとなったNFC通信装置は、初期化とSDD処理を行い、ステップS304を構成するステップS304−1とS304−2のうちのステップS304−1に進む。
ステップS304−1では、NFC通信装置は、パッシブモードでアクティベーション(活性化)(起動)し、ステップS305に進む。
一方、アクティブモードの通信を行う場合、ステップS302から、ステップS303を構成するステップS303−1とS303−2のうちのステップS303−2に進み、NFC通信装置は、イニシエータとなって、通信モードをアクティブモードに移行させ、伝送レートを選択し、ステップS304を構成するステップS304−1とS304−2のうちのステップS304−2に進む。
ステップS304−2では、NFC通信装置は、アクティブモードでアクティベーションし、ステップS305に進む。
ステップS305では、NFC通信装置は、通信に必要な通信パラメータを選択し、ステップS306に進む。ステップS306では、NFC通信装置は、ステップS305で選択した通信パラメータにしたがって、データ交換プロトコルによるデータ交換(通信)を行い、そのデータ交換の終了後、ステップS307に進む。ステップS307では、NFC通信装置は、ディアクティベーション(非活性化)し、トランザクションを終了する。
なお、NFC通信装置は、例えば、デフォルトで、ターゲットとなるように設定することができ、ターゲットに設定されているNFC通信装置は、RFフィールドを形成することはせず、イニシエータからコマンドが送信されてくるまで(イニシエータがRFフィールドを形成するまで)、待ち状態となる。
また、NFC通信装置は、例えば、アプリケーションからの要求に応じて、イニシエータとなることができる。さらに、例えば、アプリケーションでは、通信モードをアクティブモードまたはパッシブモードのうちのいずれにするかや、伝送レートを選択(決定)することができる。
また、イニシエータとなったNFC通信装置は、外部にRFフィールドが形成されていなければ、RFフィールドを形成し、ターゲットは、イニシエータによって形成されたRFフィールドによって活性化する。
その後、イニシエータは、選択された通信モードと伝送レートで、コマンドを送信し、ターゲットは、イニシエータと同一の通信モードと伝送レートで、レスポンスを返す(送信する)。
次に、図25は、イニシエータとなったNFC通信装置が行う初期化とSDDを説明するフローチャートである。
まず最初に、ステップS311において、イニシエータは、自身が形成したRFフィールド内に存在するターゲットを調査するためのコマンドSENS_REQを送信し、ステップS312に進む。ステップS312では、イニシエータは、自身が形成したRFフィールド内に存在するターゲットから送信されてくる、コマンドSENS_REQに対するレスポンスSENS_RESを受信し、ステップS313に進む。
ステップS313では、イニシエータは、ステップS312で受信したターゲットからのレスポンスSENS_RESの内容を確認する。即ち、レスポンスSENS_RESは、NFCID1サイズビットフレーム(NFCID1 size bit frame)やビットフレームSDDの情報などを含んでおり、ステップS313では、イニシエータは、それらの情報の内容を確認する。
その後、ステップS313からS314に進み、イニシエータは、カスケード(転送)レベル1(cascade level 1)を選択し、SDDを実行する。即ち、ステップS314では、イニシエータは、SDDを要求するコマンドSDD_REQを送信し、さらに、あるターゲットの選択を要求するコマンドSEL_REQを送信する。なお、コマンドSEL_REQには、現在のカスケードレベルを表す情報が配置される。
そして、イニシエータは、ターゲットから、コマンドSEL_REQに対するレスポンスSEL_RESが送信されてくるのを待って、そのレスポンスSEL_RESを受信し、ステップS315からS316に進む。
ここで、レスポンスSEL_RESには、ターゲットがNFCIP-1による通信を終了しない旨の情報、ターゲットがNFCトランスポートプロトコルに対応しており、NFCIP-1による通信を終了する旨の情報、またはターゲットがNFCトランスポートプロトコルに対応しておらず、NFCIP-1による通信を終了する旨の情報のうちのいずれかが含まれる。
ステップS316では、イニシエータは、ターゲットから受信したレスポンスSEL_RESの内容を確認し、レスポンスSEL_RESに、ターゲットがNFCIP-1による通信を終了しない旨の情報、ターゲットがNFCトランスポートプロトコルに対応しており、NFCIP-1による通信を終了する旨の情報、またはターゲットがNFCトランスポートプロトコルに対応しておらず、NFCIP-1による通信を終了する旨の情報のうちのいずれが含まれているかを判定する。
ステップS316において、レスポンスSEL_RESに、ターゲットがNFCIP-1による通信を終了しない旨の情報が含まれていると判定された場合、ステップS317に進み、イニシエータは、カスケードレベルを現在の値から増加する。そして、イニシエータは、ステップS317からS315に戻り、以下、同様の処理を繰り返す。
また、ステップS316において、レスポンスSEL_RESに、ターゲットがNFCトランスポートプロトコルに対応しており、NFCIP-1による通信を終了する旨の情報が含まれていると判定された場合、イニシエータは、NFCIP-1による通信を終了し、ステップS319に進む。ステップS319では、イニシエータは、コマンドATR_REQを送信し、以下、イニシエータとターゲットとの間で、図12に示したコマンドとレスポンスとを用いた通信が行われる。
一方、ステップS316において、レスポンスSEL_RESに、ターゲットがNFCトランスポートプロトコルに対応しておらず、NFCIP-1による通信を終了する旨の情報が含まれていると判定された場合、イニシエータは、NFCIP-1による通信を終了し、ステップS318に進む。ステップS318では、イニシエータは、ターゲットとの間で、独自コマンドや独自プロトコルによる通信を行う。
次に、図26は、イニシエータとターゲットがアクティブモードで行う初期化を説明するタイミングチャートである。
イニシエータは、ステップS331において、初期RFCA処理を行い、ステップS332に進み、RFフィールドを形成する(RFフィールドをオンにする)。さらに、ステップS332では、イニシエータは、コマンド(Request)を送信し、RFフィールドの形成を停止する(RFフィールドをオフにする)。ここで、ステップS332では、イニシエータは、例えば、伝送レートを選択し、その伝送レートで、コマンドATR_REQを送信する。
一方、ターゲットは、ステップS333において、イニシエータがステップS332で形成したRFフィールドを検知し、さらに、イニシエータが送信してくるコマンドを受信して、ステップS334に進む。ステップS334では、ターゲットは、レスポンスRFCA処理を行い、イニシエータが形成したRFフィールドがオフにされるのを待って、ステップS335に進み、RFフィールドをオンにする。さらに、ステップS335では、ターゲットは、ステップS333で受信したコマンドに対するレスポンスを送信し、RFフィールドをオフにする。ここで、ステップS335では、ターゲットは、例えば、イニシエータから送信されてくるコマンドATR_REQに対するレスポンスATR_RESを、コマンドATR_REQと同一の伝送レートで送信する。
ターゲットがステップS335で送信したレスポンスは、ステップS336において、イニシエータによって受信される。そして、ステップS336からS337に進み、イニシエータは、レスポンスRFCA処理を行い、ターゲットが形成したRFフィールドがオフにされるのを待って、ステップS337に進み、RFフィールドをオンにする。さらに、ステップS337では、イニシエータは、コマンドを送信し、RFフィールドをオフにする。ここで、ステップS337では、イニシエータは、例えば、通信パラメータを変更するために、コマンドPSL_REQを送信することができる。また、ステップS337では、イニシエータは、例えば、コマンドDEP_REQを送信して、データ交換プロトコルによるデータ交換を開始することができる。
イニシエータがステップS337で送信したコマンドは、ステップS338において、ターゲットによって受信され、以下、同様にして、イニシエータとターゲットとの間で通信が行われる。
次に、図27のフローチャートを参照して、パッシブモードにおけるアクティベーションプロトコルを説明する。
まず最初に、ステップS351において、イニシエータは、初期RFCA処理を行い、ステップS352に進み、通信モードをパッシブモードとする。そして、ステップS353に進み、イニシエータは、初期化とSDDを行って、伝送レートを選択する。
その後、ステップS354に進み、イニシエータは、ターゲットに属性を要求するかどうかを判定する。ステップS354において、ターゲットに属性を要求しないと判定された場合、ステップS355に進み、イニシエータは、ターゲットとの通信を、独自プロトコルにしたがって行い、ステップS354に戻り、以下、同様の処理を繰り返す。
また、ステップS354において、ターゲットに属性を要求すると判定された場合、ステップS356に進み、イニシエータは、コマンドATR_REQを送信し、これにより、ターゲットに属性を要求する。そして、イニシエータは、ターゲットからコマンドATR_REQに対するレスポンスATR_RESが送信されてくるのを待って、ステップS357に進み、そのレスポンスATR_RESを受信して、ステップS358に進む。
ステップS358では、イニシエータは、ステップS357でターゲットから受信したレスポンスATR_RESに基づき、通信パラメータ、即ち、例えば、伝送レートを変更することができるかどうかを判定する。ステップS358において、伝送レートを変更することができないと判定された場合、ステップS359乃至S361をスキップして、ステップS362に進む。
また、ステップS358において、伝送レートを変更することができると判定された場合、ステップS359に進み、イニシエータは、コマンドPSL_REQを送信し、これにより、ターゲットに伝送レートの変更を要求する。そして、イニシエータは、コマンドPSL_REQに対するレスポンスPSL_RESがターゲットから送信されてくるのを待って、ステップS359からS360に進み、そのレスポンスPSL_RESを受信して、ステップS361に進む。ステップS361では、イニシエータは、ステップS360で受信したレスポンスPSL_RESにしたがい、通信パラメータ、即ち、例えば、伝送レートを変更し、ステップS362に進む。
ステップS362では、イニシエータは、データ交換プロトコルにしたがい、ターゲットとの間でデータ交換を行い、その後、必要に応じて、ステップS363またはS365に進む。
即ち、イニシエータは、ターゲットをディセレクト状態にする場合、ステップS362からS363に進み、コマンドDSL_REQを送信する。そして、イニシエータは、コマンドDSL_REQに対するレスポンスDSL_RESがターゲットから送信されてくるのを待って、ステップS363からS364に進み、そのレスポンスDSL_RESを受信して、ステップS354に戻り、以下、同様の処理を繰り返す。
一方、イニシエータは、ターゲットとの通信を完全に終了する場合、ステップS362からS365に進み、コマンドRLS_REQを送信する。そして、イニシエータは、コマンドRLS_REQに対するレスポンスRLS_RESがターゲットから送信されてくるのを待って、ステップS365からS366に進み、そのレスポンスRLS_RESを受信して、ステップS351に戻り、以下、同様の処理を繰り返す。
次に、図28のフローチャートを参照して、アクティブモードにおけるアクティベーションプロトコルを説明する。
まず最初に、ステップS371において、イニシエータは、初期RFCA処理を行い、ステップS372に進み、通信モードをアクティブモードとする。そして、ステップS373に進み、イニシエータは、コマンドATR_REQを送信し、これにより、ターゲットに属性を要求する。そして、イニシエータは、ターゲットからコマンドATR_REQに対するレスポンスATR_RESが送信されてくるのを待って、ステップS374に進み、そのレスポンスATR_RESを受信して、ステップS375に進む。
ステップS375では、イニシエータは、ステップS374でターゲットから受信したレスポンスATR_RESに基づき、通信パラメータ、即ち、例えば、伝送レートを変更することができるかどうかを判定する。ステップS375において、伝送レートを変更することができないと判定された場合、ステップS376乃至S378をスキップして、ステップS379に進む。
また、ステップS375において、伝送レートを変更することができると判定された場合、ステップS376に進み、イニシエータは、コマンドPSL_REQを送信し、これにより、ターゲットに伝送レートの変更を要求する。そして、イニシエータは、コマンドPSL_REQに対するレスポンスPSL_RESがターゲットから送信されてくるのを待って、ステップS376からS377に進み、そのレスポンスPSL_RESを受信して、ステップS378に進む。ステップS378では、イニシエータは、ステップS377で受信したレスポンスPSL_RESにしたがい、通信パラメータ、即ち、例えば、伝送レートを変更し、ステップS379に進む。
ステップS379では、イニシエータは、データ交換プロトコルにしたがい、ターゲットとの間でデータ交換を行い、その後、必要に応じて、ステップS380またはS384に進む。
即ち、イニシエータは、いま通信を行っているターゲットをディセレクト状態にし、既にディセレクト状態になっているターゲットのうちのいずれかをウエイクアップさせる場合、ステップS379からS380に進み、コマンドDSL_REQを送信する。そして、イニシエータは、コマンドDSL_REQに対するレスポンスDSL_RESがターゲットから送信されてくるのを待って、ステップS380からS381に進み、そのレスポンスDSL_RESを受信する。ここで、レスポンスDSL_RESを送信してきたターゲットは、ディセレクト状態になる。
その後、ステップS381からS382に進み、イニシエータは、コマンドWUP_REQを送信する。そして、イニシエータは、コマンドWUP_REQに対するレスポンスWUP_RESがターゲットから送信されてくるのを待って、ステップS382からS383に進み、そのレスポンスWUP_RESを受信して、ステップS375に戻る。ここで、レスポンスWUP_RESを送信してきたターゲットはウエイクアップし、そのウエイクアップしたターゲットが、イニシエータがその後に行うステップS375以降の処理の対象となる。
一方、イニシエータは、ターゲットとの通信を完全に終了する場合、ステップS379からS384に進み、コマンドRLS_REQを送信する。そして、イニシエータは、コマンドRLS_REQに対するレスポンスRLS_RESがターゲットから送信されてくるのを待って、ステップS384からS385に進み、そのレスポンスRLS_RESを受信して、ステップS371に戻り、以下、同様の処理を繰り返す。
次に、図29は、NFCIP-1で使用されるNFCIP-1プロトコルコマンドと、そのコマンドに対するレスポンスとを示している。
なお、図29に示したコマンドおよびレスポンスは、図12に示したコマンドおよびレスポンスと同一である。但し、図12では、コマンドおよびレスポンスのニーモニック(名称)(Mnemonic)だけを示したが、図29では、ニーモニックの他、コマンドの定義(Definitions)も示してある。
コマンドATR_REQ,WUP_REQ ,PSL_REQ,DEP_REQ,DSL_REQ,RLS_REQは、イニシエータが送信し、レスポンスATR_REQ,WUP_RES ,PSL_RES,DEP_RES,DSL_RES,RLS_RESは、ターゲットが送信する。
但し、コマンドWUP_REQは、イニシエータがアクティブモード時にのみ送信し、レスポンスWUP_RESは、ターゲットがアクティブモード時にのみ送信する。
なお、本明細書において、NFC通信装置が行う処理を説明する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。