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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于RFID的控制閥系統(tǒng)設(shè)計

          一種基于RFID的控制閥系統(tǒng)設(shè)計

          作者: 時間:2014-05-20 來源:網(wǎng)絡(luò) 收藏

          5)最大塊,為了保證信息的完整性和保護密碼不被竊取,最大塊取6。

          本文引用地址:http://www.ex-cimer.com/article/247102.htm

          6)PWD,為了防止ATA5567被惡意改寫,密碼是一定需要的,即該位為1。

          7)ST是為了方便以同步頭的方式實現(xiàn)數(shù)據(jù)的讀取。

          2.2 ATA5567數(shù)據(jù)的存儲和編碼格式

          對于ATA5567能操作的其實只有block0-block7,這幾塊的格式是一樣的,只不過block0作為控制塊,block7作為密碼塊,所以實際上真正能存儲用戶數(shù)據(jù)的只有block1-block6,共有6個塊。

          ATA5567的編碼方式設(shè)定為曼切斯特編碼。曼切斯特編碼是基帶傳輸中廣泛應(yīng)用的一種數(shù)據(jù)傳輸編碼方式,這種編碼通常用于局域網(wǎng)傳輸,是一種自同步法編碼方式。在數(shù)據(jù)信號的波形中既有同步時鐘信號又有數(shù)據(jù)信號。在調(diào)制電路輸出的波形中,數(shù)據(jù)“1”對應(yīng)著曼切斯特編碼(下面簡稱“曼碼”)電平的上跳沿,數(shù)據(jù)“0”對應(yīng)著曼碼電平的下跳沿。在所接收的一系列曼碼數(shù)據(jù),注意空跳變,假定兩個相鄰bit的間隔時間是1P。若兩個相鄰bit代表的數(shù)據(jù)極性相同(同為0或者同為1),那么在這兩個bit傳送之間,會出現(xiàn)一個預(yù)備性的非數(shù)據(jù)跳變。

           

           

          根據(jù)上跳,下跳和空跳來分辨數(shù)據(jù)是“0”或者“1”,通過下圖的圖解可以發(fā)現(xiàn),如果通過定時器捕獲,最少會得到兩種時間間隔,一種為一個整傳送周期(256/μs),另一種為半個傳送周期(128μs)

          2.3 ATA5567寫卡規(guī)則

          在ATA5567卡片內(nèi)部有一個寫解碼器,該解碼器采用脈沖間隔編譯碼技術(shù)。在寫卡期間,寫解碼器會檢查寫數(shù)據(jù)流是否有效,并檢測場中斷間隔。

           

           

          寫卡的首要工作是確定寫卡的時間間隔,結(jié)合上表中官方給出的數(shù)據(jù)和現(xiàn)場實踐,選擇時間如表1所示。

           

           

          確定寫卡時間間隔之后,還要確定寫卡的命令。在使用一張從市場上買的新卡前,首先要做的就是在Block7當(dāng)中寫入32位秘鑰數(shù)據(jù),然后初始化Block0為0x800880d8,寫卡的命令及格式如下。

          1)標(biāo)準(zhǔn)寫命令格式如表2所示。

           

           

          此時的寫卡為“Standard Write”模式,由于能操作的只有第0頁,所以p取0;

          2)保護寫命令格式如表3所示。

           

           

          初始化block0之后,寫卡操作變?yōu)?ldquo;Protected Write”模式,具體操作與“Standard Write”模式類似,唯一的不同點便是在寫入數(shù)據(jù)之前必須先寫入block7中存儲的秘鑰,如果秘鑰不對,則卡進(jìn)入其他狀態(tài),這里不再贅述。

           

           

          2.4 ATA5567讀卡規(guī)則和算法實現(xiàn)

          對于ATA5567,讀卡命令如表4所示。

           

           

          由于PWD位已經(jīng)置為1,所以選擇第一種格式,寫命令與之前講述的寫數(shù)據(jù)類似,此處不再講述。

          發(fā)完寫命令后,單片機會捕獲到數(shù)據(jù),這些時間間隔數(shù)據(jù)是獲取二進(jìn)制數(shù)據(jù)來源。根據(jù)ATA5567數(shù)據(jù)的存儲和編碼格式,讀卡算法如下:

          算法的核心是ReadNumber()函數(shù)的實現(xiàn),由于在發(fā)送完命令之后,ATA5567會根據(jù)發(fā)送命令中的地址信息,循環(huán)發(fā)送所選地址存儲是數(shù)據(jù)。由于每個block中存儲了32 bit的數(shù)據(jù),實際上轉(zhuǎn)換為曼碼對應(yīng)的波形最多有64個跳變,所以采集到的128個數(shù)據(jù)中一定至少有一個所需數(shù)據(jù)的完整遍歷。這時同步碼也包括在128個數(shù)據(jù)之中,通過同步碼來確定block中數(shù)據(jù)的起始位。同步碼的波形如圖8所示。

           

           

          同步碼在所捕獲的數(shù)據(jù)中體現(xiàn)為:256或128,128,384,128(單位均為μs)。用圖4中的表示方式,上面的數(shù)據(jù)對應(yīng)的時長分別為1P或0.5P,0.5P,1.5P,0.5P。因為在實際中的波形經(jīng)過調(diào)制后不可能為完美的方波,波形的好壞與標(biāo)簽和天線的距離有很大關(guān)系,此外還跟所選器件的精度、MCU的定時器捕獲精度有關(guān),所以允許捕獲的數(shù)據(jù)有誤差。定時器捕獲數(shù)據(jù)完成后,要進(jìn)行解碼,這里定義了兩個數(shù)組array[128],bit_array[32],前者用來存放捕獲的數(shù)據(jù),后者存放解碼后的數(shù)據(jù),找到同步碼形后1.5P的時長對應(yīng)array[bitnum],bitnu m1的初始值為0。

          程序執(zhí)行完畢后,bit_array[]數(shù)組中就存儲了某個block對應(yīng)的32bit的數(shù)據(jù),這些數(shù)據(jù)是二進(jìn)制數(shù)據(jù),可以根據(jù)需要將其轉(zhuǎn)換為十進(jìn)制或者十六進(jìn)制的數(shù)據(jù),因為需要在各個block中存儲時間、日期、金額、流量(熱量)等信息,這里需要將其轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)。

          3 結(jié)束語

          文中主要針對預(yù)付費的表類(熱表、水表、氣表、電表),提出了一種低成本、低功耗、高可靠性的解決方案。由于篇幅所限,著重介紹了無需解碼芯片的RFID解碼電路的構(gòu)成,提出了一種針對ATA5567的高效的編解碼方案,這是整個系統(tǒng)架構(gòu)的核心。對于系統(tǒng)而言,大部分時間處于非工作狀態(tài),可以使其進(jìn)入PowerDown模式(ARM架構(gòu)MCU具有的功能),以節(jié)省電力。另外出于對數(shù)據(jù)備份和保護的目的,可以在系統(tǒng)里加入單獨的存儲單元,如SPI-Flash或者EEPROM,以期在設(shè)備損毀等場合盡最大可能的減少用戶的損失。在某些場合下,如果需要組網(wǎng),除了使用RS-485外還可以使用以太網(wǎng)或者無線方式(如433 MHz),這樣就可以實現(xiàn)與局域管理系統(tǒng)進(jìn)行實時對接。

          手機電池相關(guān)文章:手機電池修復(fù)


          負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理
          蜂鳴器相關(guān)文章:蜂鳴器原理
          離子色譜儀相關(guān)文章:離子色譜儀原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: Nuvoton Nano110

          評論


          相關(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); })();