IC 卡的概念是20 世紀70 年代初提出來的,法國布爾公司于1976 年首先創造出IC 卡產品,并將這項技術應用于金融、交通等多種行業,它將微電子技術和計算機技術結合在一起,提高了人們生活和工作的現代化程度。目前經營接觸到的IC 卡有兩種:接觸式和非接觸的IC 卡。接觸式的IC 卡通過機械觸點從讀寫器獲取能量和交換數據;非接觸式IC 卡通過線圈的射頻感應從讀寫器獲取能量和交換數據,所以又稱射頻卡。目前在社會上常見的是接觸式IC 卡。但是這類卡的讀寫操作速度較慢,容易損壞和搞臟而造成接觸不良。20 世紀90 年代問世的可用、可靠、可維護性更佳的非接觸IC卡,則將大量替代接觸式卡,成為IC 卡市場的主流。他的特點是:操作快捷方便,可靠性高、壽命長,防偽性好、安全性好、抗干擾能力強、一卡多用。
根據某家水表廠的要求,我們研制了一種新型的智能水表,我們主要對水表的讀卡控制器進行了設計,設計必須根據所使用卡的類型進行,所以首先對非接觸式IC 卡的選型進行討論,考到目前我國引進的非接觸式主要有Philips 的MIFARE STANDARDHHU(型號為MFI ICS50) 和ATMEL 的Temic 卡。S50 卡功能較強大,適合一卡多用,安全性好,但這種卡價格高,其有關數據加密的情況是保密的,開發它必須買Philips 公司的開發軟件,這樣使產品的開發成本很高。在滿足用戶要求的前提下,考慮到可開發性和經濟性等因素,這里我們選用ATMEL 的E5550 卡,使整個系統的設計成本大大降低。在水表讀卡控制器設計之前必須了解卡的工作原理,下面對這種卡進行詳細說明。
1 E5550 卡工作原理
對非接觸式IC 卡而言,有幾個方面應進行討論:(1) IC 卡如何取得工作電壓; (2) 數據存儲結構; (3) 數據的讀出與寫入。下面分別進行說明:
1.1 電壓的取得
如圖1 所示, E5550 卡由天線、高頻接口、存取控制和存儲器構成。由于IC 卡平時無法由外界供電,只有在與讀寫器通信時才能取得電源,所以在卡靠近讀寫器時100 mm ,讀寫器的振蕩電路通過的天線產生高頻的強磁場,磁力線的一部分穿過IC 卡的線圈,通過感應在IC 卡的天線產生一個電壓Ui ,該信號電壓通過卡內部的電容充電和整流電路得到IC 卡內部芯片所需的電源。
圖1:E5550通信示意圖
1.2 E5550 卡的數據存儲結構
如前述, IC 卡只有在與讀寫器通信時才能取得電源,這就決定了IC 卡中的存儲器不能是易失的隨機存儲器RAM ,或者不能改變內容的只讀存儲器ROM ,而只能是可電擦除的可編程的只讀存儲器EEPROM。其數據存儲結構如圖2 ,存儲容量為264 B ,共分成8個數據塊每塊33B。其中一塊(block0) 用于模式設置,一塊( block7) 用于口令設置, 其余六塊( block1 ~block6) 為用戶數據區。在每塊用戶數據存儲區, bitl為鎖定位,該位一但鎖定,該塊的其余32B 將變為只讀而不能改寫??诹顗K(block7) 由模式設置決定是存放口令還是用戶的一般數據。
圖2 數據存儲結構圖
1.3 E5550 卡數據的讀入與寫出
(a) 數據讀出。E5550 卡是利用線圈中產生的阻尼特性的載波信號向讀寫器傳送數據的。阻尼特性的載波信號由數據編碼后通過負載調制而得,負載調制是通過IC 卡開通/ 斷開負載的方法而實現的,預先可在塊0 中設定編碼方式為螺切斯特編碼。圖3a 表明阻尼特性的載波信號的產生過程。圖中負載波由IC卡的讀寫器載波信號16 分頻得到,曼切斯特編碼信號由數據(101010) 根據編碼規定得到,然后用負載波對編碼后的信號進行強制后笪以調制負載波。如圖3b所示,
圖3:E5550 卡上電后線圈產生的電壓
在卡接近讀寫器時,卡內接收到電源能量的信號后,首先產生上電復位過程,進入數據傳送狀態,將預先編程寫入EEPROM 0 區的模式字讀入模式寄存器,以便確定工作模式,如果模式規定為主動發送數據,這時就產生一個約2 ms 的恒定磁場。此后產生一個約320 us 的同步信號,接著便從第一塊的第一位開始傳送數據,可由塊終結符來保證與讀寫器同步,塊終結符是指每塊數據發送完后由IC 卡產生的,供讀寫器識別。每塊32 位,鎖定位不傳送,直到MAXBL K所設定的最大塊的最后一位為止,數據傳送時產生帶有阻尼作用的磁場信息,讀寫器的線圈接收該信息即可讀出數據。應當注意,當讀某塊時該塊之前的所有塊都要讀出。
(b) 數據寫入。在讀寫器完成對IC 卡的讀寫過程后可立即進行寫模式,讀寫器通過對線圈中電磁場能量的間隔性中斷將數據寫入卡中,如圖4a ,第一個間隙為觸發寫模式的開始間隙,較其他間隙稍長,大約為280μs ,以使IC 卡同步。其他個間隙時間為50~150μs ,兩間隙間的場時鐘編碼即為要傳送的一位“0”或“1”信息。“0”信息為16~32 個磁場脈沖構成的段,“1”信息為48~64 個磁場脈沖構成的段。最后一個間隙后至少應有64 個場時鐘,若連續場時鐘不足64 個場時鐘, IC 卡將退出寫操作。如圖4b ,在數據寫入前應先寫入操作碼“10”,然后才是數據,數據的第一位為鎖位,數據的寫入必須接塊進行,各塊可以獨立寫入,每塊33 位(含鎖定位:“0 不鎖定、“1”鎖定) ,塊后接著是3 位塊地址。無口令寫時每塊38 位,有口令操作時在操作碼之后加32 位口令,共需70 位。為防止卡在一次接近讀寫器時產生不必要的多次寫操作,可在寫完數據后發停止信號,操作碼為“11”,此后卡再不接收后寫入信號,直到下次上電位。
圖4:數據寫讀時序圖
傳統的收費由抄表人員抄表,工作量大,時間長,目前,國內以有許多廠家開始采用接觸式IC 卡的水表,此類水表在易污染的環境長期使用,會造成接觸不良現象,為了克服上述的缺點,所以我們研制了一種新型智能水表。該表采用現成的機械式水表為基表通過光電元件把水流量轉換成電信號,輸入單片機,并與表內由IC 卡預先讀入存儲器( EEPROM) 中的預置值進行計算扣除相應的量,在預置值減至最小設定值時,將發出信號提醒用戶夠水,否則預置值減為零后,水閥關閉,直至用戶重新夠水,經IC 卡讀入水表,才會開閥供水。外部采用金屬殼體對射頻信號有屏蔽作用。
2.1 電路工作原理
為了實現水表的功能,圖5 為讀卡控制器硬件電路原理圖,主要由U2270B 讀卡模塊、單片機、顯示器、存儲器、和監控電路、按鍵以及與PC 串行通信接口電路組成。我們這里主要介紹U22708B 讀寫器電路,其它的都是常規電路,不再作詳細介紹。
圖5:讀卡控制器硬件電路原理圖
1) 該公司生產芯片U22708 是與之配套的一種近距離非接觸式讀寫基站芯片,配少量外圍元件即可與單片機實現對接,他所產生的調制解調頻率為100~150 kHz ,工作電壓為5~10V。
主要引腳功能: input ,outup 分別為串行輸入,輸出端; coil1 , coil2 分別為天線線圈端; Vbat , Vext ,Standby 分別為備份電源,外部電池及待機控制;OE ,CEF 分別為輸出允許,載頻控制;HAPISS ,RF ,DVs 分別為直流退耦,射頻控制,天線驅動;CND ,DGND ,VS分別為模擬地、數字地、電源。
由U2270B 芯片與89C52 構成的E5550 卡讀寫電路如圖5 , P313 為輸入端, P314 為控制端,C1 及天線線圈組成125 kHz 的諧振電路。D5 、R5 、R6 、C5 構成解調器對天線信號進行解調然后經C4 耦合輸入芯片,在片內進行濾波,放大,整形等送入單片機。電阻R3 和R4 用于調節發射頻率,D1~D4 構成輸入反饋電路以穩定頻率,C2 構成芯片退耦電路。
2) 單片機采用89C52 作為控制芯片。它片內有8 KROM ,256 字節的RAM 以及有32 個I/ O 口。
3) 顯示部分采用LCD DCM212232B4 ,顯示特性為SNT 正式反射模式、綠底藍字、1/ 32 (1/ 6BIAS) 的驅動方式,通過按鍵循環顯示要求的內容,可調電位器實現對比度的調節。
4) 讀寫器中設計了存儲器。存儲器選用24CXX系列的串行E2PROM。主要存放卡號、個人密碼等相對固定的信息和消費金額等有關可修改的參數。24C16 是一種廉價的2 K 8 位串行E2PROM ,與并行的E2PROM 相比,大大的節省空間。
5) 監控電路采用DS1232L 芯片。它是個看門狗定時器, 其功能是: 上電和掉電時經89C52 產生RESTE 信號;看門狗對系統進行監控,防止死機。水表產生的計量脈沖后,引發耗水計數中斷,當剩余量為臨界值或為零時,置相應標志后返回主程序處理。
6) 天線設計。根據經驗,閱讀器的閱讀范圍,即應答器能夠被讀出詢問的范圍,大致與發射天線半徑相符。由此可以得出,給定系統閱讀范圍X max ,最佳天半徑R 可以表示為R≈ X max 。根據IC 卡工作所需要的最小場強H ,由下面公式可算出所需的最小線圈匝數:
式中, N :線圈匝數; R :圓半徑; X :沿線圈平面中心的垂直方向與線圈中心的距離。
2.2 程序設計
主程序完成系統變量的初始化,操作檢測IC 卡,對水閥進行控制,對中斷返回設置進行處理,將操作結果存儲和顯示。這里不作詳細介紹。這里只給出了讀卡、寫卡程序流程(見圖6 、7) 。
圖6:讀卡流程
圖7:寫卡流程
3 結束語
E5550 卡是一種成本低廉的非接觸式卡,雖然容量較小,但能適合許多場合。我們用它設計的智能水表讀寫電路簡單,經濟性好,可靠性安全性較高。本文討論了用E5550 卡設計智能水表讀卡控制器的關鍵技術,該項技術也可用于智能煤氣表、電表等其他場合,在智能化家庭、智能化小區、網絡化管理以及其他一些工業場合都具有廣泛的前景。
(文/西華大學數控研究所,李軍民,黎亞元,蔣建春)