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