IC卡煤氣表的設計_第1頁
IC卡煤氣表的設計_第2頁
IC卡煤氣表的設計_第3頁
IC卡煤氣表的設計_第4頁
IC卡煤氣表的設計_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本科畢業設計論文題目:IC卡煤氣表的設計 軟件設計 院 (系): 電子信息工程學院 專 業: 自動化 班 級: * 學 生: 王* 學 號: 070411334 指導教師: 譚寶成 苗苗 2011年 06月IC卡煤氣表的設計軟件部分摘 要 IC卡智能家用燃氣表是以IC卡為信息載體的智能型機電一體化的家用燃氣表。它能夠實現自動計量收費、自動控制用氣,它和售氣管理系統配合可實現預付費,從而免去人工入戶抄表帶來的諸多不便。本文詳細論述了IC卡智能家用燃氣表的軟件設計開發過程。該系統是基于AT89S52單片機實現的。先對IC卡家用燃氣表的功能要求進行分析,提出IC卡燃氣表的整體設計方案。設計采用模塊化

2、,將一個功能作為一個模塊,各部分程序都獨立的設計,最后主程序通過調用各模塊程序來運行。最后完成各模塊的設計。以及對程序進行調試。使各功能滿足設計要求。關鍵詞:IC卡 燃氣表 單片機 IC Card Intelligent Gas MeterSoftware Part AbstractIC Card Intelligent Household Gas Meter IC Card as the information carrier is based on intelligent mechatronics domestic gas meter. It can automatically meter

3、ing and charging, automatic control of gas, and gas sales management system which can be achieved with pre-paid, eliminating manual meter reading to bring home a lot of inconvenience.朗讀顯示對應的拉丁字符的拼音 字典This article discusses the IC card intelligent household gas meter software design and developm

4、ent process. The system is based on the AT89S52 SCM realizing. First to IC card household gas table function requirement analysis, some IC card overall design scheme of gas meter. Design USES modular, will a function as a module, each part program are independent design, final main program by callin

5、g each module program to run. Finally finish each module design. And debugging of program. Make every function and meet the design requirements. Keywords :IC Card Gas Meter Microcontroller1 緒論1.1課題研究背景隨著我國國民經濟的發展,大中小型企業規模擴大,房地產業蓬勃發展,人民生活水平日益提高,企業和各種居民燃氣設施逐漸增多,用氣量大增。而長期以來,在燃氣供應方面,一直是實行先用氣,后交費的政策。原始的人

6、工抄表工作量大,收費時間長,收費困難,效率低,資金回籠周期長等問題長期困擾著燃氣公司,造成企業資金負擔過重,給企業帶來了損失。近幾年來,隨著IC卡應用技術的日益成熟,利用IC卡設計的智能燃氣表應運而生。1.2課題研究意義作為“金卡工程”主導的IC卡,是一種包含了微電子技術和計算機技術的高科技產品,是當今世界科技發展的必然趨勢。IC卡的優越性有:容量大,可靠性高,抗電磁干擾,抗惡劣使用環境,保密性好,對卡上的數據不能任意讀/寫,信息保存期長,讀寫方便,讀寫次數可高達10萬次以上。但IC卡本身并不能單獨直接使用,只能將IC卡與其它電子設備(如煤氣表)結臺起來,才能共同構成滿足某種社會需要的應用系統

7、。現在城市管道煤氣已經基本普及,煤氣用戶的數量也隨之有了很大的增長。作為煤氣計費依據的煤氣表數量與日俱增,有的城市達幾十萬甚至上百萬用戶。面對如此龐大的煤氣表用戶,抄表、收費工作將是一項十分繁瑣的工作,同時由于用戶各種客觀情況的存在,例如生活水平、居住環境、生活習慣等不一樣,給收費工作帶來了很大的困難。針對這種現狀,設計的IC卡智能煤氣表,可以很好的解決傳統儀表的抄表和收費等問題。該表實現了先進的IC卡計費功能,并且具備完善的防作弊功能。采用了多種方法提高該表在實用中的可靠性。設置了可燃氣報警功能,提高了用戶用氣的安全性。隨著社會的進步,人民生活水平的不斷提高,城市管道煤氣已逐漸進入千家萬戶。

8、煤氣作為一種清潔和高效的能源已經有越來越多的用戶在使用,特別是西部大開發“西氣東輸”計劃的啟動,管道煤氣將向更多的大,中,小城市擴展,用戶更會大幅增長,管道煤氣已經和水,電一樣成為城市的基本設施,給人們的日常生活帶來極大的方便。1.3智能卡表及系統數據交換的安全性分析 在智能卡表和預付費管理系統之間,信息的傳遞是通過IC卡作為傳輸介質進行的,安全性的主要內容是如何保證IC卡中信息的安全性。在智能卡表及系統中所使用的都是集成電路卡(IC卡),集成電路卡的核心是采用集成電路芯片來進行數據的存儲。目前廣泛使用的IC卡使用的是電可擦除數據存儲芯片(EEPROM),這種芯片讀寫速度快,掉電后數據可以長期

