當前位置:網站首頁>關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結

關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結

2022-01-27 15:47:48 xiaoyaoyou.xyz

關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結


1. 前言

由於之前使用的M1卡作為門禁卡時容易被複制的情况,目前選用了st25TV系列NFC來作為門禁卡,並啟用其帶有的數據區加密功能,讀取數據區數據時必須先發送密鑰,否則只能讀取卡號和0區,因此只要確保加密密鑰的不易破解性,那麼門禁卡也就不容易被複制了,針對該系列的讀寫程序已經開發完成,這裏總結一下相關坑點,避免後續走彎路。

2. ST25 NFC/RFID系列標簽介紹

這個可以通過st官網查看,有中文,目前主要包括:ST25TA、ST25TB、ST25TN、ST25TV幾個系列的NFC標簽,使用的場景和讀寫協議存在差异:https://www.st.com/zh/nfc/st25-nfc-rfid-tags.html

ST25TA:該系列產品支持NFC應用如標簽、NFC令牌、NFC智能標貼、NFC名片(虛擬卡)。它可用於包括消費電子、計算機外設、遊戲設備、家用電器、工業自動化和醫療產品在內的各種應用。(https://www.st.com/zh/nfc/st25ta-series-nfc-tags.html)

ST25TB:ST25TB系列RFID標簽兼容ISO14443標准,可以支持公共交通和活動票務等應用。 它們提供了先進的RF性能,包括計數超過40億次的計數器。(https://www.st.com/zh/nfc/st25tb-series-nfc-tags.html)

ST25TN:ST25TN系列可與Android/iOS NFC手機和NFC Forum兼容讀寫器通信,為各種消費者參與、產品信息和智能標簽場景提供非常廣泛的可能性。這種高性價比ST25TN系列面向多種應用,如遊戲、服飾鞋類、消費性包裝品、運動產業、酒水,並在成本與性能之間取得了良好的平衡。(https://www.st.com/zh/nfc/st25tn-series-nfc-tags.html)

ST25TV:ST25TV Type 5 NFC標簽IC是首個結合ISO/IEC 15693標准長距離通信的便利性和篡改檢測能力的解决方案。與其他NFC類型標簽相比,ST25TV標簽更容易被讀取,從而改進了產品設計的用戶體驗。產品設計者和制造商現在可以使用更小的NFC標簽和貼紙,這些標簽和貼紙更安全且更容易安裝,以增强與客戶的互動。這種獨特的解决方案可以在整個產品生命周期(從制造點到銷售點的消費者互動,以及後續階段)中使用。它賦予了日常消費品數字化生命。ST25TV標簽可用於基於雲管理的品牌保護,比如葡萄酒和白酒、藥品和奢侈品等不同應用領域的防偽/篡改檢測。它們還可以與遠程HF RFID讀寫器一起用於產品識別以及物流可追溯性應用。(https://www.st.com/zh/nfc/st25tv-series-nfc-tags.html)

3. ST25TV系列選擇

主要根據需要的存儲空間進行選擇,比如你需要1k左右的空間來存儲門禁數據擴展也不會太多,則可以使用ST25TV02K,其工作頻率為13.56 MHz的2-Kbit EEPROM標簽IC,具有64比特UID和密碼,基於ISO/IEC 15693和ISO/IEC 18000-3模式1,即2k字節的數據區空間,8字節的UID,可以基於ISO/IEC 15693協議進行讀寫。(選擇產品可以參考:https://www.st.com/zh/nfc/st25tv-series-nfc-tags.html#products)

4. ST25TV02K開發相關參考文檔

直接在文檔頁面下載數據手册和一些文檔:

https://www.st.com/zh/nfc/st25tv02k.html#documentation

5. ST25TV02K相關工具

https://www.st.com/zh/nfc/st25tv02k.html#tools-software

在這裏插入圖片描述

有相關的測試軟件可供使用,包括Windows PC、ios、Android等,對應的SDK是Java的。

6. stm32實現讀取st25TV02K NFC

6.1 方案選型

還是老問題了,之前我就說過,門禁這塊其實可以Android直接讀卡,但是原有方案使用stm32單片機來讀取,然後再通過串口發送給Android端,這個曆史緣由我也找到了,因為這部分的卡讀取方案是由一個沒有Android的stm32做的刷卡touch來的,為了快速在Android門禁機上實現,直接把這個touch的stm32通過Android上的串口連接起來了,Android端就不用再開發這塊了,直接定義協議和stm32交互就可以了(實際上Android端開發的話相關的sdk之類的更多更方便),真是個悲傷的故事。

6.2 基礎代碼框架

stm32讀取該NFC我們使用的15693協議,上面看到也可以使用18000-3,這塊可以直接在網上買相關的開發套件,一般會給到各種協議的示例程序。

如果沒有的話可以參考st這裏的固件源代碼:https://www.st.com/content/st_com/zh/products/embedded-software/st25-nfc-rfid-software/stsw-st25r002.html

是通過st的論壇找到的,但是你可能需要根據自己的情况進行調試:https://shequ.stmicroelectronics.cn/forum.php?mod=viewthread&tid=618387&extra=

在這裏插入圖片描述

根據自己的協議實現即可,15693這裏還是能用的,雖然沒有實現所有的接口,但是基礎的讀寫之類的都是有的,至少不用自己去整時序直接操作寄存器了:

在這裏插入圖片描述

6.3 結合數據手册實現新接口

這裏以st25v02k為例進行說明,如何借助上面st上找到的固件源碼實現其它的適用於本產品的接口。

下載datasheet這裏不再說了,一般是英文的,但是也有可能是中文的,比如st25v02k這個就是中文的,雖然仍然晦澀:

在這裏插入圖片描述

你需要先看一下對應包括哪些接口(我這裏所謂的接口就是指訪問設備時的協議實現接口):

在這裏插入圖片描述

從這裏可以看到Inventory、Select、Read Single Block、Write Single Block、Read Multiple Blocks、Get System information這些指令接口在搜到的固件源碼中已經有了,我們接下來實現新的接口就可以了,比如:Write Password、Present Password、Read Configuration、Write Configuration、Set Untraceable mode、Get Random Number。

但是有個問題,我們該實現哪些接口,這些接口如何組合使用,目前沒有好的方法,除非你買一個官方的開發板,裏面有現成的示例demo,否則你可能就得試了。

6.4 讀寫密碼需要實現的接口注意事項

接下來就是我們要實現的讀寫密碼這塊了,固件代碼中沒有這塊,我們要實現對st25v02K NFC的加密該如何做,讀數據前解密又如何做?根據數據手册,看起來write password是比較像寫密碼的,反正中間花了很多時間啃datasheet和嘗試,最終總算理清了整個處理過程,這裏總結一下。

寫密碼:初始化->選卡->獲取隨機數->發送密鑰->寫密碼->寫配置。

讀數據:初始化->選卡->獲取隨機數->發送密碼->讀數據。

注意點:

  • 1、present password相當於發送密碼進行校驗,出廠密碼為全0;
  • 2、寫完密碼後需要調用寫配置的接口修改卡狀態為加密狀態,卡不會自動根據密碼是不是全0修改自身狀態為加密狀態,需要自己修改配置,否則密碼寫進去了,下次判斷卡還是未加密狀態;
  • 3、每次讀數據前都需要發送密碼進行校驗,校驗通過才能調用讀取多塊數據的接口讀到數據,否則讀不到數據;
  • 4、判斷卡是否已加密可以通過讀配置這個接口來判斷;

7. 最後

目前主要用到的NFC卡大部分都是符合14443a、14443b、15693協議的,包括公交卡、身份證、門禁卡、手環手錶手機的NFC等等,所以找一個開發板研究一下這幾個協議對於NFC這塊的開發會比較有幫助;此外,封裝庫和sdk以及提供demo和幫助文檔對於芯片推廣是非常有必要的,否則直接去操作芯片恐怕大家集成起來會比較困難,持續性的提供維護和幫助服務也是非常重要的,比如Android開發和stm32開發的官方幫助文檔就比較全面,很多時候在官網中就可以找到很好的解决方案。

版權聲明
本文為[xiaoyaoyou.xyz]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201271547477701.html