基于MCF52235 的RFID 通用開發平臺設計
MCF52235與LCD構件的通信同樣采用串行方式。串行通信的一次數據分3個字節傳輸。第一個字節數據格式為11111AB0,表示串行控制,A是選擇數據方向,1表示LCD到MCF52235,0表示MCF52235到LCD. B是選擇數據類型,1表示數據為顯示數據,0表示數據為控制命令。第二個字節格式為DDDD0000,表示8位數據的高4位。第三個字節格式為0000DDDD表示8位數據的低4位。
本文引用地址:http://www.104case.com/article/266844.htmLCD 構件接口函數說明如下所示:
//==================================
void lcd_init();//初始化
void lcd_display (const char* buf, int line);//在第line 行顯示buf,line>=0 && line<= 3
//==================================
USB 軟件構件比較簡單,只需對MC9S12UF32的USB 模塊進行初始化,UF32 便可以和MCF52235 進行交互了。 由于MCF52235 與UF32采用串口連接, 因此只要在串口中斷程序中調用USB 構件,UF32 便可從串口接收數據, 然后通過USB 傳送給上位機。 上位機通過USB 接口發送數據給UF32 也產生一個中斷,在中斷程序把數據緩存起來再調用USB 構件, 通過串口發送給MCF52235. USB 構件接口函數說明如下所示:
//==================================
void uf32_uart_init(void);//uf32 模塊初始化
void uf32_uart_send(uint8 ch[],uint32 n); //發送數據
uint32 uf32_uart_rev (uint8 ch [],uint32 n); //接收數據
//==================================
語音構件相對比較簡單,接口函數說明如下所示:
//==================================
void audio_init();//語音模塊初始化
void audio_play(int i);//語音播放
void audio_stop();//語音停止
//==================================
串口構件接口函數說明如下所示:
//==================================
uint8 hw_uart_init(uint8 uartNo, uint32 baud);//串口初始化
uint8 hw_uart_rev_one (uint8 uartNo, uint8 *fp); //串口接收一個字節到fp
uint8 hw_uart_send_one(uint8 uartNo, unit8 ch);
//串口發送一個字節
//==================================
SPI 構件接口函數說明如下所示:
//==================================
uint8 hw_spi_init (uint8 spiNo,uint8 master);//SPI 初始化
uint8 hw_spi_send (uint8 spiNo,uint8 data [],uint8 len);//SPI 發送數據
uint8 hw_spi_re(uint8 spiNo,uint8 data[]); //SPI接收數據
uint8 hw_spi_enable_re_int (uint8 spiNo); //開SPI 接收中斷
uint8 hw_spi_disable_re_int (uint8 spiNo); //關SPI 接收中斷
//==================================
GPIO 構件接口函數說明如下所示:
//==================================
uint8 hw_gpio_init (uint8 port,uint8 pin,uint8dir,uint8 state);//初始化端口為GPIO 引腳
uint8 hw_gpio_set (uint8 port,uint8 pin, uint8state); //設置指定引腳狀態
uint8 hw_gpio_get(uint8 port,uint8 pin);//獲取指定引腳狀態
uint8 hw_gpio_reverse(uint8 port,uint8 pin);//反轉指定引腳狀態
//==================================
高層構件包括三個部分:FreeRTOS 操作系統在MCF52235 上的移植[13-14],Shell 的實現,網絡命令和信息的封裝。 將FreeRTOS 移植到MCF52235主要是實現3 個底層匯編級的支持函數,tk_frame(task *tk, int (*entry)(), int arg)函數為tk 進程創建堆棧幀保存進程的各種狀態;tk_switch (task *tk)函數用于把當前進程切換到tk 進程;tk_getsp()函數返回當前堆棧指針。 另外,在FreeRTOS 中運行一個Shell 進程,進程函數為int keyboard (int param),可調試或查看系統狀態信息,比如各個進程的運行狀態、ARP 表、IP 地址、MAC 地址、連接狀態等。
Shell 實現的效果如圖5 所示。
在實際應用中,通常一臺PC 主機管理若干讀卡器, 一個讀卡器可以為若干PC 主機服務。 每個PC 主機和讀卡器都具有不同的IP 地址, 一臺PC主機可以控制讀寫器1 讀寫每個Type A 卡的某個塊數據, 還可以同時控制讀寫器2 讀寫每個TypeA 卡的另一個塊數據, 或者請求讀取Type B 卡的UID, 整個網絡關系比較復雜。 因此采用將主機發送的命令、網絡信息、卡信息封裝在如下所示的若干個數據結構中。
//==================================
struct invite_info //PC 主機發送的讀卡請求
{ char del_or_add; //主機離開或加入
uint8 type; //卡的類型
uint8 block; //要訪問的數據塊
uint8 password[6]; //塊的密碼
};
struct ip_arrays_B //讀Type B 卡信息
{ ip_addr ipaddress; //IP 地址
int port; //UDP 端口號
};
struct send_data_type //發送到主機的數據
{ uint8 sn[4]; //序列號
uint8 block; //塊號
uint8 data[16]; //16 個字節塊數據
uint8 ret; //返回值
};
struct IC_ope //用于消費用途的RFID 應用
{
uint8 block; //總的金額數
float fsub; //每次刷卡扣除的金額數量
uint8 *pass;
};
struct record_info //記錄卡信息
{ //此塊引用計數,0 表示沒有請求讀這塊數據
uint8 ref; //引用計數
uint8 block; //塊號
uint8 password[6]; //塊的訪問密碼
};
struct ip_arrays_A //讀Type A 卡信息
{ ip_addr ipaddress; //IP 地址
int port; // UDP 端口號
uint8 block [num_of_rf_structs]; //這個UDP連接要讀取的所有塊
};
struct net_cmd //發送到板子的命令
{ uint8 lenth; //請求數據長度
uint8 cmdope; //操作碼
uint8 data[1]; //數據
};//=================================
3 RFID 通用開發平臺應用
基于此平臺文中開發了學生機房上機刷卡系統。 在每個機房安裝一臺讀卡器,PC 主機的數據庫中存儲了每個機房的課表、任課教師和學生的信息。 學生持卡到各個機房的讀卡器上刷卡,讀卡器將讀到的信息通過網絡傳輸到PC 主機上,統計學生人數和上、下課時間等情況, 相關信息顯示在LCD 上并進行語音提示。 PC 端軟件實現了網絡通信功能和學生機房上機刷卡管理系統。 網絡通信通過CManagerDlg:: m_skInfo 和CManagerDlg::
m_skCmd 這2 個sokcet 接口完成。 學生機房上機刷卡管理系統開發軟件采用VC++2012 和SQLServer 2012 關系型數據庫管理系統。 學生機房上機刷卡管理系統界面如圖6 所示。

4 結語
現有RFID 系統開發基本是根據具體應用需求進行單獨設計的。 而這些不同的應用系統在軟、硬件部分具有很大的重復性,為提高軟、硬件的可重用性,文中通過分析RFID 射頻識別系統一般模型,提出了一種基于MCF52235 的RFID 通用開發平臺軟、硬件構件化設計方案,設計了集成多種接口的具備通用功能的RFID 開發平臺,并將該平臺應用于學生機房上機管理系統中。 實踐證明它為RFID 系統開發提供了一個快速、通用的軟、硬件模型。
pa相關文章:pa是什么
上拉電阻相關文章:上拉電阻原理 鎖相環相關文章:鎖相環原理
評論