9、保存,并且數據可以反復進行擦寫。 安全認證:安全認證用來在讀寫設備(包括智能卡表)與IC卡進行數據交換之前,首先進行必要的安全認證,用來確認雙方身份的合法性。只有雙方身份確認后,才能建立相互之間聯系的通道進行必要的數據交換。如果雙方不能確認身份的合法性,則不能建立進行數據交換的通道。 安全認證有兩種方式可以實現,一是通過密碼進行安全認證;一是通過密鑰進行安全認證。 (1)讀寫設備發送密碼到IC卡 (2)IC卡進行密碼比較 (3)IC卡將比較結果返回讀寫設備 IC卡在進行密碼比較時,如果讀寫設備發來的密碼與IC卡中存儲的密碼相同,IC卡向讀寫設備返回密碼認證通過的結果,并打開IC卡數據與外部進行

10、交換的權限。如果密碼不同,則返回錯誤結果,IC卡數據與外部進行交換的權限被關閉。在邏輯加密卡中使用的就是這種認證方式,密碼認證的方式比較簡單實用,是一種常用的安全認證手段。綜合上面所討論的內容,在智能卡表及系統中要具備高的數據安全性,采用安全級別高的IC卡即智能卡(CPU卡)作為傳輸介質,進行數據的安全認證和有效傳輸。 1.4本課題的分析1.4.1IC卡燃氣表的功能作為供氣計量,自動計費的IC卡智能煤氣表應具有以下功能:1.預付費功能:用戶向煤氣資源管理管理公司預交一定費用后,獎金額存入IC內,獲得相應的可使用的沒氣量。2.報警功能:當IC卡中剩余金額低于一定值時,煤氣表發出聲光報警,提醒用戶

11、去預交煤氣費,給IC卡充值。3.顯示卡中余額功能:煤氣表可隨時顯示IC卡中剩余金額,便于用戶了解使用煤氣情況。4.加密功能:對IC卡進行加密,使系統不易被仿制,或者在IC卡丟失后不可被他人使用。5.掉電保護功能:當系統由于供電設備或其他問題而斷電時,會將程序正在運行中產生的重要數據保存到外置存儲器中,例如用戶當前用氣量,計算產生的數據等,保護用戶和煤氣公司的利益。6.自動控制供、停煤氣:當卡內余額用完時驅動電磁閥關閉煤氣管道中的閥門,停止供氣。7.可對購氣量進行累積1.4.2.整體設計方案智能氣表本質上是一種微機自動檢測系統,由硬件和軟件兩部分組成。根據以上功能要求,確定系統整體方案如下:智能

12、IC卡燃氣表系統由單片機、IC卡、電磁閥、傳感器、LCD顯示器、報警器、存儲器等組成。各部分電路各司其職,共同完成整體功能。設計主要采用單片機作為主要的芯片,當用戶購買一定數量煤氣后,供氣公司即把所購買的氣量存儲在IC卡上。把IC卡插入氣表的卡座,系統在程序的控制下將卡內數據信息傳送到單片機內并保存在存儲器中,并將此卡內數據清零,以確保一卡對一機,防止多次使用此卡。液晶屏幕將立即顯示購氣的數量。如果原來的氣表中尚有上次剩余的煤氣,則新購的氣將疊加在原來的數據上并且在屏幕顯示。隨著煤氣用量屏幕顯示數值將減少。當IC卡中的金額不足時,會報警響鈴;同時關閉電磁閥;續費后,電磁閥開啟,功能正常。1.4

13、.3軟件設計方案本人主要負責軟件部分,即相關模塊程序的編寫。為能夠完成IC卡智能燃氣表的功能,設計中的程序設計采用模塊化設計,各部分程序都獨立的設計,最后主程序通過調用各模塊程序來運行。程序設計部分模塊包括主程序模塊、掉電存儲模塊、液晶顯示模塊、IC卡讀寫模塊、功能按鍵等部分。2 程序設計2.1主程序模塊 當系統開機后,開始運行主程序,在主程序中調用相應的顯示子程序、鍵值的判斷和輸出操作、流量的采集、計費、現金額的讀取以及是否進行讀卡的操作等,無論是從性價比上還是從系統可靠性上,以及對于軟件調試上來說主控芯片的選擇至關重要。2.1.2主控芯片的選擇 主控芯片MCU采用AT89S52, 該單片機

14、是美國ATMEL公司生產的低電壓,高性能COMS 8位單片機,片內含8k bytes的可反復擦寫的只讀程序存儲器(PEROM)和256k bytes的隨機數據存儲器(RAM),控制器采用11.0592MHz的晶體振蕩器使時鐘更加精確,具有三個16位定時器/計數器,八個中斷源,一個全雙工UART串行通道和看門口定時器。并且能用下載線進行在線編程以及調試。2.2.1AT89S52芯片優點1.AT89S系列單片機是以MCS-8051單片機為內核,結合ATMEL公司自身的技術特色構成的,所以AT89S52單片機與MCS-8051單片機是兼容的。2.ATMEL公司把EEPROM和FLASH技術巧妙相結合

