日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]介紹其中的IC卡接口芯片Philips的TDA8007,給出通過TDA8007對(duì)CPU IC卡上下電過程、具體程序及TDA8007使用中應(yīng)注意的問題。

摘要:闡述T=0傳輸協(xié)議,給出IC卡讀寫器中使用的IC卡APDU指令流程和原理框圖;重點(diǎn)介紹其中的IC卡接口芯片Philips的TDA8007,給出通過TDA8007對(duì)CPU IC卡上下電過程、具體程序及TDA8007使用中應(yīng)注意的問題。

    關(guān)鍵詞:CPU IC卡 TDA8007 ISO7816

IC卡(Integrated Circuit card)即集成電路卡,是將一個(gè)集成電路芯片鑲嵌于朔料基片中,封裝成卡的形式,外形與常用的覆蓋磁條的磁卡相似。IC卡芯片具有寫入和存儲(chǔ)數(shù)據(jù)的能力。IC卡存儲(chǔ)器中的內(nèi)容根據(jù)需要可以有條件地供外部讀取,或供內(nèi)部信息處理和判定。根據(jù)卡中所鑲嵌的集成電路的不同,可以分成存儲(chǔ)器卡、邏輯加密卡、CPU卡三類。其中CPU卡即為由中央處理器CPU、EEPROM、隨機(jī)存儲(chǔ)器RAM以及固化在只讀存儲(chǔ)器ROM中的片內(nèi)操作系統(tǒng)COS(Chip Operation System)組成的IC卡。IC卡按與外界數(shù)據(jù)傳送的形式來分,有接觸式和非接觸式兩種。

圖1 T=0的CPU卡APDU指令實(shí)現(xiàn)流程

1 CPU IC卡T=0的協(xié)議介紹

目前大多數(shù)CPU IC卡采用T=0模式。所謂T=0,即CPU IC卡與接口設(shè)備(即讀寫器)中數(shù)據(jù)傳輸方式為異步半雙工字符傳輸模式。

從T=0協(xié)議的功能出發(fā),該協(xié)議的實(shí)現(xiàn)可以分為物理層、數(shù)據(jù)鏈路層、終端傳輸層和應(yīng)用層。其中物理層和數(shù)據(jù)鏈路層可以具體參看ISO7816標(biāo)準(zhǔn)。在T=0協(xié)議應(yīng)用,終端傳輸層和應(yīng)用層實(shí)際上是不易分割來說明的,下面簡單說明。

終端傳輸層根據(jù)卡片返回的過程字符和狀態(tài)字節(jié)執(zhí)行相應(yīng)的操作,使讀寫器對(duì)數(shù)據(jù)的處理過程明朗清晰??ㄆ祷氐倪^程字節(jié)和狀態(tài)字節(jié)跟應(yīng)用層發(fā)送給卡的APDU(Application Protocol Data Unit,應(yīng)用協(xié)議數(shù)據(jù)單元)和VPP使用等有關(guān)。表1為VPP未用時(shí)的終端傳輸層中返回的過程字節(jié)。

表1 

字  節(jié)

結(jié)   果

ACK INS VPP空閑,所有其余的數(shù)據(jù)字節(jié)相繼續(xù)被傳送
INS+'FF' VPP空閑,下一個(gè)數(shù)據(jù)字節(jié)隨后被傳送
SW1 SW2 VPP空閑,接口設(shè)備等待SW2字節(jié)

應(yīng)用層即為由CLA、INS、P1、P2、P3作為命令頭組成的命令消息體的APDU響應(yīng)和應(yīng)答處理層。其中CLA為指令類別,INS為指令碼,P1、P2為參數(shù),P3為根據(jù)APDU的不同格式為發(fā)送給卡的數(shù)據(jù)長度或期望響應(yīng)的數(shù)據(jù)長度。APDU的幾種情況如表2所列。

表2 

命令頭 發(fā)送數(shù)據(jù)長度 發(fā)送的數(shù)據(jù) 期望應(yīng)答的數(shù)據(jù)長度
通用APDU CLA INS P1 P LC Data LE
情況一 CLA INS P1 P      
情況二 CLA INS P1 P     LE
情況三 CLA INS P1 P LC Data  
情況四 CLA INS P1 P2 LC Data LE

CPU卡對(duì)接口設(shè)備(即讀寫器)的應(yīng)答APDU情況如表3所列。

表3

數(shù)據(jù)Data SW1 SW2

