新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM處理器與IC卡接口的時序匹配

        ARM處理器與IC卡接口的時序匹配

        作者: 時間:2013-11-11 來源:網絡 收藏

        1 硬件接口

        1.1 TDA8007簡介
          TDA8007是NXP公司推出的IC卡讀卡芯片。它提供2個能同時滿足ISO7816標準、EMV和GSM1111標準的IC卡讀寫接口。處理器只需通過其接口控制并行通信來管理TDA8007,便可實現對IC卡的上電、下電及讀寫數據處理。TDA8007的片選信號和外部中斷信號線可以方便讀寫器處理多個IC卡頭;特別的硬件ESD處理、接口短路處理、電源出錯處理等,為IC卡和IC卡讀寫器提供了比較高的安全保護;內部集成的電源管理功能使其供電范圍可達2.7~6.0 V,通過電源管理可以給IC卡提供5.0 V、3.0 V及1.8 V的電源,以適合不同工作電壓的IC卡應用。
        1.2 TDA8007工作時序與ARM總線時序比較
          在基于ARM核心的嵌入式系統中,程序大多數是存在外部NAND Flash里面的。當TDA8007也接入總線時,若使用總線復用的方式,就需要把程序調用到內存中運行,同時需要11個GPIO來控制TDA8007的讀寫。本文采用非總線復用的方式,選用LPC2220。LPC2220微控制器是基于一個支持實時仿真和嵌入跟蹤的32/16位ARM7TDMIS CPU。由于TDA8007最開始是為51核的單片機設計的,所以讀寫的時序和ARM的總線不同。 TDA8007和LPC2220的讀寫時序如圖1和圖2所示。
        圖1 TDA8007的讀寫時序
        ARM處理器與IC卡接口的時序匹配
        圖2 LPC2220的讀寫時序
        ARM處理器與IC卡接口的時序匹配
          對比圖1和圖2,可以發現TDA8007和LPC2220的讀寫時序是不一樣的,因此無法直接連接。特別要說明的是,使用之前一定要深入研究芯片的數據手冊,不對可能會導致二次布板。
        1.3 解決方案
          TDA8007無法直接連接到LPC2220,同時除非使用專門的GPIO接口,否則也無法采用總線復用的方式操作TDA8007,目前,大多數設計方案都是使用51單片機控制TDA8007,51單片機再與LPC2220進行通信。本文提出了一種新的解決辦法,可以很方便使TDA8007連接到LPC2220處理器,操作方法和操作存儲器一樣。
          通過比較可以很清楚看出,二者時序的主要區別在于讀寫信號的時序不同,如表1所列。
        表1 TDA8007與LPC2220讀寫時序比較
        ARM處理器與IC卡接口的時序匹配
          針對TDA8007的獨特時序,將LPC2220的OE、WE信號進行與操作,作為TDA8007的WR使能信號,使用一個GPIO口進行讀寫控制,CS信號仍然不變,這樣的時序圖就非常符合讀寫的要求。圖3為TDA8007與LPC2220連接的電路圖。其中,TDA_RD/WR是GPIO。
        ARM處理器與IC卡接口的時序匹配
        圖3 TDA8007設計電路
        2 軟件接口
          由于TDA8007連接到ARM總線上時使用GPIO控制讀寫操作,所以程序也需進行相應修改。修改后讀寫函數如下:
        #define TdaCS 0x83000040//TDA8007地址
        unsigned char *volatile TDA=(unsigned char *)TdaCS;
        uchar read_register(uchar address) {
         uchar val;
         IO3DIR=(IO3DIR |(0x0129));
         IO3SET=(0x01 29);//RD控制,RD=1
         val=TDA[address];
         return val;
        }
        void write_register(uchar address, uchar _data){
         IO3DIR=(IO3DIR |(0x0129));
         IO3CLR=(0x01 29);//RD控制,RD=0
         TDA[address]=_data;
         IO3SET=(0x01 29);
        }
        3 結論
          使用TDA8007時需要注意如下問題:
         ?、?外圍電路的配置。SAP和SAM、SBP和SBM、VUP和GND這3個電容的匹配非常重要,如果電容選擇錯誤,可能會導致上電失敗。按照經驗,SAP和SAM、SBP和SBM之間均使用0.01 μF電容,VUP和GND之間使用220 nF電容。這種配置方式的實際使用效果好于按照demo電路的電容配置。
         ?、?在大多數的使用環境下,TDA8007使用晶振為14.745 6 MHz。如果CPU的頻率比較低,最好進行分頻。
         ?、?上電前最好先確定是否已經插卡9,避免多次上電導致芯片燒毀。
          本文的解決方案已經在某公司金融POS系列產品中得到實際應用。從目前的使用情況來看,可以通過國際EMV L1和L2認證。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 周宁县| 赣州市| 临城县| 县级市| 临洮县| 海丰县| 莎车县| 碌曲县| 乌审旗| 阳新县| 同德县| 阳原县| 华容县| 平南县| 马尔康县| 清水县| 银川市| 邮箱| 和平区| 祁连县| 桂平市| 高密市| 漠河县| 冀州市| 津南区| 洪雅县| 乐清市| 特克斯县| 淮阳县| 连南| 巴塘县| 承德市| 桂林市| 汽车| 英山县| 福贡县| 邮箱| 金坛市| 九寨沟县| 永寿县| 石柱|