基于SPI接口安全芯片產(chǎn)品的讀卡器研究
作者 秦理想1,2 涂靜芝3 劉立宗1,2 姜帆1,2
本文引用地址:http://www.ex-cimer.com/article/201710/370666.htm1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室 電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室(北京 100192)
2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心(北京 100192)
3.國(guó)網(wǎng)江西省電力公司檢修分公司(江西 南昌 330077)
秦理想(1982-),女,工程師,研究方向:智能控制及嵌入式系統(tǒng)應(yīng)用;涂靜芝,女,工程師,研究方向:嵌入式系統(tǒng)應(yīng)用;劉立宗,男,工程師,研究方向:智能控制及嵌入式系統(tǒng)應(yīng)用研究
摘要:由于SPI接口的簡(jiǎn)單、高速、穩(wěn)定的特性,在實(shí)際中得到了廣泛應(yīng)用,本文介紹了SPI從設(shè)備的接口協(xié)議,提出了一種基于該SPI協(xié)議的讀卡器的設(shè)計(jì)思路,簡(jiǎn)述了方案的具體實(shí)現(xiàn)方法,包括讀卡器的硬件設(shè)計(jì)及軟件設(shè)計(jì)。采用USB即插即用的連接方式,采用CCID標(biāo)準(zhǔn)設(shè)備通過USB接口與主機(jī)或其它嵌入式主機(jī)連接,完成SPI協(xié)議的數(shù)據(jù)通訊,滿足了實(shí)際的功能需求,對(duì)于開發(fā)設(shè)計(jì)相同工作模式下的SPI從設(shè)備的程序具有很好的借鑒價(jià)值。
引言
提起讀卡器,大多數(shù)人會(huì)想到它是一種讀卡設(shè)備,由于存在各種不同類型的卡片,讀卡器的含義也比較廣泛了。按照廣義的讀卡器概念,它是一種既可以讀取數(shù)據(jù),又可以寫入數(shù)據(jù)的設(shè)備。讀卡器的應(yīng)用領(lǐng)域很廣泛,例如金融行業(yè)、交通領(lǐng)域、醫(yī)療系統(tǒng)、電力行業(yè)等。然而在電力領(lǐng)域,隨著信息化的加速與信息技術(shù)的發(fā)展,供電企業(yè)的主營(yíng)業(yè)務(wù)信息化及辦公生產(chǎn)場(chǎng)所信息網(wǎng)絡(luò)覆蓋率都得到了全面的提高,智能電網(wǎng)的覆蓋率通過遠(yuǎn)程方式對(duì)終端/電表操作的日常業(yè)務(wù)也隨之增加,進(jìn)而對(duì)數(shù)據(jù)傳輸?shù)撵`活性、安全性、可靠性、穩(wěn)定性的要求也越來越高,其中采用的安全模塊為SPI接口。目前市場(chǎng)上主流的讀卡器是USB接口的讀卡器,因?yàn)樗梢约床寮从?,支持熱插拔,用于讀取存儲(chǔ)卡、IC卡、非接觸式IC卡等,由于接觸IC卡片是ISO7816接口,非接觸式IC卡是ISO14443接口,沒有用于讀取SPI接口芯片的專用讀卡器,本文根據(jù)實(shí)際需求提出了一種基于SPI通信接口的讀卡器的設(shè)計(jì)方案。
SPI(Serial Peripheral Interface,串行外圍設(shè)備接口)是一種高速的、全雙工、同步通信總線,并且在芯片的管腳上只占用四根線,包含設(shè)備選擇線、時(shí)鐘線、串行輸出數(shù)據(jù)線、串行輸入數(shù)據(jù)線,節(jié)約了芯片的管腳,同時(shí)為PCB在布局上節(jié)省了空間,現(xiàn)在越來越多的芯片都集成了這種通信協(xié)議。
1.1 SPI通信接口
SPI主要有以下通信接口:
SCLK:時(shí)鐘信號(hào),由主設(shè)備器件產(chǎn)生;
MOSI:主設(shè)備器件數(shù)據(jù)輸出,從設(shè)備器件數(shù)據(jù)輸入;
MISO:主設(shè)備器件數(shù)據(jù)輸入,從設(shè)備器件數(shù)據(jù)輸出;
SSN:從設(shè)備器件使能信號(hào),由主設(shè)備器件控制。
1.2 SPI通信協(xié)議描述
SPI接口通信工作方式有四種,即MODE0、MODE1、MODE2和MODE3,本讀卡器系統(tǒng)采用MODE3,即時(shí)鐘極性(CPOL=1),時(shí)鐘相位(CPHA=1),串行同步時(shí)鐘的空閑狀態(tài)為高電平,在串行同步時(shí)鐘的下降沿轉(zhuǎn)換數(shù)據(jù),上升沿采樣數(shù)據(jù)。
主設(shè)備發(fā)送數(shù)據(jù),從設(shè)備接收數(shù)據(jù),如圖2所示;主設(shè)備接收數(shù)據(jù),從設(shè)備發(fā)送數(shù)據(jù),如圖3所示。
1.3 SPI接口從設(shè)備通信流程
要完成讀卡器的設(shè)計(jì),首先要先了解SPI接口從設(shè)備的通信流程,如圖4所示。
● SSN=0:將SSN置低;SSN=1:將SSN置高。
● Len1代表長(zhǎng)度的高字節(jié),Len2代表長(zhǎng)度的低字節(jié)。
● LRC1的計(jì)算方法:對(duì)CLA、INS、P1、P2、Len1、Len2和DATA數(shù)據(jù)每個(gè)字節(jié)的異或值取反。
● LRC2的計(jì)算方法:對(duì)SW1、SW2、Len1、Len2和DATA數(shù)據(jù)每個(gè)字節(jié)的異或值取反。
Len1和Len2代表DATA域的長(zhǎng)度,不包括LRC1或LRC2。
2 硬件設(shè)計(jì)
本讀卡器的SPI主設(shè)備是主控MCU,從設(shè)備是安全芯片。本讀卡器的功能實(shí)現(xiàn)和SPI接口的從設(shè)備通信,使用硬件SPI需要注意以下幾點(diǎn):
(1) SPI主設(shè)備和與之通信的從設(shè)備的時(shí)鐘極性和時(shí)鐘相位應(yīng)該一致,并以從設(shè)備為基準(zhǔn);
(2) SPI僅在數(shù)據(jù)發(fā)送時(shí)才有時(shí)鐘輸出,一旦傳輸完畢,時(shí)鐘就停止;
(3) SPI從設(shè)備在主設(shè)備需要接收數(shù)據(jù)時(shí)才能發(fā)送數(shù)據(jù),主設(shè)備和從設(shè)備同時(shí)進(jìn)行的;
(4) SPI主設(shè)備向從設(shè)備發(fā)送數(shù)據(jù)時(shí),直接發(fā)送即可。但在接收數(shù)據(jù)時(shí),實(shí)質(zhì)上也是發(fā)送數(shù)據(jù),為接收數(shù)據(jù)提供時(shí)鐘信號(hào)。
讀卡器的系統(tǒng)硬件電路包含7部分,即電源部分、SPI從設(shè)備電源控制、蜂鳴器、指示燈、USB接口部分、SPI從設(shè)備接口部分和CCID的其他設(shè)備接口,如圖5所示。
2.1 USB部分
本讀卡器采用USB接口供電,提供5V的工作電壓,另外支持USB掛起/恢復(fù)操作,支持同步傳輸、批量/同步端點(diǎn)的雙緩存,本讀卡器采用了CCID標(biāo)準(zhǔn)協(xié)議,配置了三個(gè)USB端點(diǎn),實(shí)現(xiàn)了三個(gè)設(shè)備端口的枚舉,包括進(jìn)行SPI時(shí)序配置的端口、安全芯片端口和預(yù)留端口。
評(píng)論