其中體中的數(shù)據(jù)字節(jié)數(shù)由命令A(yù)PDU中的LE指出;SW1、SW2是必備的,可以指明命令A(yù)PDU執(zhí)行正確或執(zhí)行出錯(cuò)的錯(cuò)誤類型。

2 基于T=0傳輸協(xié)議的CPU IC的APDU指令流程

根據(jù)目前CPU卡的常用T=0協(xié)議、自帶編程升壓電路的應(yīng)用情況,以及本讀寫器接收IC卡數(shù)據(jù)報(bào)文直接發(fā)送PC機(jī)處理的特點(diǎn),本讀寫器可行的APDU命令和響應(yīng)的處理流程如圖1所示。

3 讀寫器的硬件組成

讀寫器的硬件部分主要由IC接口管理芯片TDA8007、MCUAT89C52、外部數(shù)據(jù)存儲(chǔ)器W24257S、串口電平轉(zhuǎn)換芯片MAX3226、安全I(xiàn)C卡座(即SAM卡座)、應(yīng)用IC卡座、鍵盤口供電的串口通信線及其它相關(guān)元器件組成。

圖2所示為通過PC機(jī)控制管理的外置于PC機(jī)的接觸式CPU IC卡讀寫器。通過定制的數(shù)據(jù)線,該讀寫器的5V直流電源可直接由鍵盤口提供,同時(shí)數(shù)據(jù)線還負(fù)責(zé)PC機(jī)與讀寫器的串行數(shù)據(jù)交換。在大部分IC卡讀寫應(yīng)用中,都涉及到IC卡的認(rèn)證和數(shù)據(jù)讀寫的國解密問題,所以本讀寫器除了提供一個(gè)供用戶使用的IC卡接口卡座外,還內(nèi)置了一個(gè)SAM卡,即安全I(xiàn)C卡卡座,以方便安裝SAM卡,保證應(yīng)用IC卡讀寫時(shí)的數(shù)據(jù)安全,保護(hù)用戶的利益。

    硬件的其它組成部分,如處理器,目前采用Atmel的89C52。其4KB的Flash程序存儲(chǔ)器可以滿足讀寫器的程序空間需要。由于PC機(jī)與89C52、89C52與TDA8007的數(shù)據(jù)交換要求的暫存數(shù)據(jù)空間比較大,89C52提供的256字節(jié)不夠,需外加一片數(shù)據(jù)存儲(chǔ)器。本讀寫器中使用的是華邦的W24257S。其有32KB存儲(chǔ)容量,IC接口部分的主要芯片為Philips的TDA8007。

4 IC卡接口芯片應(yīng)用

下面介紹一下TDA8007及其應(yīng)用。TDA8007的原理結(jié)構(gòu)如圖3所示。

TDA8007芯片能夠提供兩個(gè)能同時(shí)滿足ISO7816標(biāo)準(zhǔn)及EMV和GSM11-11標(biāo)準(zhǔn)的IC卡讀寫接口。在本讀寫器中,一個(gè)用于與應(yīng)用IC通信,另一個(gè)用于與安全I(xiàn)C卡通信。與上文CPU卡的觸點(diǎn)圖相對(duì)應(yīng),CLKi、RSTi、VCCi、I/Oi、GNDCi、PRESi、C4i、C8i(其中i=1,2;C4i、C8i未用;PRESi可用于檢測(cè)IC卡是否插入。具體應(yīng)用可參看TDA8007的技術(shù)文檔)都直接由TDA8007提供給IC卡接口相連,MCU只需通過其接口控制并行通信來管理TDA8007,便可實(shí)現(xiàn)對(duì)IC卡的上電、下電及讀寫數(shù)據(jù)處理。其中,微處理器既可以通過總線復(fù)用把TDA8007內(nèi)部的所有寄存器作為外部存儲(chǔ)器,用MOVX尋址,也可以通過非總線復(fù)用方式訪問,此時(shí)TDA8007用AD0~AD3來區(qū)分內(nèi)部各寄存器。另外,TDA8007的片選信號(hào)和外部中斷信號(hào)線可以方便讀寫器處理多個(gè)IC卡頭。TDA8007的特別硬件ESD處理、接口短路處理、電源出錯(cuò)處理等也給IC卡和IC卡讀寫器提供了比較高的安全保護(hù);同時(shí),TDA8007內(nèi)部集成的電源管理功能允許TDA8007的供電范圍可達(dá)2.7~6.0V,并且TDA8007通過電源管理可以給IC卡提供5.0V、3.0V及1.8V的電源,以適合不同工作電壓的IC卡應(yīng)用。

