<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          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.ex-cimer.com/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ī)可以控制讀寫(xiě)器1 讀寫(xiě)每個(gè)Type A 卡的某個(gè)塊數(shù)據(jù), 還可以同時(shí)控制讀寫(xiě)器2 讀寫(xiě)每個(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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();