15、形成特殊的存儲器電路,使其應用領域擴大,在開發應用過程中可以非常方便的進行程序設計和修改程序。在系統工作過程中能有效的保存數據信息不丟失。也就是說,系統掉電不會丟失數據。3.AT89S52單片機采用靜態時鐘方式可節電。4.可反復進行應用系統程序的調試,因為AT89S系列單片機具有通信下載功能,可現場在線編程、修改、調試帶來了極大的方便5.技術性能高,AT89S52單片機適應溫度范圍寬,抗干擾能力強。AT89S52單片機是AT89系列的增強型產品,功能有了較大的增加。功能增強包括FLASH、工作頻率、SPI、看門狗定時器(WDT)等。其中WDT是一種需要軟件控制的復位方式。WDT 由13位計數器

16、和特殊功能寄存器中的看門狗定時器復位存儲器(WDTRST)構成。WDT 在默認情況下無法工作;為了激活WDT,戶用必須往WDTRST 寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當WDT激活后,晶振工作,WDT在每個機器周期都會增加。WDT計時周期依賴于外部時鐘頻率。除了復位(硬件復位或WDT溢出復位),沒有辦法停止WDT工作。當WDT溢出,它將驅動RSR引腳一個高個電平輸出。2.1.3 WDT的使用為了激活WDT,用戶必須向WDTRST寄存器(地址為0A6H的SFR)依次寫入0E1H和0E1H。當WDT激活后,用戶必須向WDTRST寫入01EH和0E1H喂狗來避免WDT溢出。當計

17、數達到8191(1FFFH)時,13 位計數器將會溢出,這將會復位器件。晶振正常工作、WDT激活后,每一個機器周期WDT 都會增加。為了復位WDT,用戶必須向WDTRST 寫入01EH 和0E1H(WDTRST 是只讀寄存器)。WDT 計數器不能讀或寫。當WDT 計數器溢出時,將給RST 引腳產生一個復位脈沖輸出,這個復位脈沖持續96個晶振周期(TOSC),其中TOSC=1/FOSC。為了很好地使用WDT,應該在一定時間內周期性寫入那部分代碼,以避免WDT復位。a.掉電和空閑方式下的WDT在掉電模式下,晶振停止工作,這意味這WDT也停止了 工作。在這種方式下,用戶不必喂狗。有兩種方式可以離開掉

18、電模式:硬件復位 或通過一個激活的外部中斷。通過硬件復位退出掉電模式后,用戶就應該給WDT 喂 狗,就如同通常AT89S52 復位一樣。通過中斷退出掉電模式的情形有很大的不同。中斷應持續拉低很長一段時間,使得晶振穩定。當中斷拉高后,執行中斷服務程序。為了防止WDT在中斷保持低電平的時候復位器件,WDT 直到中斷拉低后才開始工作。這就意味著WDT 應該在中斷服務程序中復位。為了確保在離開掉電模式最初的幾個狀態WDT不被溢出,最好在進入掉電模式前就復WDT。在進入待機模式前,特殊寄存器AUXR的WDIDLE位用來決定WDT是否繼續計數。默認狀態下,在待機模式下,WDIDLE0,WDT繼續計數。為了

19、防止WDT在待機模式下復位AT89S52,用戶應該建立一個定時器,定時離開待機模式,再重新進入待機模式。2.1.4軟件看門狗程序軟件看門狗(WATCH DOG)也叫做程序運行監視系統。當程序運行受到干擾,程序飛到一個臨時構成的死循環中時,系統將完全癱瘓,軟件陷阱也無能為力了,這時就需要人工復位或硬件復位;如果沒有人工操作和硬件復位系統,我們采用軟件看門狗技術同樣也能使系統復位,恢復正常。watchdog.h:#include <reg52.h>void wdtclear(void) WDTRST=0x1E; WDTRST=0xE1; void dela

20、y_nms(unsigned int n) unsigned int i; unsigned int ii; for(i=0;i<n;i+)   for(ii=0;ii<1000;ii+);  wdtclear();        watchdog.c:#include "watchdog.h"main() unsigned int i; WDTRST = 0x1E;  /開

21、看門狗,包含兩條指令。一旦開看門狗就沒有辦法關閉。 WDTRST = 0xE1; while(1)   delay_nms(100); /超過16毫秒不喂狗,看門狗溢出復位。  delay_nms(100); 2.1.5AT89S52單片機的初始化當系統上電后,主程序開始執行。它首先完成系統的初始化工作,如開中斷,使外部中斷0和外部中斷1均為邊沿觸發方式,設置T0,T1為定時器并賦予初值等初始化后再從AT24C02中讀取剩余金額,并進行判斷處理等。初始化程序如下:void zinit()famen=1;/開閥門TM

22、OD=0x11;/定時器0和1為模式1TL0=0xb0; /賦初值TH0=0x3c; TL1=0x80; /賦初值TH1=0x3e;ET0=1; /開T0中斷ET1=1; /開T1中斷IT0=1; / 外部中斷為邊沿觸發方式IT1=1; /EX0=1; / 開外部中斷0EX1=1; / 開外部中斷1ES=1;/開串行口中斷PS=1;/串口中斷位高優先級PX0=1; /外部中斷0為最高中斷優先PX1=1;/ 外部中斷1為次最高中斷優先TR0=1;/1開始計數,0停止計數EA=1;/開總中斷xianshdy=1;/顯示電源關閉xianshi1=0;sbjing=1;/聲報警2.1.6主程序流程圖單