圖3 IC卡接口芯片TDA8007的原理框圖

    本讀寫器是通過總線復(fù)用對(duì)TDA8007的寄存器進(jìn)行控制的。其中MCU的P1.5為TDA8007的片選,P0口為與之通信的8位數(shù)據(jù)線,TDA8007的各寄存器預(yù)先被宏定義的成微處理器的一個(gè)外部數(shù)據(jù)單元(下面電程序處的定義),從而方便MCU訪問。下面結(jié)合TDA8007寄存器的定義和位分配,給出應(yīng)用TDA8007接口芯片對(duì)IC卡進(jìn)行上電激活和下電的程序。TDA8007的寄存器主要三類。第一類,通用寄存器:①卡槽選擇CSR;②硬件狀態(tài)HSR;③定時(shí)器TOR1、TOR2、TOR3。第二類,ISO7816串行處理寄存器:①串行狀態(tài)USR;②混合狀態(tài)MSR;③串行發(fā)送UTR;④串行接收URR;⑤隊(duì)列控制FCR。第三類,卡專屬寄存器:①可編程分頻PDR;②保護(hù)時(shí)間GTR;③串行控制UCR1、UCR2;④時(shí)鐘配置CCR;⑤上電控制PCR。注意:對(duì)于卡專屬的寄存器,即卡接口1、卡接口2分別對(duì)應(yīng)的寄存器,邏輯上具有相同的名及訪問地址,因而,對(duì)不同的瞳操作,需要通過CSR選擇對(duì)應(yīng)的卡槽來切換卡??▽偌拇嫫鞯挠成涞奈锢砜臻g。所以,接口設(shè)備每次從一個(gè)卡的上下電或讀寫轉(zhuǎn)向另一卡,都需要訪CSR設(shè)定對(duì)應(yīng)的卡槽。對(duì)于每個(gè)寄存器的位定義不再多述,主動(dòng)性者可參看TDA8007的技術(shù)文檔。

5 上下電過程及具體程序

圖4為IC卡的上電時(shí)序圖。要實(shí)現(xiàn)之,需對(duì)PCR進(jìn)行寫操作。其中START=PCR.0,RSTIN=PCR.2,VUP上升表示激活了TDA8007中的電壓轉(zhuǎn)換電路。當(dāng)START置高時(shí),只要能檢測(cè)到選定卡槽中的IC卡存在,且沒有TDA8007能檢測(cè)到并在HSR中指示的硬件錯(cuò)誤出現(xiàn),則對(duì)應(yīng)IC卡接口的VCC1或VCC2將能被提供響應(yīng)的電平(5V、3V或1.8V)。隨后對(duì)應(yīng)卡的I/O數(shù)據(jù)線被置成高狀態(tài)(Z狀態(tài)),給IC卡提供設(shè)定的時(shí)鐘信號(hào),常用為3.5712MHz。大約在START置高108ETU后,RSTIN置高。因?yàn)镽ST為RSTIN的拷貝,則對(duì)應(yīng)卡的RST被置高。然后,用TDA8007提供的定時(shí)器TOR3、TOR2設(shè)定對(duì)ATR(Answer To Request)即復(fù)位應(yīng)答首字節(jié)的最大等待時(shí)間120ETU(Element Time Unit),TOC設(shè)定定時(shí)器工作方式,便開始等待ATR首字節(jié)到來后做相應(yīng)處理。至此,IC卡上電激活工作完成,隨后可以根據(jù)ATR字節(jié)的要求的工作方式對(duì)IC卡進(jìn)行相應(yīng)的讀寫處理。具體見上電程序。

圖4 TDA8007產(chǎn)生滿足ISO 7816標(biāo)準(zhǔn)訴IC卡上電激活時(shí)序

    TDA8007寄存器訪問的預(yù)定義

#include<absacc.h>

#define XXX XBYTE[0x8000]//XXX表示CSR等各寄存器上電程序如下:

P1.5=0; //片選TDA8007

CSR&=0xf8;

CSR|=ncard; //選擇卡,ncard=1,2

CSR&=0xf7;

CSR|=0xf7;

CSR|=0x08; //復(fù)位UART的寄存器

UCR2&=0xf7; //異步模式,SAN=0

