一種采用曼碼調制的非接觸IC卡讀寫程序編制
文章出處:http://srpd123.com 作者:邢中柱 人氣: 發(fā)表時間:2011年10月22日
非接觸IC卡技術已廣泛應用于諸如電子交易,醫(yī)療保健憑證,駕車授權憑證,車輛加油管理系統(tǒng),家居、公司辦公通道,各種限權進入場所的門禁,各類電、水、熱能和煤氣計量表具的預付費系統(tǒng),乃至寵物識別等。因其使用便捷、安全,日益為有關技術領域的工程師所關注。
圖1 采用e5550/U2270B的非接觸卡讀寫系統(tǒng)示意圖非接觸IC卡是一種接口電路。它通過卡上配置的發(fā)射機應答器振蕩線圈與基站振蕩線圈的耦合取得能量,通過必要的通信軟件配合,保證卡與基站間實現(xiàn)雙向數據交換,如圖1所示。許多著名廠商,如Simens、Philips、Temic等半導體公司,均有各具特色、性能優(yōu)異的產品。
圖1 采用e5550/U2270B的非接觸卡讀寫系統(tǒng)示意圖
e5550的全稱是標準讀寫識別集成電路(Standard Read/Write Identification IC),實際即是一種低頻發(fā)射機應答器。它與基站讀寫集成電路(Read/Write Base Station IC)U2270B相匹配,構成非接觸IC卡系統(tǒng)的核心器件。這兩種器件統(tǒng)稱為非接觸式讀寫識別集成電路(其注冊商標為IDIC,以下簡稱IDIC或非接觸IC卡),均由德國本茨集團麾下的Telefunken半導體公司開發(fā),目前已轉由Atmel公司生產。因其工作可靠、價格低廉,不失為特定應用領域的一種優(yōu)選方案。
一、 e5550/ U2270B器件組的基本性能
e5550發(fā)射機應答器的基本性能如下:
(1) 低供電電壓、低功耗CMOS結構的IDIC。
(2) 發(fā)射機應答器的電源是通過非(直接)接觸的線圈耦合獲得。
(3) 額定的射頻(RF)振蕩頻率范圍為:100~150kHz。
(4) 發(fā)射機應答器上帶有EEPROM,共分8個(存儲)區(qū),每區(qū)有33個位,故總共有264個位(見表1)。
(5) 8個(存儲)區(qū)的首位分別為該區(qū)的寫保護位"L"。為"1"時,該區(qū)為只讀區(qū);為"0"時,該區(qū)為既可讀又可寫區(qū)。
(6) 8個(存儲)區(qū)中的第0區(qū)為工作方式數據存儲區(qū),通常是不發(fā)送的,而其他的7個區(qū)每個區(qū)中各有32位,即總共有224位供用戶使用。
(7) 具備增強防護功能,以免非接觸卡式EEPROM的誤編程。
(8)每一存儲區(qū)的寫操作時間一般不超過50ms。
(9) EEPROM操作的一些其他選項:
· 比特率(位傳送率 b/s)--RF/8,RF/16,RF/32,RF/40,RF/50,RF/64,RF/100,RF/128。
· 調制方式--二進制(BIN)、頻移鍵控(FSK)、相移鍵控(PSK)、曼徹斯特碼(Manchester)、雙相位碼(Biphase)。
· 其他--請求應答(AOR)、終止方式和口令方式。
U2270B基站讀寫器的基本性能如下:
(1) 載波頻率fOSC范圍為100~150kHz。
(2) fOSC為125kHz時,典型的數據傳送率為5kb/s。
(3) 適用的調制方式為曼徹斯特碼(簡稱曼碼)和雙相位碼。
(4) 可由5V的穩(wěn)壓電源或汽車蓄電池供電。
(5) 調諧能力。
(6) 與微控制器有兼容的接口。
(7) 處于備用工作方式時,其功耗甚低。
(8) 有一向微控制器供電的輸出端。
二、 非接觸IC卡的讀操作
現(xiàn)僅就IDIC通信中遇到的一些問題,并對通信的核心部分--讀寫操作做必要的探討。首先申明,所謂的讀寫,其意分別為:基站通過MCU進行"讀操作";基站通過MCU進行"寫操作"。
e5550和U2270B匹配使用時,根據兩者的基本特性,其調制方式只可能在曼碼和雙相位碼中擇一。不失一般性,選擇曼碼調制。曼碼調制時數據傳送的規(guī)則可用圖2加以說明。
圖2采用曼碼調制的數據表達方式由圖2可知,位數據的傳送周期(1P)規(guī)定了每傳送1位數據的時間是固定的,它由RF/n決定。其物理實質是微控制器通過基站與應答器中的存儲器(EEPROM)進行數據的讀寫操作。若載波頻率fOSC=125kHz,位數據傳送率選RF/32,則每傳送一位的時間(周期)為振蕩周期的32分頻,故位傳送周期為:
1P=1/(125kHz×32)=256μs
根據我們得到的器件,采用曼碼調制的數據,位數據"1"對應著電平下跳,位數據"0"對應著電平上跳(注意:Telefunken半導體公司提供的資料(Rev.A2,13-Oct-97)正好與此相反,故最好用前自己先測試一遍,切記?。?。在一串傳送的數據序列中,兩個相鄰的位數據傳送跳變時間間隔應為1P。若相鄰的位數據極性相同,則在該兩次位數據傳送的電平跳變之間,有一次非數據傳送的、預備性的(電平)"空跳"。
電平上跳、電平下跳和兩個相鄰的同極性位數據之間的預備性空跳是確定位數據傳送特征的判據。本判據被定義為判據一(位數據檢測指標)。
非接觸IC卡在讀操作時,另一須關注的問題是傳送的位數據序列起始標志和結束標志。廠商并未提供有關的資料,通過摸索,已基本掌握了其特征,為便于說明,請參見圖3。
圖3 曼碼調制的數據串起始/結束標志的時序特
圖3曼碼調制的數據串起始/結束標志的時序特征圖3中,stepcnt為讀操作步序,其確切含義見表2。
假定非接觸IC卡的存儲器內存放的位數據序列為一非空集,則在若干位數據的跳變后,檢測到一電平上跳,經過1.5P發(fā)生電平下跳,再經過0.5P又發(fā)生電平的上跳,則該上跳即為起始標志。起始標志即為結束標志。這意味著非接觸IC卡的存儲器內存放的數據包括起始標志(即結束標志)和位數據序列。讀操作時,是首尾相接、循環(huán)執(zhí)行的。
識別數據起始標志和數據結束標志,是通過參數stepcnt進行的順序化判別,故stepcnt為讀操作的判據二(首尾檢測指標)。
非接觸IC卡在讀操作時,第三個須要關注的問題是,如何確定1.5P、1P和0.5P三個特征判據?e5550和U2270B的射頻振蕩頻率范圍在100~150kHz,當位傳送率選擇RF/32時,即fOSC經過32分頻后,上述的三個參數在不同的fOSC時,處于什么樣的范圍內呢?請見表3。
由上可知,只要1.5P、1P和0.5P的間期是不重疊的。根據采用100~150kHz和110~140kHz兩組數據的對比可見,使用后者更合適。另一個辦法是:通過試驗,找到合適的間期指數,即可依此作為電平躍變的判別閾。這樣,在確保識別能力的前提下,又從工藝上降低了對于振蕩回路的頻率精度要求。
根據上述振蕩頻率的變化范圍110~140kHz,將編碼變化的不同間隔轉化成相應的間期指數,具體如表4所列。
1.5P、1P和0.5P是識別數據起始標志、位數據序列和數據結束標志的間期特征值。通過試驗,它可用間期指數prdcnt反映,故為讀操作的判據三(間期檢測指標)。
借助于上述的位數據檢測指標、首尾檢測指標和間期檢測指標,非接觸IC卡讀操作程序的撰寫便易如反掌。
三、 非接觸IC卡的寫操作
基站產生固定間隙的射頻振蕩,并通過控制兩個間隙之間的振蕩時間對位數據"1"和位數據"0"進行編碼,持續(xù)地發(fā)送位數據流,完成寫操作。寫操作射頻振蕩波形示意如圖4所示。
圖4 寫操作時的信號流
注:域時鐘(TEMIC公司提供的資料用fC表示)為一時間間隔,若頻率為125kHz,fC=1/125kHz=8μs。
圖4寫操作時的信號流非接觸IC卡插入基站后,射頻線圈的耦合產生載波振蕩,利用兩次相鄰停振之間的不同時間間隔,區(qū)分位數據"1"和位數據"0"的編碼。停振間隙約在50~150域時鐘;位數據"0"的持續(xù)振蕩時間間隔為24域時鐘;位數據"1"的持續(xù)振蕩時間間隔為56域時鐘。當停振間隙結束后,持續(xù)振蕩的時間間隔高于64域時鐘,則IDIC退出寫操作方式。
考慮到寫操作啟動(start)時,有一頻率穩(wěn)定過程,寫操作停止(stop)時,有一EEPROM的寫入過程約16ms,于是將start和stop兩個階段均以20ms計。圖4中標注的trnssqnc為發(fā)送順序編號,啟動階段為0,位數據流發(fā)送階段為1,發(fā)送結束階段為2。
基站讀寫器上有三個引腳:bsout、bscfe和bsin,它們的含義見表5。
向e5550寫位數據時,有四種合法的數據流,具體如圖5所示。其中,OP為操作類型碼,包含兩位,"10"表示即將進行的是寫操作,"11"為終止IDIC操作碼。多IDIC操作情況下,用這一特性可逐一控制應答器,使待控應答器逐一產生穩(wěn)定的射頻振蕩。當方式數據區(qū)的第28位(usePWD)為"1"時,在寫操作碼"10"之后,即須將32位的口令(password)寫入EEPROM的第7區(qū)。位數據流有33位,是按區(qū)寫入的。其中的第一位為鎖定位L,L="1"表示該區(qū)為只讀區(qū),L="0"表示該區(qū)為讀寫區(qū),其余的32位為位數據。ADR為該位數據流的存放數據區(qū),取值范圍為0~7。
根據上述的載波振蕩特性,利用carriercnst參數進行界定(見表6),讀操作即不難實現(xiàn)。讀寫操作過程中,均使用了2μs為單位的計數值作為定時單位,目的是要使用MCS-51系列的微控制器的定時器。
結束語
通過以上說明,再認真地研讀有關的技術資料,采用曼碼調制的非接觸IC卡讀寫程序便不難編制。當然,實現(xiàn)IDIC的完整功能,還需要其他的一些程序模塊,如數據存儲格式、編碼的加密算法,一次讀/寫操作中若出錯,則須重復進行讀/寫操作、究竟重復幾次、讀/寫操作過程在超時后退出等,這些均可根據應用對象的需求予以相應的解決。有關采用曼碼調制的非接觸IC卡讀寫程序請見程序清單。