23、片機控制著整個系統的運行,包括流量累計,費用計算,顯示,開/關閥門,聲光報警,讀卡。在主程序中調用相應模塊實現功能。當系統開機后,開始運行主程序,我們要實現的功能是實現自動計費,根據是否有余額來決定是否開啟閥門。實際中當煤氣閥門開啟后,煤氣就在不斷地使用,設計中我們必須去定時的去計算累積使用的煤氣量,并且在總錢數中減去使用的錢數得到此時的剩余金額,防止出現余額已用完,而依然在供應煤氣。所以主程序應該為一個在判斷余額是否足夠的死循環,根據余額情況,若不足則關閉閥門,并且聲光報警,若還有則開閥門,并根據用戶按鍵情況作相應的顯示。開始讀取現金余額和總金額余額是否足夠計費讀取現金余額報警顯示余額初始化

24、是是否按鍵端口掃描打開閥門是否進行讀卡充值操作進行讀卡操作是否結束循環進入掉電模式鍵值輸出操作流量采集讀上次關機保存數據顯示子程序 圖2.1主程序流程圖2.2 IC卡讀寫模塊IC卡的主要功能就是作為一種數據載體。將用戶所購煤氣金額存儲在IC卡內,用戶回到家后將卡插入,通過讀卡程序將卡內金額傳送到單片機內并保存在存儲器中,在通過寫卡程序將卡內數據清零,以確保一卡對一機 , 防止多次使用此卡。 2.2.1芯片的選擇 本設計采用的IC卡芯片為SLE4442卡,SLE4442是由德國西門子(Siemens)公司設計的邏輯加密存儲卡。具有2 Kb(256 B)的存儲容量,它采用多存儲器結構,包括三個存儲

25、器:256×8 b的EEPROM型主存儲器,32×1 b的PROM型保護存儲器和4×8 b的EEPROM型加密存儲器。主存儲器可重復擦除使用,按字節操作,可分為保護數據區和應用數據區,讀出均不受限制,但保護數據區的擦除和寫入受保護存儲器熔絲狀態的保護,而應用數據區的擦除和寫入則受加密存儲器中的密碼及密碼計數器保護。SLE4442卡是一種按字節操作的多存儲器邏輯加密卡。它具有2 Kb的存儲容量和完全獨立的可編程加密代碼(PSC,Programmable SecurityCode)存儲器。內部電壓提升電路保證了芯片能夠以單+5電壓供電,較大的存儲容量能夠滿足通常應用領

26、域的各種要求。因此是目前國內應用較多的一種IC卡芯片。2.2.2SLE4442芯片的特點SLE4442卡芯片的特點如下:(1) 采用多存儲器結構。(2) 2線連接協議,復位響應滿足ISO/IEC 7816-3標準。(3) 觸點配置及串行接口滿足ISO/IEC 7816(同步傳輸協議)。(4) 僅當正確輸入3個字節的可編程加密代碼(PSC)后方可修改數據。(5) 芯片采用NMOS工藝技術,每個字節的寫入/擦除編程時間為2.5 ms。(6) 存儲器具有至少104次的寫入/擦除周期,數據保持時間至少10年。2.2.3SLE4442芯片存儲器結構SLE4442卡芯片采用了多存儲器結構,主要包括三個存儲

27、器:256×8 b的EEPROM型主存儲器;32×1 b的PROM型保護存儲器;4×8 b的EEPROM型加密存儲器。表2.1邏輯加密卡的存儲結構區域名地址(字節)位數說明制造區0116芯片制造商代碼(一旦寫入,不可更改,用于識別卡的來源)發行區2532卡制造商、發行商代碼密碼區6824持卡人密碼(PIN,由發行商在卡個人化時預寫入,用卡時將之與持卡人輸入的密碼相比較,相符才允許對應用區進行讀寫和修改該密碼)密碼計數區98允許連續輸入錯誤密碼的次數(34 次),若達到則卡自鎖,以防止對PIN的非法試探個人區101332持卡人個人信息,可自由讀寫應用區1477512

28、應用數據擦除密碼區788024擦除密碼,僅供發行商使用,與發行商輸入密碼比較,相等即可對整個應用區置1(檫除),以實現卡的重復使用擦除計數區818864擦除次數,該區每一個1 表示可進行1 次擦除操作,每輸入1次擦除密碼(無論對錯)就將1 個1 置0,該區全為0 時,卡片使用壽命結束。該區本身的擦除只能在發行前進行,一旦發行,只能置0 和讀出1)主存儲器(Main Memory)主存儲器為可重復擦除使用的EEPROM型存儲器,按字節尋址、擦除和寫入。在擦除時,一個數據字節的所有8位被全部置1。在寫入時,EEPROM單元中的信息則根據輸入的數據,被逐位變換成邏輯“0”(即在EEPROM中,新寫入

29、的數據與原來存有的數據進行“邏輯與”)。通常,一個數據的改變包含先擦除(全寫為1),后寫入(將相應的1寫為0)兩項操作。如果在被尋址的字節里8位中沒有一個字位需要從0變到1,則可以不進行擦除處理,例如,01101100變為00100100;反之亦然,在被尋址的字節中,如果沒有一個字位需要從1 變到0 , 則可以不作寫入處理, 例如,01101100變為11111101。寫入或擦除操作一次都至少要耗費2.5ms時間。主存儲器的地址是從0(00H)到255(FFH),共256 B(2 Kb)。主存儲器可分為兩個數據區:保護數據區和應用數據區:(1) 保護數據區。主存儲器前32 B為保護數據區,地址

