新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MCF52235 的RFID 通用開(kāi)發(fā)平臺(tái)設(shè)計(jì)

基于MCF52235 的RFID 通用開(kāi)發(fā)平臺(tái)設(shè)計(jì)

作者: 時(shí)間:2014-12-15 來(lái)源:網(wǎng)絡(luò) 收藏

  與LCD構(gòu)件的通信同樣采用串行方式。串行通信的一次數(shù)據(jù)分3個(gè)字節(jié)傳輸。第一個(gè)字節(jié)數(shù)據(jù)格式為11111AB0,表示串行控制,A是選擇數(shù)據(jù)方向,1表示LCD到,0表示到LCD. B是選擇數(shù)據(jù)類型,1表示數(shù)據(jù)為顯示數(shù)據(jù),0表示數(shù)據(jù)為控制命令。第二個(gè)字節(jié)格式為DDDD0000,表示8位數(shù)據(jù)的高4位。第三個(gè)字節(jié)格式為0000DDDD表示8位數(shù)據(jù)的低4位。

本文引用地址:http://www.butianyuan.cn/article/266844.htm

  LCD 構(gòu)件接口函數(shù)說(shuō)明如下所示:

  //==================================

  void lcd_init();//初始化

  void lcd_display (const char* buf, int line);//在第line 行顯示buf,line>=0 && line<= 3

  //==================================

  USB 軟件構(gòu)件比較簡(jiǎn)單,只需對(duì)MC9S12UF32的USB 模塊進(jìn)行初始化,UF32 便可以和MCF52235 進(jìn)行交互了。 由于MCF52235 與UF32采用串口連接, 因此只要在串口中斷程序中調(diào)用USB 構(gòu)件,UF32 便可從串口接收數(shù)據(jù), 然后通過(guò)USB 傳送給上位機(jī)。 上位機(jī)通過(guò)USB 接口發(fā)送數(shù)據(jù)給UF32 也產(chǎn)生一個(gè)中斷,在中斷程序把數(shù)據(jù)緩存起來(lái)再調(diào)用USB 構(gòu)件, 通過(guò)串口發(fā)送給MCF52235. USB 構(gòu)件接口函數(shù)說(shuō)明如下所示:

  //==================================

  void uf32_uart_init(void);//uf32 模塊初始化

  void uf32_uart_send(uint8 ch[],uint32 n); //發(fā)送數(shù)據(jù)

  uint32 uf32_uart_rev (uint8 ch [],uint32 n); //接收數(shù)據(jù)

  //==================================

  語(yǔ)音構(gòu)件相對(duì)比較簡(jiǎn)單,接口函數(shù)說(shuō)明如下所示:

  //==================================

  void audio_init();//語(yǔ)音模塊初始化

  void audio_play(int i);//語(yǔ)音播放

  void audio_stop();//語(yǔ)音停止

  //==================================

  串口構(gòu)件接口函數(shù)說(shuō)明如下所示:

  //==================================

  uint8 hw_uart_init(uint8 uartNo, uint32 baud);//串口初始化

  uint8 hw_uart_rev_one (uint8 uartNo, uint8 *fp); //串口接收一個(gè)字節(jié)到fp

  uint8 hw_uart_send_one(uint8 uartNo, unit8 ch);

  //串口發(fā)送一個(gè)字節(jié)

  //==================================

  SPI 構(gòu)件接口函數(shù)說(shuō)明如下所示:

  //==================================

  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); //開(kāi)SPI 接收中斷

  uint8 hw_spi_disable_re_int (uint8 spiNo); //關(guān)SPI 接收中斷

  //==================================

  GPIO 構(gòu)件接口函數(shù)說(shuō)明如下所示:

  //==================================

  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)件包括三個(gè)部分:FreeRTOS 操作系統(tǒng)在MCF52235 上的移植[13-14],Shell 的實(shí)現(xiàn),網(wǎng)絡(luò)命令和信息的封裝。 將FreeRTOS 移植到MCF52235主要是實(shí)現(xiàn)3 個(gè)底層匯編級(jí)的支持函數(shù),tk_frame(task *tk, int (*entry)(), int arg)函數(shù)為tk 進(jìn)程創(chuàng)建堆棧幀保存進(jìn)程的各種狀態(tài);tk_switch (task *tk)函數(shù)用于把當(dāng)前進(jìn)程切換到tk 進(jìn)程;tk_getsp()函數(shù)返回當(dāng)前堆棧指針。 另外,在FreeRTOS 中運(yùn)行一個(gè)Shell 進(jìn)程,進(jìn)程函數(shù)為int keyboard (int param),可調(diào)試或查看系統(tǒng)狀態(tài)信息,比如各個(gè)進(jìn)程的運(yùn)行狀態(tài)、ARP 表、IP 地址、MAC 地址、連接狀態(tài)等。

  Shell 實(shí)現(xiàn)的效果如圖5 所示。

  在實(shí)際應(yīng)用中,通常一臺(tái)PC 主機(jī)管理若干讀卡器, 一個(gè)讀卡器可以為若干PC 主機(jī)服務(wù)。 每個(gè)PC 主機(jī)和讀卡器都具有不同的IP 地址, 一臺(tái)PC主機(jī)可以控制讀寫器1 讀寫每個(gè)Type A 卡的某個(gè)塊數(shù)據(jù), 還可以同時(shí)控制讀寫器2 讀寫每個(gè)TypeA 卡的另一個(gè)塊數(shù)據(jù), 或者請(qǐng)求讀取Type B 卡的UID, 整個(gè)網(wǎng)絡(luò)關(guān)系比較復(fù)雜。 因此采用將主機(jī)發(fā)送的命令、網(wǎng)絡(luò)信息、卡信息封裝在如下所示的若干個(gè)數(shù)據(jù)結(jié)構(gòu)中。

  //==================================

  struct invite_info //PC 主機(jī)發(fā)送的讀卡請(qǐng)求

  { char del_or_add; //主機(jī)離開(kāi)或加入

  uint8 type; //卡的類型

  uint8 block; //要訪問(wèn)的數(shù)據(jù)塊

  uint8 password[6]; //塊的密碼

  };

  struct ip_arrays_B //讀Type B 卡信息

  { ip_addr ipaddress; //IP 地址

  int port; //UDP 端口號(hào)

  };

  struct send_data_type //發(fā)送到主機(jī)的數(shù)據(jù)

  { uint8 sn[4]; //序列號(hào)

  uint8 block; //塊號(hào)

  uint8 data[16]; //16 個(gè)字節(jié)塊數(shù)據(jù)

  uint8 ret; //返回值

  };

  struct IC_ope //用于消費(fèi)用途的 應(yīng)用

  {

  uint8 block; //總的金額數(shù)

  float fsub; //每次刷卡扣除的金額數(shù)量

  uint8 *pass;

  };

  struct record_info //記錄卡信息

  { //此塊引用計(jì)數(shù),0 表示沒(méi)有請(qǐng)求讀這塊數(shù)據(jù)

  uint8 ref; //引用計(jì)數(shù)

  uint8 block; //塊號(hào)

  uint8 password[6]; //塊的訪問(wèn)密碼

  };

  struct ip_arrays_A //讀Type A 卡信息

  { ip_addr ipaddress; //IP 地址

  int port; // UDP 端口號(hào)

  uint8 block [num_of_rf_structs]; //這個(gè)UDP連接要讀取的所有塊

  };

  struct net_cmd //發(fā)送到板子的命令

  { uint8 lenth; //請(qǐng)求數(shù)據(jù)長(zhǎng)度

  uint8 cmdope; //操作碼

  uint8 data[1]; //數(shù)據(jù)

  };//=================================

  3 通用開(kāi)發(fā)平臺(tái)應(yīng)用

  基于此平臺(tái)文中開(kāi)發(fā)了學(xué)生機(jī)房上機(jī)刷卡系統(tǒng)。 在每個(gè)機(jī)房安裝一臺(tái)讀卡器,PC 主機(jī)的數(shù)據(jù)庫(kù)中存儲(chǔ)了每個(gè)機(jī)房的課表、任課教師和學(xué)生的信息。 學(xué)生持卡到各個(gè)機(jī)房的讀卡器上刷卡,讀卡器將讀到的信息通過(guò)網(wǎng)絡(luò)傳輸?shù)絇C 主機(jī)上,統(tǒng)計(jì)學(xué)生人數(shù)和上、下課時(shí)間等情況, 相關(guān)信息顯示在LCD 上并進(jìn)行語(yǔ)音提示。 PC 端軟件實(shí)現(xiàn)了網(wǎng)絡(luò)通信功能和學(xué)生機(jī)房上機(jī)刷卡管理系統(tǒng)。 網(wǎng)絡(luò)通信通過(guò)CManagerDlg:: m_skInfo 和CManagerDlg::

  m_skCmd 這2 個(gè)sokcet 接口完成。 學(xué)生機(jī)房上機(jī)刷卡管理系統(tǒng)開(kāi)發(fā)軟件采用VC++2012 和SQLServer 2012 關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。 學(xué)生機(jī)房上機(jī)刷卡管理系統(tǒng)界面如圖6 所示。

  

 

  4 結(jié)語(yǔ)

  現(xiàn)有 系統(tǒng)開(kāi)發(fā)基本是根據(jù)具體應(yīng)用需求進(jìn)行單獨(dú)設(shè)計(jì)的。 而這些不同的應(yīng)用系統(tǒng)在軟、硬件部分具有很大的重復(fù)性,為提高軟、硬件的可重用性,文中通過(guò)分析RFID 射頻識(shí)別系統(tǒng)一般模型,提出了一種基于MCF52235 的RFID 通用開(kāi)發(fā)平臺(tái)軟、硬件構(gòu)件化設(shè)計(jì)方案,設(shè)計(jì)了集成多種接口的具備通用功能的RFID 開(kāi)發(fā)平臺(tái),并將該平臺(tái)應(yīng)用于學(xué)生機(jī)房上機(jī)管理系統(tǒng)中。 實(shí)踐證明它為RFID 系統(tǒng)開(kāi)發(fā)提供了一個(gè)快速、通用的軟、硬件模型。

pa相關(guān)文章:pa是什么


上拉電阻相關(guān)文章:上拉電阻原理
鎖相環(huán)相關(guān)文章:鎖相環(huán)原理

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: RFID MCF52235 CAN

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