CCR&=0xdf; //時(shí)鐘停止于低電平

UCR2|=0x60; //關(guān)閉附加中斷及收發(fā)中斷

GTR=0xff; //保持時(shí)間12ETU

If(v==1) //v為函數(shù)變量

PCR|=0x08; //1.8V卡用

else if(v==3)

PCR|=0x02; //3V卡用

Else

PCR&=0xfd; //5V卡用

UCR2&=0xfc; //CKU=PSC=0,--31

FCR=0x00; //1奇偶校驗(yàn)1FIFO

PDR=0x0c; //Divider=12

CCR=0x00; //不分頻

PCR&=0xfb; //RSTIN=0

UCR2|=0x04; //不自動(dòng)轉(zhuǎn)換

UCR1=0x01; //正向約定

UCR1&=0xf7; //接收模式

flag3=0; //復(fù)位定時(shí)標(biāo)志

flagatr=0; //接收ATR首字節(jié)定時(shí)標(biāo)志

PCR|=0x01; //激活

TOR2=0x6c;

TOR3=0x00;

TOC=0x61; //RST拉高前等待108ETU

while(flag3==0); //定時(shí)時(shí)間到,在中斷中設(shè)置flag3=1

TOC=0x00; //關(guān)閉定時(shí)器

PCR|=0x04; //給復(fù)位拉高

TOR2=0x78;

TOR3=0x00;

TOC=0x61; //RST拉高前等待

flagatr=1;

ATR(); //復(fù)位應(yīng)答處理函數(shù)

圖5為IC卡的下電時(shí)序圖。相對(duì)于上電時(shí)序,下電過程對(duì)時(shí)間的要求不是很嚴(yán)格,只要設(shè)計(jì)者控制TDA8007按照一定的順序置低START、RSTIN和停止CLK即可,然后TDA8007會(huì)自動(dòng)逐步釋放RST、I/O、Vcc及VUP。具體處理見下電程序。

下電程序:

P15=0;

PCR&=0xfe; //START=0;下電

PCR&=0xfb; //卡的復(fù)位腳保持0

CCR&=0xdf; //停止時(shí)鐘于低

CCR|=0x10; //停止時(shí)鐘

P15=1;

6 使用TDA8007應(yīng)當(dāng)注意的問題

TDA8007對(duì)于Vcc、RST出錯(cuò),芯片過熱(如圖IC卡為電源短路卡或金屬片),或IC卡插入拔出時(shí)都會(huì)產(chǎn)生中斷輸出。每次中斷處理結(jié)束,應(yīng)注意把HSR中的值讀入一個(gè)臨時(shí)地址,以便清楚HSR中的標(biāo)志。

每次發(fā)送數(shù)據(jù)到IC前,即接收IC卡的最后一個(gè)數(shù)據(jù)之前,應(yīng)設(shè)置寄存器UCR1中的LCT位,以便接收完IC卡的數(shù)據(jù)后,自動(dòng)切換成發(fā)送狀態(tài)。

對(duì)TDA8007部分布線時(shí)應(yīng)注意,時(shí)鐘信號(hào)線與其它線的隔離:最好被地線包圍。

對(duì)于電路板上TDA8007部分的電容應(yīng)盡量靠近TDA8007,其中電容Cap、Cbp、Cup尤其如此,并最好不要在這些電容連向TDA8007引腳過程中使用過孔;同時(shí),Cap、Cup、Cbp電容的ESR要盡量小。

對(duì)TDA8007處理的兩個(gè)IC卡座中的任何一個(gè)執(zhí)行上電、下電、讀寫卡操作之前,必須執(zhí)行選擇卡座的操作函數(shù),以便選中具體的IC卡進(jìn)行處理。

對(duì)IC卡操作中上電時(shí)序中的定時(shí),讀寫卡字節(jié)間等待定時(shí)等都可使用TDA8007中的定時(shí)器及定時(shí)控制器操作,注意其定時(shí)器為向下計(jì)數(shù)方式。

結(jié)語