30、從0(00H)到31(1FH)。這部分的數據讀出不受限制,但擦除和寫入操作均受到保護存儲器內部數據狀態的限制。當保護存儲器中第n位(n=031)為1時,則對應主存儲器中第n個字節允許 進行擦除和寫入操作;而當保護存儲器第n位為0時,則對應主存儲器中第n個字節就不允許進行擦除和寫入操作。根據這一特性,主存儲器的保護數據區一般均作為IC卡的標識數據區,存放一些固定不變的標識參數,如廠商代碼、發行商代碼等。(2) 應用數據區。主存儲器后224 B為應用數據區,地址從32(20H)到255(FFH)。這部分的數據讀出不受限制,但擦除和寫入均受控于加密存儲器數據校驗比較結果的影響。當需要修改應用數據區的

31、內容時(擦除或寫入操作),必須首先輸入一個3字節長的“校驗字”。這個用戶輸入的“校驗字”與原來存在加密存儲器中的“參照字”進行一對一的比較。只有當兩者完全一致時,芯片的加密控制邏輯才打開芯片的主存儲器,允許后面的擦除和寫入操作。應該注意的是這種加密校驗的控制是對整個主存儲器實施的(即包括保護數據區和應用數據區)。如果新輸入的校驗字與芯片中的“參照字”不同,則控制邏輯閉鎖主存儲器。芯片允許在有限的次數內(一般為三次)重試比較操作。如果在連續三次比較失敗之后,芯片的錯誤計數器計數到“0”,并將鎖死主存儲器,禁止隨后的任何比較操作和寫入擦除操作。這時,整個主存儲器變成一個只讀存儲器,芯片中各存儲器的

32、內容不能再改變。2)保護存儲器(Protection Memory)保護存儲器是一個32×1 b的一次性可編程只讀存儲器(PROM)。它是按位尋址和寫入。保護存儲器為031的每一位對應著主存儲器地址為031的每一個字節,因此可以理解為每個字節單元的控制熔絲。從出廠到被初始化之前,保護存儲器的狀態為全“1”。從控制方面來說,保護存儲器的內容只能從“1”寫成“0”(即熔斷熔絲),而不能從“0”擦除成“1”。保護存儲器每個被寫“0”的單元所對應控制的主存儲器的字節單元將不再接受任何擦除和寫入操作命令,從而使得該字節單元內的數據不可再改變。因此,對保護存儲器單元的寫入一定要特別小心。從使用方

33、面來說,如果需要防止一些固定的標識參數(例如,生產廠家代碼、發行商代碼、卡片編號等)被改動,以免造成使用混亂,則可以將這類參數先寫入主存儲器的保護存儲區,然后將對應單元的保護存儲器的字位寫0,從而使這一部分單元中的參數內容永遠不可更改。保護存儲器本身的讀出操作不受限制。但對其寫入操作仍然受到加密存儲器比較校驗操作結果的控制。當輸入的“校驗字”與芯片內原來存有的“參照字”一致時,則可以執行后續的寫入操作。如果比較不成功,則控制邏輯將閉鎖保護存儲器。3)加密存儲器(Security Memory)加密存儲器是一個4×8 b的EEPROM型存儲器。在這個存儲器中,第0個字節為“密碼輸入錯誤

34、計數器”(EC,Error Counter)。密碼輸入錯誤計數器的有效位是低3位。在芯片初始化時,計數器設置成“111”。這一字節是可讀的,每次比較密碼時,先要判定計數器中是否還有“1”。如果還有“1”,則將一個“1”寫成“0”,然后進行比較“校驗字”操作。如果比較結果一致,則密碼錯誤計數器將允許進行擦除操作(注意,芯片不能自動進行擦除操作),同時打開主存儲器、保護存儲器和加密存儲器,并允許進行擦除和寫入操作。如果比較結果不一致,則密碼錯誤計數器中為“1”的個數減少1位。只要計數器的內容不全為0,則芯片的比較“校驗字”操作還允許再次進行。當連續三次輸入錯誤密碼后(即密碼計數器減少為0),則芯片

35、的存儲單元將全部被鎖死。由此可見,加密存儲器可以理解為進入整個芯片的“關卡”。加密存儲器的第1、2、3個字節為“參照字”存儲區。這3個字節的內容作為一個整體被稱為可編程加密代碼(PSC)。值得注意的是:這3個字節的內容在PSC比較成功前是不可讀的,只能進行比較操作。而寫入和擦除操作也受自身比較操作結果的控制。只有當比較操作成功時,加密存儲器各字節的內容才可以進行讀出、寫入和擦除。2.2.4傳送協議與操作模式SLE4442卡與接口設備(IFD,InterFace Device)之間的傳送采用2線連接協議,滿足ISO/IEC 7816同步傳送協議,I/O線上的數據變化只在CLK信號下降沿有效。傳送

