RFID世界網(wǎng) >
技術(shù)文章 >
其他 >
正文
基于ARM 平臺的RFID 系統(tǒng)設計與實現(xiàn)
作者:北京郵電大學電信工程學院 汪曦鵬
來源:RFID世界網(wǎng)
日期:2007-12-14 15:38:43
摘要:RFID(無線射頻)技術(shù)作為近年來興起的一項新興的自動識別技術(shù)。由于其具有讀取距離遠、穿透能力強、抗污染、效率高、信息量大的特點,已經(jīng)得到廣泛的開發(fā)與應用。 本文給出了一種ARM 平臺的RFID 系統(tǒng)設計與實現(xiàn)方案,并已經(jīng)過測試。
1. 引 言
近年來,RFID(無線射頻)技術(shù)是正在興起的一項新興的自動識別技術(shù)。RFID 利用射頻方式進行非接觸雙向通信,從而實現(xiàn)對物體的識別,并將采集到的相關信息數(shù)據(jù)通過無線技術(shù)遠程進行傳輸。相較目前廣泛采用的條型碼技術(shù),RFID 具有讀取距離遠(幾米至幾十米)、穿透能力強(可透過包裝箱直接讀取信息)、抗污染、效率高(可同時處理多個標簽)、信息量大的特點。它的出現(xiàn)給物流和生產(chǎn)方面的工業(yè)應用帶來了革命性的影響[1]。
正是由于上述原因,本文提出了一種基于ARM 平臺的RFID 系統(tǒng)設計與實現(xiàn)方案,以滿足人們在嵌入式領域?qū)FID 技術(shù)的開發(fā)與應用。
2. 系統(tǒng)介紹
2.1 系統(tǒng)硬件設計
硬件系統(tǒng)框圖:如圖處理器采用現(xiàn)行嵌入式系統(tǒng)中最流行ARM系列,具體采用ATMEL公司的工業(yè)級ARM 芯片。FLASH為4M,采用的芯片是AM,用于存儲LINUX內(nèi)核,RAMDISK和一些系統(tǒng)配置文件和測試數(shù)據(jù)。SDRAM為 M,采用的芯片是MT48LC2M32B2TG-6。網(wǎng)絡接口的物理層芯片采用RTL8201。同時還配有輸入輸出設備,即LCD顯示屏和5×4鍵盤。電源采用穩(wěn)壓模塊輸出穩(wěn)定的電壓,同時設計有單鍵開關和充電電路等方便用戶的功能[2]。
我們采用LINUX作為系統(tǒng)的操作系統(tǒng),給標準LINUX打上支持ARM系列的補丁包后內(nèi)核便提供了對AT91RM9200的支持(我們稱之ARM-LINUX),在ARM-LINUX之下,編寫鍵盤,LCD,網(wǎng)卡,F(xiàn)LASH文件系統(tǒng)的驅(qū)動程序。在ARM-LINUX上編寫一個小型簡潔的GUI(圖形界面用戶接口),使程序更加模塊化,便用上層程序的編寫和以后系統(tǒng)的升級。如圖是軟件系統(tǒng)框架圖。
3.1 單鍵開關電路設計
單鍵開關設計必須考慮到以下幾點:一是單鍵開關必須穩(wěn)定,按一次鍵只有一次電源的通或斷;二是電流問題:因為單鍵開關無論是關機的時候還是開機的時候都要使用電源,所以必須保證其電流足夠小,減少電源的損耗。通過查找資料,我們設計了以下電路(圖3):
3.2 充電電路設計
充電電路可以為用戶提供很大的方便。一般情況充電電路需要達到的要求是:必須保證電池充電時不過充;充電時間不能太短,但同時也要保證充電電流不能太大;有充電指示。根據(jù)上面以上要求,我們設計了以下電路
3.3 PROTEL 電路設計和電路板布線的基本流程
原理圖部分:建立自己的元件庫。因為并不是所有的元件在PROTEL的元件庫中都存在,一般要根據(jù)自己實際所用的芯片建立自己的元件庫。繪制原理圖。當器件比較多的時候,可以采用層次設的方法。分模塊對系統(tǒng)進行設計,這樣可以使系統(tǒng)更加清晰,降低錯誤的可能性。原理圖畫好后,利用其自動編號功能對器件進行編號。PCB板部分.建立自己的封裝庫,同元件庫一樣,有時候必須建立自己的封裝庫,在畫封裝的時候,要嚴格按照芯片公司的資料繪制。為每一個元件設置封裝。用向?qū)Мa(chǎn)生PCB文件,定義好電路板的層數(shù)和邊界。利用設計同步器將器件導入到PCB中。根據(jù)具體的工藝設計好規(guī)則,如過孔大小,最小線寬。按照易于布線的原則對元件進行布局布線,在布線的時候要遵循一些原則。檢查錯誤。
4. 系統(tǒng)軟件設計
4.1 LINUX 在AT91RM9200 上的移植
AT91RM9200兩種啟動方式:1.其內(nèi)部存儲器地址為0x00100000-0x001FFFFF的部分存在一段啟動程序,如果選擇這種啟動模式在啟動時,0x00100000-0x001FFFFF部分的地址被映射到0x00000000,CPU運行這段程序,這段程序會往CPU的調(diào)試串口(或者是USB口)不停的發(fā)字符“C”,同時提供小于12K程序的串口(利用XMODEM協(xié)議)下載功能。2.可以直接從外部存儲器啟動,主要是連接在SPI(串行外部設備接口)和NCS0(CPU上的一個管腿,是EBI即外部總線接口的一部分,用于外部存儲器的尋址)上的SPI DataFlash,Two-wire EEPROM和連接在NCS0上的8比特并行存儲器。
根據(jù)CPU的啟動方式,我們可以這樣設計移植過程及系統(tǒng)的啟動方式。在系統(tǒng)移植階段,我們應用啟動方式1,通過其下載功能下載一個小于12K的程序(實際使用的程序為Loader,是開放源碼的軟件,可以在網(wǎng)上下載到)到SDRAM并運行,該程序可以提供大于12K的串口下載功能,用這個程序下載一個更大的程序到SDRAM中,而這個程序可以提供類似于PC機上BIOS的功能(實際使用的是U-BOOT,是開放源碼的軟件,可以在網(wǎng)上下載到),其功能主要有:LINUX系統(tǒng)引導,網(wǎng)卡驅(qū)動,TFTP下載功能,SDRAM和FLASH之間的讀寫功能。
通過其TFTP下載功能下載內(nèi)核到SDRAM,引導操作系統(tǒng)并進行測試。如果操作系統(tǒng)測試工作無誤后,可以應用U-BOOT的寫FLASH功能把U-BOOT和LINUX內(nèi)核寫到FLASH中,在應用程序開發(fā)階段應用CPU的啟動方式2,直接從FLASH啟動。這種方法的優(yōu)勢是:在內(nèi)核下載的時候,提供了TFTP下載功能,加快了速度。在應用程序開發(fā)階段,因為內(nèi)核(還有后面的RAMDISK)都是固化在FLASH中,可以省去其下載過程,同樣也可以節(jié)省時間[3]。
移植過程大致可分為以下幾個步驟:配置用戶環(huán)境及交叉編譯環(huán)境;編譯Loader和UBoot,其中要在UBoot中修改網(wǎng)卡驅(qū)動;3.配置Linux內(nèi)核;4.制作ramdisk文件系統(tǒng),并根據(jù)實際系統(tǒng)進行修改;5.移植Busybox;6.JFFS2文件系統(tǒng)的移植。在Linux內(nèi)核中已經(jīng)包含了MTD和JFFS2文件系統(tǒng)的驅(qū)動程序,但是必須針對具體的系統(tǒng)編寫驅(qū)動程序。具體步驟如下:1)由于ROM設備和MTDBlock設備的主設備號(major)都是31,所以如果你不想把JFFS2作為根文件系統(tǒng)的話,必須修改他們之一的major。2)編寫驅(qū)動程序:編寫讀,寫,復制接口(這些接口將被MTD驅(qū)動程序調(diào)用,提供給上層軟件的讀寫復制功能),定義map_info結(jié)構(gòu)體,以便MTD能夠從這個結(jié)構(gòu)體中得到讀寫函數(shù)的指針,最后還要定義FLASH的分區(qū)表。根據(jù)系統(tǒng)的設計,我們把4M的FLASH分成四個區(qū),第一個分區(qū)用來保存UBOOT及其參數(shù);第二個分區(qū)用來保存LINUX內(nèi)核;第三個分區(qū)用來保存RAMDISK;最后一個分區(qū)用來保存系統(tǒng)參數(shù)和用戶數(shù)據(jù)和測試數(shù)據(jù)。3)修改LINUX的配置文件,把驅(qū)動程序加入到內(nèi)核[4]。
4.2 LINUX 驅(qū)動程序的編寫
我們研究字符型設備的驅(qū)動程序的編寫,塊設備驅(qū)動程序跟字符設備驅(qū)動程序的編寫有一定的相似性。
驅(qū)動程序加載時,內(nèi)核會調(diào)用用戶定義的初始化程序。用戶用init_moudle(function name)標識初始化程序,其中的function name為編寫的初始化函數(shù)的函數(shù)名。用module_exit(function
name) 標識釋放設備程序,在初始化函數(shù)里驅(qū)動程序必須向操作系統(tǒng)注冊設備,以獲得系統(tǒng)資源和操作系統(tǒng)正確的調(diào)用驅(qū)動程序。在Linux中這個函數(shù)是register_chrdev,在fs/devices.h中其定義為:int register_chrdev(unsigned int major,const char* name,struct file_operation *fops)。
其中major是為設備向系統(tǒng)申請的主設備號,name驅(qū)動程序給設備定義的名字,fops是接下來要介紹的一個結(jié)構(gòu)體。在卸載的時候需要告知操作系統(tǒng)注銷注冊[5]。
下面簡要介紹一下file_operation結(jié)構(gòu)體中幾個主要的比較常用的方法。
1. ssize_t (*read) (struct file *, char *, size_t, loff_t *);用來從設備中讀取數(shù)據(jù)。
2. ssize_t (*write) (struct file *, const char *, size_t, loff_t *);向設備發(fā)送數(shù)據(jù)。
3. int (*ioctl) (struct inode *,struct file *,unsigned int,unsigned long);系統(tǒng)調(diào)用ioctl提供了一種
執(zhí)行設備特定的命令的方法(如格式化軟盤某個磁道,這既不是讀操作也不是寫操作)。
4. int (*open) (struct inode *, struct file *);始終是對設備文件執(zhí)行的第一個操作。
5. int (*release) (struct inode *, struct file *);當file 結(jié)構(gòu)被釋放時,將調(diào)用這個操作。
4.3 RFID 程序的編寫
本系統(tǒng)采用的RFID 芯片是SONY 生產(chǎn)的RC-S600,它有自己的通信協(xié)議,并支持串口或者USB 口直接連接。這就大大方便了系統(tǒng)的開發(fā)與應用。由于本系統(tǒng)采用的是標準串口連接方式,因此針對應用程序的要求,我們首先要提供一套關于串口的API 接口函數(shù)。
1. int PortOpen(pportinfo_t pportinfo); 打開串口,返回文件描述符。pportinfo: 待設置的串口信息。
2. int PortSet(int fdcom, const pportinfo_t pportinfo);設置串口。fdcom: 串口文件描述符,pportinfo: 待設置的串口信息。
3. void PortClose(int fdcom);關閉串口。fdcom:串口文件描述符。
4. int PortSend(int fdcom, char *data, int datalen);發(fā)送數(shù)據(jù)。fdcom:串口描述符,data:待發(fā)送數(shù)據(jù),datalen:數(shù)據(jù)長度。返回實際發(fā)送長度 。
5. int PortRecv(int fdcom, char *data, int datalen, int baudrate); 接收數(shù)據(jù)。fdcom:串口描述符,data:接收緩沖區(qū),datalen.:接收長度, baudrate:波特率。返回實際讀入的長度。
完成了串口通信的基本函數(shù)后,可以通過由串口向RFID芯片發(fā)送命令字進行控制,以下為RC-S600的Command說明:1. Polling Command。從指定了System Code的卡里,取得制造ID(IDm)和制造Parameter(PMm)的指令。2. Diagnose R/W 。RC-S600系列進行自我診斷,取得診斷結(jié)果的指令。3. Turn off RF Power。將RC-S600系列的RF輸出置于Off;4. Check Firmware Version。取得RC-S600系列的Software的版本號;5. Control LED。對連接到RC-S600的LED進行On/Off;6.Communication Thru。對卡發(fā)送1次host指定Command,根據(jù)是否從卡收到Response,向host返回該Card Response Packet;7. Access I/O Register。對RC-S600系列的RF進行初期設定。
經(jīng)測試,本系統(tǒng)能對所用RFID芯片的指定命令字進行正確讀寫和返回。
5. 結(jié)論
本文給出了一種基于ARM 平臺的RFID 系統(tǒng)設計,現(xiàn)已通過實際測試。由于本系統(tǒng)采用的是標準接口設計,這就為以后的多功能開發(fā)平臺提供了理想的硬件環(huán)境。
參考文獻
[1] 胡曉娜. RFID 的前景.http://products.rfidchina.org . 2007.6。
[2] Atmel. Datasheet of AT91RM9200.http://www.atmel.com . 2003.8。
[3] 杜春雷.ARM 體系結(jié)構(gòu)與編程.北京:清華大學出版社.2003.5。
[4] 馬忠梅.AT91 系列ARM 核微控制器結(jié)構(gòu)與開發(fā).北京:北京航空航天大學出版社.2003.5。
[5] 劉淼.嵌入式系統(tǒng)接口設計與Linux 驅(qū)動程序開發(fā).北京:北京航空航天大學出版社.2006.5。
近年來,RFID(無線射頻)技術(shù)是正在興起的一項新興的自動識別技術(shù)。RFID 利用射頻方式進行非接觸雙向通信,從而實現(xiàn)對物體的識別,并將采集到的相關信息數(shù)據(jù)通過無線技術(shù)遠程進行傳輸。相較目前廣泛采用的條型碼技術(shù),RFID 具有讀取距離遠(幾米至幾十米)、穿透能力強(可透過包裝箱直接讀取信息)、抗污染、效率高(可同時處理多個標簽)、信息量大的特點。它的出現(xiàn)給物流和生產(chǎn)方面的工業(yè)應用帶來了革命性的影響[1]。
正是由于上述原因,本文提出了一種基于ARM 平臺的RFID 系統(tǒng)設計與實現(xiàn)方案,以滿足人們在嵌入式領域?qū)FID 技術(shù)的開發(fā)與應用。
2. 系統(tǒng)介紹
2.1 系統(tǒng)硬件設計
硬件系統(tǒng)框圖:如圖處理器采用現(xiàn)行嵌入式系統(tǒng)中最流行ARM系列,具體采用ATMEL公司的工業(yè)級ARM 芯片。FLASH為4M,采用的芯片是AM,用于存儲LINUX內(nèi)核,RAMDISK和一些系統(tǒng)配置文件和測試數(shù)據(jù)。SDRAM為 M,采用的芯片是MT48LC2M32B2TG-6。網(wǎng)絡接口的物理層芯片采用RTL8201。同時還配有輸入輸出設備,即LCD顯示屏和5×4鍵盤。電源采用穩(wěn)壓模塊輸出穩(wěn)定的電壓,同時設計有單鍵開關和充電電路等方便用戶的功能[2]。
我們采用LINUX作為系統(tǒng)的操作系統(tǒng),給標準LINUX打上支持ARM系列的補丁包后內(nèi)核便提供了對AT91RM9200的支持(我們稱之ARM-LINUX),在ARM-LINUX之下,編寫鍵盤,LCD,網(wǎng)卡,F(xiàn)LASH文件系統(tǒng)的驅(qū)動程序。在ARM-LINUX上編寫一個小型簡潔的GUI(圖形界面用戶接口),使程序更加模塊化,便用上層程序的編寫和以后系統(tǒng)的升級。如圖是軟件系統(tǒng)框架圖。
3.1 單鍵開關電路設計
單鍵開關設計必須考慮到以下幾點:一是單鍵開關必須穩(wěn)定,按一次鍵只有一次電源的通或斷;二是電流問題:因為單鍵開關無論是關機的時候還是開機的時候都要使用電源,所以必須保證其電流足夠小,減少電源的損耗。通過查找資料,我們設計了以下電路(圖3):
3.2 充電電路設計
充電電路可以為用戶提供很大的方便。一般情況充電電路需要達到的要求是:必須保證電池充電時不過充;充電時間不能太短,但同時也要保證充電電流不能太大;有充電指示。根據(jù)上面以上要求,我們設計了以下電路
3.3 PROTEL 電路設計和電路板布線的基本流程
原理圖部分:建立自己的元件庫。因為并不是所有的元件在PROTEL的元件庫中都存在,一般要根據(jù)自己實際所用的芯片建立自己的元件庫。繪制原理圖。當器件比較多的時候,可以采用層次設的方法。分模塊對系統(tǒng)進行設計,這樣可以使系統(tǒng)更加清晰,降低錯誤的可能性。原理圖畫好后,利用其自動編號功能對器件進行編號。PCB板部分.建立自己的封裝庫,同元件庫一樣,有時候必須建立自己的封裝庫,在畫封裝的時候,要嚴格按照芯片公司的資料繪制。為每一個元件設置封裝。用向?qū)Мa(chǎn)生PCB文件,定義好電路板的層數(shù)和邊界。利用設計同步器將器件導入到PCB中。根據(jù)具體的工藝設計好規(guī)則,如過孔大小,最小線寬。按照易于布線的原則對元件進行布局布線,在布線的時候要遵循一些原則。檢查錯誤。
4. 系統(tǒng)軟件設計
4.1 LINUX 在AT91RM9200 上的移植
AT91RM9200兩種啟動方式:1.其內(nèi)部存儲器地址為0x00100000-0x001FFFFF的部分存在一段啟動程序,如果選擇這種啟動模式在啟動時,0x00100000-0x001FFFFF部分的地址被映射到0x00000000,CPU運行這段程序,這段程序會往CPU的調(diào)試串口(或者是USB口)不停的發(fā)字符“C”,同時提供小于12K程序的串口(利用XMODEM協(xié)議)下載功能。2.可以直接從外部存儲器啟動,主要是連接在SPI(串行外部設備接口)和NCS0(CPU上的一個管腿,是EBI即外部總線接口的一部分,用于外部存儲器的尋址)上的SPI DataFlash,Two-wire EEPROM和連接在NCS0上的8比特并行存儲器。
根據(jù)CPU的啟動方式,我們可以這樣設計移植過程及系統(tǒng)的啟動方式。在系統(tǒng)移植階段,我們應用啟動方式1,通過其下載功能下載一個小于12K的程序(實際使用的程序為Loader,是開放源碼的軟件,可以在網(wǎng)上下載到)到SDRAM并運行,該程序可以提供大于12K的串口下載功能,用這個程序下載一個更大的程序到SDRAM中,而這個程序可以提供類似于PC機上BIOS的功能(實際使用的是U-BOOT,是開放源碼的軟件,可以在網(wǎng)上下載到),其功能主要有:LINUX系統(tǒng)引導,網(wǎng)卡驅(qū)動,TFTP下載功能,SDRAM和FLASH之間的讀寫功能。
通過其TFTP下載功能下載內(nèi)核到SDRAM,引導操作系統(tǒng)并進行測試。如果操作系統(tǒng)測試工作無誤后,可以應用U-BOOT的寫FLASH功能把U-BOOT和LINUX內(nèi)核寫到FLASH中,在應用程序開發(fā)階段應用CPU的啟動方式2,直接從FLASH啟動。這種方法的優(yōu)勢是:在內(nèi)核下載的時候,提供了TFTP下載功能,加快了速度。在應用程序開發(fā)階段,因為內(nèi)核(還有后面的RAMDISK)都是固化在FLASH中,可以省去其下載過程,同樣也可以節(jié)省時間[3]。
移植過程大致可分為以下幾個步驟:配置用戶環(huán)境及交叉編譯環(huán)境;編譯Loader和UBoot,其中要在UBoot中修改網(wǎng)卡驅(qū)動;3.配置Linux內(nèi)核;4.制作ramdisk文件系統(tǒng),并根據(jù)實際系統(tǒng)進行修改;5.移植Busybox;6.JFFS2文件系統(tǒng)的移植。在Linux內(nèi)核中已經(jīng)包含了MTD和JFFS2文件系統(tǒng)的驅(qū)動程序,但是必須針對具體的系統(tǒng)編寫驅(qū)動程序。具體步驟如下:1)由于ROM設備和MTDBlock設備的主設備號(major)都是31,所以如果你不想把JFFS2作為根文件系統(tǒng)的話,必須修改他們之一的major。2)編寫驅(qū)動程序:編寫讀,寫,復制接口(這些接口將被MTD驅(qū)動程序調(diào)用,提供給上層軟件的讀寫復制功能),定義map_info結(jié)構(gòu)體,以便MTD能夠從這個結(jié)構(gòu)體中得到讀寫函數(shù)的指針,最后還要定義FLASH的分區(qū)表。根據(jù)系統(tǒng)的設計,我們把4M的FLASH分成四個區(qū),第一個分區(qū)用來保存UBOOT及其參數(shù);第二個分區(qū)用來保存LINUX內(nèi)核;第三個分區(qū)用來保存RAMDISK;最后一個分區(qū)用來保存系統(tǒng)參數(shù)和用戶數(shù)據(jù)和測試數(shù)據(jù)。3)修改LINUX的配置文件,把驅(qū)動程序加入到內(nèi)核[4]。
4.2 LINUX 驅(qū)動程序的編寫
我們研究字符型設備的驅(qū)動程序的編寫,塊設備驅(qū)動程序跟字符設備驅(qū)動程序的編寫有一定的相似性。
驅(qū)動程序加載時,內(nèi)核會調(diào)用用戶定義的初始化程序。用戶用init_moudle(function name)標識初始化程序,其中的function name為編寫的初始化函數(shù)的函數(shù)名。用module_exit(function
name) 標識釋放設備程序,在初始化函數(shù)里驅(qū)動程序必須向操作系統(tǒng)注冊設備,以獲得系統(tǒng)資源和操作系統(tǒng)正確的調(diào)用驅(qū)動程序。在Linux中這個函數(shù)是register_chrdev,在fs/devices.h中其定義為:int register_chrdev(unsigned int major,const char* name,struct file_operation *fops)。
其中major是為設備向系統(tǒng)申請的主設備號,name驅(qū)動程序給設備定義的名字,fops是接下來要介紹的一個結(jié)構(gòu)體。在卸載的時候需要告知操作系統(tǒng)注銷注冊[5]。
下面簡要介紹一下file_operation結(jié)構(gòu)體中幾個主要的比較常用的方法。
1. ssize_t (*read) (struct file *, char *, size_t, loff_t *);用來從設備中讀取數(shù)據(jù)。
2. ssize_t (*write) (struct file *, const char *, size_t, loff_t *);向設備發(fā)送數(shù)據(jù)。
3. int (*ioctl) (struct inode *,struct file *,unsigned int,unsigned long);系統(tǒng)調(diào)用ioctl提供了一種
執(zhí)行設備特定的命令的方法(如格式化軟盤某個磁道,這既不是讀操作也不是寫操作)。
4. int (*open) (struct inode *, struct file *);始終是對設備文件執(zhí)行的第一個操作。
5. int (*release) (struct inode *, struct file *);當file 結(jié)構(gòu)被釋放時,將調(diào)用這個操作。
4.3 RFID 程序的編寫
本系統(tǒng)采用的RFID 芯片是SONY 生產(chǎn)的RC-S600,它有自己的通信協(xié)議,并支持串口或者USB 口直接連接。這就大大方便了系統(tǒng)的開發(fā)與應用。由于本系統(tǒng)采用的是標準串口連接方式,因此針對應用程序的要求,我們首先要提供一套關于串口的API 接口函數(shù)。
1. int PortOpen(pportinfo_t pportinfo); 打開串口,返回文件描述符。pportinfo: 待設置的串口信息。
2. int PortSet(int fdcom, const pportinfo_t pportinfo);設置串口。fdcom: 串口文件描述符,pportinfo: 待設置的串口信息。
3. void PortClose(int fdcom);關閉串口。fdcom:串口文件描述符。
4. int PortSend(int fdcom, char *data, int datalen);發(fā)送數(shù)據(jù)。fdcom:串口描述符,data:待發(fā)送數(shù)據(jù),datalen:數(shù)據(jù)長度。返回實際發(fā)送長度 。
5. int PortRecv(int fdcom, char *data, int datalen, int baudrate); 接收數(shù)據(jù)。fdcom:串口描述符,data:接收緩沖區(qū),datalen.:接收長度, baudrate:波特率。返回實際讀入的長度。
完成了串口通信的基本函數(shù)后,可以通過由串口向RFID芯片發(fā)送命令字進行控制,以下為RC-S600的Command說明:1. Polling Command。從指定了System Code的卡里,取得制造ID(IDm)和制造Parameter(PMm)的指令。2. Diagnose R/W 。RC-S600系列進行自我診斷,取得診斷結(jié)果的指令。3. Turn off RF Power。將RC-S600系列的RF輸出置于Off;4. Check Firmware Version。取得RC-S600系列的Software的版本號;5. Control LED。對連接到RC-S600的LED進行On/Off;6.Communication Thru。對卡發(fā)送1次host指定Command,根據(jù)是否從卡收到Response,向host返回該Card Response Packet;7. Access I/O Register。對RC-S600系列的RF進行初期設定。
經(jīng)測試,本系統(tǒng)能對所用RFID芯片的指定命令字進行正確讀寫和返回。
5. 結(jié)論
本文給出了一種基于ARM 平臺的RFID 系統(tǒng)設計,現(xiàn)已通過實際測試。由于本系統(tǒng)采用的是標準接口設計,這就為以后的多功能開發(fā)平臺提供了理想的硬件環(huán)境。
參考文獻
[1] 胡曉娜. RFID 的前景.http://products.rfidchina.org . 2007.6。
[2] Atmel. Datasheet of AT91RM9200.http://www.atmel.com . 2003.8。
[3] 杜春雷.ARM 體系結(jié)構(gòu)與編程.北京:清華大學出版社.2003.5。
[4] 馬忠梅.AT91 系列ARM 核微控制器結(jié)構(gòu)與開發(fā).北京:北京航空航天大學出版社.2003.5。
[5] 劉淼.嵌入式系統(tǒng)接口設計與Linux 驅(qū)動程序開發(fā).北京:北京航空航天大學出版社.2006.5。