本文主要從CPU IC卡的T=0的協(xié)議出發(fā),介紹此類IC讀寫器設(shè)計(jì)的一些技術(shù)問題。值得指出的是,T=0協(xié)議僅僅是IC卡與外界數(shù)據(jù)交換的一種傳輸協(xié)議,只要在軟件上適當(dāng)修改并利用接口芯片TDA8007突出的處理能力,本讀寫器完全可以實(shí)現(xiàn)對(duì)其它ISO7816卡、EMV、GSM`11-11卡的讀寫。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

控制寄存器(Control Register)是中央處理器(CPU)中用于管理系統(tǒng)級(jí)操作的特殊寄存器,它為操作系統(tǒng)和硬件提供對(duì)處理器行為的精細(xì)控制。本文從計(jì)算機(jī)體系結(jié)構(gòu)角度系統(tǒng)闡述控制寄存器的設(shè)計(jì)原理、功能分類、操作機(jī)制...

關(guān)鍵字: 寄存器 處理器

在嵌入式系統(tǒng)開發(fā)中,硬件抽象層(Hardware Abstraction Layer,HAL)起著至關(guān)重要的作用。它為上層軟件提供了統(tǒng)一的硬件訪問接口,隱藏了底層硬件的細(xì)節(jié),使得軟件具有更好的可移植性和可維護(hù)性。C++作...

關(guān)鍵字: 嵌入式C++ HAL 寄存器 封裝

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動(dòng),MAX7219包含一個(gè)自動(dòng)掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

電源管理集成電路(PMIC)有益于簡化最終應(yīng)用并縮小其尺寸,也因此備受青睞。然而,當(dāng)默認(rèn)啟動(dòng)時(shí)序和輸出電壓與應(yīng)用要求不符時(shí),就需要定制上電設(shè)置。大多數(shù)情況下,電路沒有可以存儲(chǔ)這些設(shè)置的非易失性存儲(chǔ)器(NVM)。對(duì)此,低功...

關(guān)鍵字: 電源管理 集成電路 寄存器

我從Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中創(chuàng)建了一個(gè)項(xiàng)目來讓它工作,你可以在我的上一個(gè)項(xiàng)目帖子中閱讀,我在QDSP-6061的5位數(shù)上顯示滾動(dòng)文本,上面寫著“Hell...

關(guān)鍵字: 寄存器 AXI4 QDSP-6061 RTL模塊

在單片機(jī)系統(tǒng)的設(shè)計(jì)中,復(fù)位電路是確保單片機(jī)正常工作的關(guān)鍵組成部分。它能夠在系統(tǒng)啟動(dòng)時(shí)將單片機(jī)的內(nèi)部寄存器和狀態(tài)設(shè)置為初始值,保證單片機(jī)從一個(gè)確定的狀態(tài)開始運(yùn)行。與門芯片作為一種常見的數(shù)字邏輯芯片,有時(shí)會(huì)被應(yīng)用于單片機(jī)復(fù)位...

關(guān)鍵字: 復(fù)位電路 寄存器 單片機(jī)

在數(shù)字電路設(shè)計(jì)中,計(jì)數(shù)器是一種基礎(chǔ)的數(shù)字電路組件,用于記錄并顯示脈沖信號(hào)的數(shù)量或頻率。4進(jìn)制計(jì)數(shù)器,即模4計(jì)數(shù)器,是一種特殊的計(jì)數(shù)器,其計(jì)數(shù)范圍從0到3,共4個(gè)狀態(tài)。本文將深入探討如何結(jié)合D觸發(fā)器與寄存器來實(shí)現(xiàn)一個(gè)4進(jìn)制...

關(guān)鍵字: D觸發(fā)器 寄存器 計(jì)數(shù)器

寄存器是CPU內(nèi)部存儲(chǔ)單元,即寄存器是CPU的組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址等。

關(guān)鍵字: 寄存器 CPU

隨著電子技術(shù)的迅速發(fā)展,計(jì)算機(jī)已深入地滲透到我們的生活中,許多電子愛好者開始學(xué)習(xí)單片機(jī)知識(shí),但單片機(jī)的內(nèi)容比較抽象,相對(duì)電子愛好者已熟悉的模擬電路、數(shù)字電路,單片機(jī)中有一些新的概念,這些概念非常基本以至于一般作者不屑去談...

關(guān)鍵字: 單片機(jī) 寄存器

蘇州2024年7月30日 /美通社/ -- 作為全球電梯和自動(dòng)扶梯行業(yè)的領(lǐng)導(dǎo)者之一,通力電梯今日宣布"通力太倉東林佳苑電梯更新改造項(xiàng)目簽約儀式"已于今日正式舉行。該項(xiàng)目是蘇州市首個(gè)保障性住房電梯集中改...

關(guān)鍵字: 電梯 數(shù)字化 IC卡 控制
關(guān)閉