FeliCa简介
最近學習NFC,此文章僅作為自己知識的整理,學習。
????Felica技術并不是一個完全公開的協(xié)議,尤其是該技術涉及安全認證和加密的部分,SONY的保密做的很好。本文介紹的也僅是其公開的部分信息。
????Felica技術的通訊協(xié)議包括三層:物理層描述數(shù)據(jù)傳輸?shù)奈锢砗碗姎馓匦? 數(shù)據(jù)鏈路層描述數(shù)據(jù)傳輸和錯誤檢測的格式;應用層描述命令的功能和規(guī)范.
????Felica射頻傳輸?shù)奈锢硖匦匀缦卤硭?/p>
?Felica射頻接口的物理特性
| 數(shù)據(jù)傳輸方法 | 半雙工同步系統(tǒng) |
| 載波頻率 | 13.56MHz |
| 調制方法 | ASK |
| 位編碼方法 | Manchester編碼,MSB在前 |
| 數(shù)據(jù)傳輸速率 | 212/424 kbps |
?
????Felica卡片和讀寫器之間的數(shù)據(jù)傳輸使用數(shù)據(jù)包。數(shù)據(jù)包的格式如下:
數(shù)據(jù)包各部分定義
| 名稱 | 字節(jié)長度 | 定義 |
| 前導碼 | 6 | 00 00 00 00 00 00 |
| 同步碼 | 2 | B2 4D |
| 數(shù)據(jù)長度 | 1 | 包數(shù)據(jù)長度+1 |
| 包數(shù)據(jù) | n | 命令包或返回包中的數(shù)據(jù) |
| CRC | 2 | 基于CRC-CCITT的校驗, 初始值=0000H, 生成多項式:X16+X12+X5+1 |
?
????Felica技術應用層的命令包由命令碼和命令數(shù)據(jù)兩部分組成,包括1字節(jié)的命令碼和N字節(jié)的命令數(shù)據(jù)。命令碼標識命令的類型,命令數(shù)據(jù)為本條命令執(zhí)行所需的數(shù)據(jù)。讀卡器命令發(fā)出后卡片回復一個響應包,響應包由1字節(jié)響應碼和N字節(jié)響應數(shù)據(jù)兩部分組成。響應碼標識響應的類型,響應數(shù)據(jù)為本條命令執(zhí)行后卡片返回的數(shù)據(jù)。
????Felica命令列表如下:
| 命令 | 命令碼 | 響應碼 | 功能簡述 |
| 輪詢 | 00H | 01H | 探測識別卡片 |
| 請求服務 | 02H | 03H | 驗證卡片上是否存在指定的域或服務 |
| 請求響應 | 04H | 05H | 驗證射頻場中是否有卡 |
| 不需認證讀 | 06H | 07H | 從不需認證的服務中讀取數(shù)據(jù)塊 |
| 不需認證寫 | 08H | 09H | 向不需認證的服務中寫入數(shù)據(jù)塊 |
| 請求系統(tǒng)碼 | 0CH | 0DH | 讀取卡片上已注冊的系統(tǒng)碼 |
| 認證1 | 10H | 11H | 讀寫器認證卡片 |
| 認證2 | 12H | 13H | 卡片認證讀寫器 |
| 讀 | 14H | 15H | 從需認證的服務中讀取數(shù)據(jù)塊 |
| 寫 | 16H | 17H | 向需認證的服務中寫入數(shù)據(jù)塊 |
?
????Felica有兩個重要的參數(shù):出廠識別碼(IDm)和出廠參數(shù)(PMm)。IDm和PMm可以使用輪詢命令獲得,IDm和PMm在出廠時固化在卡片中,卡片出廠后不能修改。
????Felica使用出廠識別碼(IDm)在通訊中識別一張卡片。Idm包含制造商代碼和卡片識別碼兩部分。
????出廠參數(shù)(PMm)包括2字節(jié)的芯片類型(用來識別產(chǎn)品)和6字節(jié)的最大響應時間參數(shù)(用來確定每一條命令的超時時間)。
????Felica采用基于時隙的方法實現(xiàn)卡片的防沖突機制。為了識別一張卡片,讀寫器必須使用輪詢命令輪詢未知數(shù)量的卡片。卡片收到輪詢命令后,以隨機的方式選擇一個時隙,并在讀寫器呼叫該時隙時予以應答,從而實現(xiàn)防沖突。
????當讀寫器正確接收一個卡片對于輪詢命令的應答,讀寫器可以獲得卡片的Idm,在之后的通訊中,讀寫器通過在命令包中包含Idm,就可以從射頻場的多張卡片中唯一的指定一張進行通訊。卡片收到命令后將把自己的Idm與命令包中的Idm比對,如果不同卡片不會對命令做出反應。這種機制實現(xiàn)了射頻場中的卡片選擇。
總結
- 上一篇: 从底层重学 Java 之 Stream
- 下一篇: Hash冲突的解决--暴雪的Hash算法