36、協議包括4種模式:復位和復位響應(ATR,Answer-To-Reset)、命令模式(Command Mode)、輸出數據模式(Outgoing Data Mode)、處理模式(Processing Mode)注意:I/O引腳為漏極開路型,因此需要外加上拉電阻才能得到高電平。1) 復位和復位響應(Reset and Answer-To-Reset)SLE4442卡芯片的復位方式有:(1) 復位和復位響應(外部復位方式):基于ISO/IEC 7816-3的同步協議。 (2) 加電復位(Power on Reset,內部復位方式):加電后I/O被置于高阻態。必須在對任意地址進行讀操作或做一個復位響

37、應操作之后才可以進行數據交換。復位響應是根據 ISO/IEC 7816-3(ATR)標準來進行的,復位及復位響應的時序關系如圖2.2所示。在操作期間的任意時刻都可以復位。圖2.2復位及復位響應的時序關系開始時接口設備IFD將所有線置于狀態L,然后VCC加電,CLK和RST保留于狀態L,接口設備的I/O置于接收方式。之后,RST線被置于H狀態,并維持至少15 s,時鐘脈沖在RST上升沿之后相隔t10時間后給出,地址計數器隨這個時鐘脈沖被設置為0。在RST為高時只允許有一個時鐘脈沖。CLK與RST下降沿之間的時間間隔為t11。當RST線從高狀態(H狀態)置到低狀態(L狀態)時,第一個數據位(LSB

38、)的內容被送到I/O上,這一數據可視為復位應答。若繼續輸入后面的31個時鐘脈沖(共32個脈沖),主存儲器中的前4個字節(4×8 b= 32 b)地址單元中的內容被讀出。在第32個時鐘脈沖的下降沿,I/O線被置成高阻狀態(Z狀態)而關閉,ATR過程結束。在復位響應期間,“啟動”和“停止”狀態都被忽略。2)命令模式(Command Mode)復位響應以后,芯片等待著命令。每條命令都以一個“啟動狀態”開始。整個命令包括3個字節。隨后緊跟著一個附加脈沖并用一個“停止狀態”來結束操作。圖2.3為命令模式的時序關系。圖2.3命令模式的時序關系(1) 啟動狀態:在CLK為高狀態(H狀態)期間,I/

39、O線的下降沿為啟動狀態。(2) 停止狀態:在CLK為高狀態(H狀態)期間,I/O線的上升沿為停止狀態。接收了一個命令之后,卡芯片處于兩種可能的模式:(1) 讀數據時處于輸出數據模式;(2) 寫入和擦除時處于處理模式。3)輸出數據模式(Outgoing Data Mode)在這一模式下IC卡芯片發送數據給IFD。圖2.3右上角為輸出數據模式的時序關系圖。在第一個CLK脈沖的下降沿之后,I/O線上的第一位數據變為有效。隨后每增加一個時鐘脈沖,芯片內部的一位數據被送到I/O線上,低位在前。當所需要的最后一個數據送出以后,需要再附加一個時鐘脈沖來把I/O線置成高阻狀態(Z狀態),以便準備接收新的命令。

40、在輸出數據期間,任何“啟動狀態”和“停止狀態”均被屏蔽。4)處理模式(Processing Mode)在這一模式下對IC卡芯片做內部處理。圖2.3右下角為處理模式的時序關系圖。芯片在第一個時鐘脈沖的下降沿,將I/O線從高狀態(H狀態)拉到低狀 (L狀態)并開始處理。此后應連續給芯片提供脈沖,使芯片在內部連續計時計數,直到第n個時鐘脈沖之后的附加一個時鐘脈沖的下降沿I/O線被置為高阻態,完成芯片的處理過程。在整個處理過程中I/O線被鎖定成低狀態,任何“啟動狀態”和“停止狀態”均被屏蔽。2.2.5芯片的操作命令1)命令格式命令格式如表2.2表2.2命令格式MSB 控制字 LSBMSB 控制字 LS

41、BMSB 控制字 LSBB7B6 B5 B4 B3 B2B1 B0A7 A6 A5 A4A3 A2A1 A0D7D 6D5 D4 D3 D2D1 D0命令的傳送總是從控制字節開始,首先傳送字節的最低位LSB(即B0位)。控制字節傳送完畢之后,依次傳送地址字節和數據字節,均為低位在前。在最后一位D7傳送完成之后,需要增加一個附加時鐘脈沖把I/O線置成高狀態。SLE4442命令表如表2.3所示表2.3SLE4442命令表字節1控制字字節2地址字字節3數據字操作模式B7B0A7A0D7D000110000地址無效讀主存儲器輸出數據模式00111000地址輸入數據修改主存儲器處理數據模式0011010

42、0地址無效讀保護存儲器輸出數據模式00111100地址輸入數據寫保護存儲器處理數據模式00110001地址無效讀加密存儲器輸出數據模式00111001地址輸入數據修改加密存儲器處理數據模式00110011地址輸入數據比較校驗數據處理數據模式2) 讀主存儲器(Read Main Memory)讀主存儲器命令格式如下:命令控制字地址字數據字讀主存儲器30H00HFFH無效讀主存儲器命令讀出主存儲器的內容,命令的控制字為30H。對于每個字節來說,總是從最低位LSB開始讀出,從給定的字節地址(N=0255)開始,直到整個存儲器的末尾。在該命令輸入以后,接口設備IFD必須提供足夠的時鐘脈沖,從地址(N)

