<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 一款專用射頻讀卡器的軟件系統(tǒng)的設(shè)計及實現(xiàn)

          一款專用射頻讀卡器的軟件系統(tǒng)的設(shè)計及實現(xiàn)

          作者: 時間:2009-04-01 來源:網(wǎng)絡(luò) 收藏
          程序執(zhí)行完Init_System()函數(shù)后執(zhí)行RcChipReady函數(shù)。此函數(shù)的功能是初始化MF RC630芯片。
          4.2 硬件驅(qū)動
          4.2.1 PCF8563驅(qū)動
          由于本芯片是一款標準的I2C總線設(shè)備,所以硬件驅(qū)動實際上就是標準的I2C總線控制。由于篇幅有限,這里就不介紹了。
          4.2.2 驅(qū)動
          是MF RC500芯片的升級產(chǎn)品,所以MFRC630的大部分寄存器與MF、RC500均相同,它們對卡的操作流程也基本相同。下面介紹對卡的操作流程。
          (1)卡的操作流程
          整個系統(tǒng)的工作由對Mifare卡操作和系統(tǒng)后臺處理兩大部分組成。由于篇幅有限,本文只對Mifare卡的操作流程進行簡單介紹。Mifare One卡的操作可以分為以下幾項:
          ①復(fù)位請求。當一張Mifare卡片處在卡片讀寫器天線的工作范圍之內(nèi)時,程序員控制讀寫器便向卡片發(fā)出REQUEST all(或REQUEST std)命令??ㄆ腁TR將啟動,將卡片Block 0中的卡片類型(TagType)號共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進行“得位請求”操作,讀寫器對卡片的其他操作將不會進行。
          ②反碰撞操作。如果有多張Mifare卡片處在卡片讀寫器天線的工作范圍之內(nèi),PCD將首先與每一張卡片進行通信,取得每一張卡片的序列號。由于每一張Mifare卡片都具有其唯一的序列號,決不會相同,因此PCD根據(jù)卡片的序列號來保證一次只對一張卡操作。該操作PCD得到PICC的返回值為卡的序列號。
          ③卡選擇操作。完成了上述2個步驟之后,PCD必須對卡片進行選擇操作。執(zhí)行操作后,返回卡上的SIZE字節(jié)。
          ④認證操作。經(jīng)過上述3個步驟,在確認已經(jīng)選擇了一張卡片時,PCD在對卡進行讀/寫操作之前,必須對卡片上已經(jīng)設(shè)置的密碼進行認證。如果匹配,才允許進一步的讀/寫操作。
          ⑤讀/寫操作。對卡的最后操作是讀、寫、增值、減值、存儲和傳送等操作。
          (2)MF RC500開發(fā)包移植
          在本系統(tǒng)中,主要是將標準的MF RC500開發(fā)包進行移植來完成驅(qū)動的編寫。在本系統(tǒng)中使用的是SPI總線,所以只要將MF RC500標準開發(fā)包中對寄存器讀/寫的函數(shù)改成SPI總線的讀/寫函數(shù)即可。在本系統(tǒng)中主要是增加了SpiSendByte()和SpiReByte()函數(shù),同時修改了 ReadRawRc(uchar Address)和WriteR-awRc(uchar Address,uchar value)函數(shù)。部分代碼如下:
          4.2.3存儲器驅(qū)動

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();