基于MCF52235 的RFID 通用開發(fā)平臺設(shè)計
//==================================
SPI 構(gòu)件接口函數(shù)說明如下所示:
//==================================
uint8 hw_spi_init (uint8 spiNo,uint8 master);//SPI 初始化
uint8 hw_spi_send (uint8 spiNo,uint8 data [],uint8 len);//SPI 發(fā)送數(shù)據(jù)
uint8 hw_spi_re(uint8 spiNo,uint8 data[]); //SPI接收數(shù)據(jù)
uint8 hw_spi_enable_re_int (uint8 spiNo); //開SPI 接收中斷
uint8 hw_spi_disable_re_int (uint8 spiNo); //關(guān)SPI 接收中斷
//==================================
GPIO 構(gòu)件接口函數(shù)說明如下所示:
//==================================
uint8 hw_gpio_init (uint8 port,uint8 pin,uint8dir,uint8 state);//初始化端口為GPIO 引腳
uint8 hw_gpio_set (uint8 port,uint8 pin, uint8state); //設(shè)置指定引腳狀態(tài)
uint8 hw_gpio_get(uint8 port,uint8 pin);//獲取指定引腳狀態(tài)
uint8 hw_gpio_reverse(uint8 port,uint8 pin);//反轉(zhuǎn)指定引腳狀態(tài)
//==================================
高層構(gòu)件包括三個部分:FreeRTOS 操作系統(tǒng)在MCF52235 上的移植[13-14],Shell 的實現(xiàn),網(wǎng)絡(luò)命令和信息的封裝。 將FreeRTOS 移植到MCF52235主要是實現(xiàn)3 個底層匯編級的支持函數(shù),tk_frame(task *tk, int (*entry)(), int arg)函數(shù)為tk 進程創(chuàng)建堆棧幀保存進程的各種狀態(tài);tk_switch (task *tk)函數(shù)用于把當(dāng)前進程切換到tk 進程;tk_getsp()函數(shù)返回當(dāng)前堆棧指針。 另外,在FreeRTOS 中運行一個Shell 進程,進程函數(shù)為int keyboard (int param),可調(diào)試或查看系統(tǒng)狀態(tài)信息,比如各個進程的運行狀態(tài)、ARP 表、IP 地址、MAC 地址、連接狀態(tài)等。
Shell 實現(xiàn)的效果如圖5 所示。
在實際應(yīng)用中,通常一臺PC 主機管理若干讀卡器, 一個讀卡器可以為若干PC 主機服務(wù)。 每個PC 主機和讀卡器都具有不同的IP 地址, 一臺PC主機可以控制讀寫器1 讀寫每個Type A 卡的某個塊數(shù)據(jù), 還可以同時控制讀寫器2 讀寫每個TypeA 卡的另一個塊數(shù)據(jù), 或者請求讀取Type B 卡的UID, 整個網(wǎng)絡(luò)關(guān)系比較復(fù)雜。 因此采用將主機發(fā)送的命令、網(wǎng)絡(luò)信息、卡信息封裝在如下所示的若干個數(shù)據(jù)結(jié)構(gòu)中。
評論