43、開始讀數據所需要的時鐘脈沖數為M=(256N)×81。對主存儲器進行讀操作不受限制。讀主存儲器的時序見圖2.4圖2.4讀主存儲器的時序圖3) 讀保護存儲器(Read Protection Memory)讀保護存儲器命令格式如下:命令控制字地址字數據字讀保護存儲器34H無效無效讀保護存儲器命令的控制字為34H。在連續輸入32個時鐘脈沖的情況下,芯片將保護存儲器內各位的內容傳送到I/O線上,最后通過一個附加時鐘脈沖將I/O線置為高阻狀態(Z狀態)。對保護存儲器進行讀取操作不受限制。讀保護存儲器的時序見圖2.5。圖2.5讀保護存儲器的時序圖4) 讀加密存儲器(Read Security M

44、emory)讀加密存儲器命令格式如下:命令控制字地址字數據字讀加密存儲器31H無效無效讀加密存儲器命令類似于讀保護存儲器,可以讀出4B的加密存儲器的內容。該命令的控制字為31H。在輸出數據的模式下,所需時鐘脈沖的數量為32。其后再附加一個時鐘脈沖將I/O線置成高阻狀態(Z狀態)。如果可編程加密代碼(PSC)的校驗不成功,則“參照字”字節的輸出被禁止,讀保護存儲器除第0個字節可讀出外,I/O線總保持為低(L)狀態(即“參照字”字節的輸出總是“0”)。讀加密存儲器的時序見圖2.6。圖2.6讀加密存儲器的時序圖5) 修改主存儲器(Update Main Memory)修改主存儲器命令格式如下:命令控

45、制字地址字數據字修改主存儲器38H00HFFH輸入數據修改主存儲器命令根據所傳送的字節數據,尋址主存儲器的EEPROM字節,然后修改相應字節的內容。該命令的控制字為38H。在處理模式期間,根據新、舊數據,可能發生下列幾種情況之一: 先擦除后寫入:5 ms,相當于M=256個時鐘脈沖。 只寫入不擦除:2.5 ms,相當于 M=124個時鐘脈沖。 只擦除不寫入:2.5 ms,相當于M=124個時鐘脈沖。修改主存儲器時序圖如圖2.7所示 圖2.7修改主存儲器時序圖6) 修改加密存儲器修改加密存儲器命令格式如下:命令控 制 字地 址 字數 據 字修改加密存儲器39H00H03H輸入的數據(PSC)為保

46、護參照字字節,這一命令僅當PSC成功校驗之后方能執行,否則,只能對錯誤計數器(地址0)進行由“1”寫“0”的操作。該命令所要求的執行時間和時鐘脈沖數與執行修改主存儲器的情況相同。7) 寫保護存儲器(Write Protection Memory)寫保護存儲器命令格式如下:命令控制字地址字數據字寫保護存儲器3CH00H1FH輸入的數據寫保護存儲器命令的執行過程包含一個把被輸入的數據與在EEPROM中對應數據進行比較的過程。在確認一致的情況下,保護字位被寫0,從而使得主存儲器中的信息不可更改。如果數據比較結果不一致,則保護字位的寫操作將被禁止執行。該命令所要求的時鐘脈沖和執行時間與修改主存儲器命令

47、的情況相同。8) 比較校驗數據(Compare Varification Data)比較校驗數據命令格式如下:命令控制字地址字數據字寫保護存儲器3CH00H1FH輸入的數據比較校驗數據命令必須與修改錯誤計數器的過程同時執行該命令把輸入的“校驗數據”的各個字節與相對應的參照數據(存放在加密存儲器中)進行比較,這一過程將在處理模式中需要給出時鐘脈沖。比較校驗數據命令的時序如圖2.8所示 圖2.8比較校驗數據命令的時序圖2.2.6 PSC校驗如果需要修改SLE4442的數據,則必須正確校驗存儲在加密存儲器中的可編程加密代碼PSC。校驗的過程并不是僅由比較校驗數據命令來完成的,而是由多個命令構成的一個

48、流程來共同完成,PSC校驗流程見圖2.34。這一流程必須被精確地執行,任何變化都將導致校驗失敗,從而使寫入/擦除操作被禁止。只要校驗過程未能成功完成,密碼錯誤計數器的一個字位將只會被從“l”寫成“0”,并且不能被擦除。首先用一個修改加密存儲器命令將密碼錯誤計數器中的一位寫0。 然后緊跟著三條比較校驗數據命令。比較從參照數據的字節1開始。整個比較過程成功與否是用能否擦除密碼錯誤計數器來證實的,密碼錯誤計數器不能自動擦除。如果比較成功,則擦除操作執行有效,這時只要不斷電,對整個芯片各存儲器的各區域的寫入/擦除處理都可以進行;如果比較不成功,擦除操作執行無效,密碼錯誤計數器將不會恢復為“111”。但

