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