關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 接觸式IC卡接口原理與不同實現方式對比

        接觸式IC卡接口原理與不同實現方式對比

        作者: 時間:2011-08-01 來源:網絡 收藏

        2 幾種與分析

          IFD內的卡讀寫芯片,按其與IFD內的CPU的通信進行分類,有并行通信、半雙工串行通信和I2C通信的讀寫芯片。圖3是一個基于三種通信讀寫芯片的通用卡讀寫器的示意。這個系統可以同時對6片卡進行操作,其中每一個IC卡讀寫芯片都可以驅動2片IC卡。應用系統可以根據實際情況合理選用其中的一種或多種讀寫芯片。

        2.1 IC卡讀寫芯片的硬件分析

        (1)通信方式為并行通信的CTS56I01

          CTS56I01支持兩個符合ISO/IEC7816-3標準的T0和T1傳輸協議的IC卡。它采用并行的方式與IFD內的CPU通信;可以檢查到卡的插入與拔出,并自動產生激活與釋放時序。CTS56I01內部每個通道都有發送緩沖空、ATR超時、釋放檢測完成、TS沒有收到等10個獨立的中斷源,當CTS56I01內部的狀態發生變化時,可以產生中斷信號。系統通過P0口與CTS56I01的數據線相連,地址選擇用P2[2:0],兩個中斷信號經過或門后接到89C51的INT0上。對IC卡的所有操作,只是對CTS56I01內部寄存器的讀寫操作,方便可靠。CTS56I01采用LQFP-32封裝,僅占很小的空間。

        (2)通信方式為半雙工串行通信的WatchCore

          WatchCore是握奇公司為了方便各種嵌入式設備與IC卡的通信開發而推出的一款IC卡讀寫芯片,硬件平臺采用ST7261單片機,內部掩膜有握奇公司對IC卡進行讀寫操作的全部程序;支持ISO/IEC 7816 T=0、T=1異步傳輸協議的各種智能卡,支持對Memory卡操作,支持雙卡頭操作,與CPU采用半雙工串行通信。系統用P1.1和P1.2模擬一個串口與WatchCore進行通信。WatchCore采用SO-20裝封,占PCB板很小的位置。

        圖5

          TDA8020是Philips生產的支持兩個獨立IC卡的讀寫芯片,IFD內的CPU采用I2C的方式向TDA8020發送命令和讀取狀態,通過TDA8020的I/OuC端口向IC卡發送和接收數據。它支持符合ISO/IEC7816-3 T=0、T=1標準的IC卡,也支持符合EMV3.1.1(Europay,MasterCard,VISA)標準的卡。與它Pin-to-Pin兼容的芯片還有ST公司生產的ST8020等。TDA8020有2個地址選擇引腳。本系統的地址引腳接地,兩個IC卡對應的地址分別為0x40和0x48。I2C的時鐘信號和數據信號分別由89C51的P1.3和P1.4進行模擬,IC卡的數據通道I/OuC連89C51的P1.5和P1.6。TDA8020也采用LQFP-32裝封。

        2.2 IC卡讀寫芯片的軟件設計

        2.2.1 通信方式為并行通信的CTS56I01

          CST56I01只有3根地址線,內部卻有37個寄存器。其中有8個寄存器可以直接訪問,另外的29個寄存器要通過索引地址寄存器(IAR)來訪問。其訪問分為兩步:第一步是將要間接訪問的寄存器的地址寫到IAR寄存器中;第二步就是從數據寄存器(DR)中讀出數據或寫入數據到DR寄存器中,來完成對要間接訪問的寄存器的訪問。

        下面的C51子程序是基于圖3的寫一個字節到要間接訪問的寄存器中的子程序。

        #define SN2_IAR XBYTE[0x0000]

        #define SN2_DR XBYTE[0x0100]

        void WriteByteIndexed(BYTE bIndex, BYTE bData) {

        P1.0=0;

        SN2_IAR = bIndex;

        SN2_DR = bData;

        }

        2.2.2 WatchCore的軟件設計

          WatchCore是不帶硬件的UART,其串行通信是用軟件實時仿真的。通信速度采用9600bps;通信字節格式為1位起始位,8位數據位,1位偶校驗位,2位停止位。TXD與RXD電氣信號是標準的CMOS電平,可直接與TTL的電路相連。以下是通信時的數據包格式。

        (1)命令包

        命令包是IC卡讀寫器內的CPU發往WatchCore的數據,其包格式如下:

        NAD

        PCB

        LEN

        DATA

        BCC

        NAD為卡頭選擇, NAD=0x00/0x12為主卡頭,NAD=0x13為從卡頭;

        PCB與通信無關,CPU卡T=1時使用,PCB通常設置為0x00;

        LEN為數據的字節長度(僅DATA段的字節數);

        DATA為發送WactchCore或IC卡內的命令(命令參考ISO7816-4的標準);

        BCC為異或校驗字節(BCC段前的4段所有字節的異或和)。

        (2)數據包

        數據包是WatchCore 收到命令包后返回的數據,其包格式如下:

        NAD* 是WatchCore把命令包中NAD字節的高低4位互換后的返回。例如,命令包發送NAD=0x12,WatchCore則返回NAD*=0x21;

        其它各段與命令包相同。

        通信舉例(以下數據都用十六進制表示)

        對主卡進行復位

        發送命令包如下:



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 迭部县| 崇州市| 林口县| 民勤县| 水富县| 建阳市| 临泽县| 林西县| 霞浦县| 台南县| 乌兰察布市| 牟定县| 玉龙| 稷山县| 泽州县| 镇沅| 铁岭县| 社会| 千阳县| 三台县| 启东市| 无极县| 水富县| 神农架林区| 全椒县| 霍林郭勒市| 嘉峪关市| 石棉县| 荃湾区| 崇左市| 平凉市| 清水河县| 宁陵县| 嘉义市| 综艺| 海城市| 平谷区| 开鲁县| 长白| 苏尼特左旗| 齐齐哈尔市|