一款基于FPGA的RFID閱讀器設(shè)計(jì)
初始化部分
/*URAT 初始化*/
XUartLite_Initialize( Uart,
XPAR_RS232_DEVICE_ID)
/*LCD 初始化*/
void lcd_init(unsigned int base_addr)
/*URAT 開(kāi)中斷*/
void XUartLite_EnableInterrupt ( XUartLite *
InstancePtr)
/*設(shè)置URAT 初始化*/
void XUartLite_SetSendHandler(XUartLite
* InstancePtr, XUartLite_Handler FuncPtr, void
*CallBackRef)
/*設(shè)置URAT 的中斷服務(wù)程序*/
void XUartLite_SetRecvHandler(XUartLite *
InstancePtr, , XUartLite_Handler
XUartLite_InterruptHandle, void * CallBackRef)
初始化完成以后,然后進(jìn)入一個(gè)無(wú)限循環(huán)。
/*判斷是否有鍵按下*/
XGpio_InterruptGetStatus(XGpio *InstancePtr)
/*發(fā)送讀標(biāo)簽命令*/
for (j=0;jcount ;j++)
{ XUartLite_SendByte(UARTLITE_0_BASEA
DDR, *(commanda+j) );
wait(50000);
}
/*如果對(duì)列不為空*/
If(!IsEmptyQuque())
/* 讀取隊(duì)列數(shù)據(jù) */
Read_Quque(data )
/* 寫(xiě)入FLASH*/
void flash_write(Xuint32 addr, long data)
對(duì)FLASH 的操作首先要塊檫除,然后才能寫(xiě),對(duì)FLASH 寫(xiě)的代碼如下:
void flash_write(Xuint32 addr, long data)
{XIo_Out32(flash_base_addr + (0x555 2),
0x00aa00aa);
XIo_Out32(flash_base_addr + (0xaaa 2),
0x00550055);
XIo_Out32(flash_base_addr + (0x555 2),
0x00a000a0);
XIo_Out32(addr, data);
return;
}
程序編寫(xiě)完成后,經(jīng)過(guò)編譯和消除錯(cuò)誤后,下載到目標(biāo)板,在FPGA 開(kāi)發(fā)板運(yùn)行程序,在LCD得到標(biāo)簽信息,見(jiàn)圖6。
圖6 標(biāo)簽信息在LCD 的顯示
6 結(jié) 論
RFID 技術(shù)是近年來(lái)發(fā)展起來(lái)的一種新型的自動(dòng)識(shí)別技術(shù)。FPGA 技術(shù)是未來(lái)硬件廣泛使用的一種技術(shù),本文結(jié)合將RFID 技術(shù)與FPGA 技術(shù)相結(jié)合,研究和實(shí)現(xiàn)了一種新結(jié)構(gòu)的閱讀器,基于FPGA的閱讀器具有結(jié)構(gòu)靈活、體積小、升級(jí)容易和易擴(kuò)展等優(yōu)點(diǎn)。本文給出了閱讀器的總體結(jié)構(gòu)、硬件部分結(jié)構(gòu)和軟件部分結(jié)構(gòu),研究了RFID 射頻模塊與FPGA 之間的接口實(shí)現(xiàn)及標(biāo)簽信息在LCD 顯示。具有廣泛的使用價(jià)值。
評(píng)論