49、只要EC不全為0,就允許外部接口設備IFD對芯片進行重試。當校驗數據比較成功,加密存儲器也同樣被打開時,其單元中的參照數據也可以像其他EEPROM單元一樣被讀出和修改。PSC校驗命令一覽表如表2.4所示表2.4 PSC校驗命令一覽表命 令控制字地址字數據字備 注讀加密存儲器31H無效無效檢查錯誤計數器是否還有“1”修改加密存儲器39H00H輸入數據將錯誤計數器其中一位由“1”寫“0”比較校驗數據33H01H輸入數據參照字數據字節1比較校驗數據33H02H輸入數據參照字數據字節2比較校驗數據33H03H輸入數據參照字數據字節3修改加密存儲器39H00HFFH擦除錯誤計數器讀加密存儲器31H無效無

50、效檢查錯誤計數器是否成功擦除設置SLE4442卡初始密碼PSC1、PSC2、PSC3均為0FFH。讀加密存儲器的內容暫存于22H單元錯誤計數器、23H單元密碼字節1、24H單元密碼字節2、25H單元密碼字節3、26單元程序如下:IO BIT P1.0CLK BIT P1.1RST BIT P1.2ICSW BIT P1.6PWR BIT P1.7PSC1 EQU 0FFHPSC2 EQU 0FFHPSC3 EQU 0FFHORG 0000HLJMP START*PSC校驗子程序*COMP:MOV R7,#31H ;設置讀加密存儲器命令控制字MOV R6,#00H ;設置讀加密存儲器命令地址字(

51、00H為錯誤計數器)MOV R5,#00H ;設置讀加密存儲器命令數據字(任意)LCALL COMMAND ;送讀加密存儲器命令LCALL SHIN ;讀錯誤計數器MOV 22H,A ;錯誤計數器值暫存22H單元LCALL SHIN ;繼續讀入加密存儲器后3個字節MOV 23H,ALCALL SHINMOV 24H,ALCALL SHINMOV 25H,AMOV A,22HSETB IO ;附加一個脈沖,置數據線為高LCALL DELAY_4sSETB CLKLCALL DELAY_4 sCLR CLKJB ACC.0,NEXT0 ;判斷錯誤計數器中是否還有“1”JB ACC.1,NEXT1

52、;如有“1”則減去一個“1”JB ACC.0,COMP2LJMP EXIT ;錯誤計數器為全“0”退出NEXT0:MOV R5,#06HMOV R4,#07HAJMP COMP0NEXT1:MOV R5,#04HMOV R4,#06HAJMP COMP0NEXT2:MOV R5,#00HMOV R4,#04HCOMP0:MOV R7,#39H ;設置修改加密存儲器命令控制字MOV R6,#00H ;設置修改加密存儲器命令地址字(錯誤計數器)LCALL COMMAND ;送修改加密存儲器命令(錯誤計數器減一個1)LCALL OPERA123 ;處理模式MOV R7,#33H ;設置PSC校驗命令

53、控制字MOV R6,#01H ;設置PSC校驗命令地址字MOV R5,#PSC1 ;取PSC第1個字節LCALL COMMAND ;送PSC校驗命令給卡LCALL OPERA123 ;處理模式MOV R7,#33H ;設置PSC校驗命令控制字MOV R6,#02H ;設置PSC校驗命令地址字MOV R5,#PSC2 ;取PSC第2個字節LCALL COMMAND ;送PSC校驗命令給卡LCALL OPERA123 ;處理模式MOV R7,#33H ;設置PSC校驗命令控制字MOV R6,#03H ;設置PSC校驗命令地址字MOV R5,#PSC3 ;取PSC第3個字節LCALL COMMAND

54、 ;送PSC校驗命令給卡LCALL OPERA123 ;處理模式MOV R7,#39H ;設置修改加密存儲器命令控制字MOV R6,#00H ;設置修改加密存儲器命令地址字(錯誤計數器)MOV R5,R4 ;取修改加密存儲器命令數據字(擦除錯誤計數器)LCALL COMMAND ;送修改加密存儲器(擦除錯誤計數器)命令給卡LCALL OPERA123 ;處理模式MOV R7,#31H ;設置讀加密存儲器命令控制字MOV R6,#00H ;設置讀加密存儲器命令地址字(錯誤計數器)MOV R5,#00H ;設置讀加密存儲器命令數據字(任意)LCALL COMMAND ;送讀加密存儲器命令給卡LCA

55、LL SHIN ;讀加密存儲器的錯誤計數器MOV 22H,ALCALL SHIN ;讀加密存儲器的后3個字節MOV 23H,ALCALL SHINMOV 24H,ALCALL SHINMOV 25H,AMOV A,22HSETB IO ;附加一個脈沖,置數據線為高LCALL DELAY_4sSETB CLKLCALL DELAY_4sCLR CLKEXIT: RET2.2.7中止與錯誤狀態1) 中止(Break)在CLK為低狀態期間,如果RST置為高狀態,則任何操作均無效,I/O線被鎖定到高阻狀態(Z狀態)。需要一個最小維持時間tRES=5 s 之后,芯片才能接收新的有效復位。中止后芯片準備做進一步的操作。2) 錯誤狀態(Failures)在芯片操作過程中,可能出現以下幾種操作失敗的情況:(1) 比較失敗。(2) 錯誤命令。(3) 不正確的命令脈沖數。(4) 對已被保護的字節進行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論