單片機TCP/IP開發板(或稱之為單片機TCP/IP學習板)是為提供用戶學習單片機TCP/IP協定棧技術,從而設計自己的基於單片機TCP/IP項目而提供的一種開發板。51單片機、AVR單片機、PIC單片機上實現TCP/IP協定棧就比較複雜,因為TCP/IP協定棧對CPU 的速度、記憶體消耗要求比較高。
基本介紹
- 中文名:單片機TCP/IP開發板
- 別名:單片機TCP/IP學習板
- 類別:上網技術
- 注意事項:考慮價格、穩定性、 易用性等
用途,如何選擇,使用,
用途
目前單片機上網技術是一個熱門技術,很多高校學生選擇與此相關的畢業設計,同時高校也有與此相關的項目。為了快速實現單片機TCP/IP,可以通過使用單片機TCP/IP開發板來實現。一般一個單片機TCP/IP開發板需要包含如下的內容:
2. 硬體電路板及其相關連線線:用此硬體可以建立嵌入式TCP/IP實驗環境。
3. 硬體原理圖:這可以方便用戶將相關硬體集成到自己的電路板中。
4. 配套開發工具:在嵌入式TCP/IP實驗環境中必須要有PC機端的軟體,用以和開發板進行通信。
如何選擇
2. 1 各類開發板
目前單片機TCP/IP一般有面向16位和32位的單片機的LWIP、面向8位單片機的uIP、面向51單片機的ZLIP等。目前51單片機上的TCP/IP協定棧以uIP和ZLIP為主,目前uIP的最高版本為V1.0,ZLIP的最高版本為ZLIP增值版V1.0。
2. 2 選擇注意事項
作為單片機上網技術學習者,選擇一款合適的開發板對於學習是事半功倍的,選擇開發板時應該注意以下問題:
1. 價格考慮。TCP/IP開發板的最主要的東西在於TCP/IP協定棧本身,硬體的成本可以做得很低,所以不要因為低價而忽略了核心軟體。對於TCP/IP協定棧可以從如下方面考慮:
a) 穩定性:商家提供的TCP/IP協定棧是否有全面的測試,是否在連續PING的情況下不斷線,是否在傳送接受大數據量(例如10M以上)時不丟失任何位元組?對於使用者來說如果協定棧不穩定,那么對於項目的順利開發將帶來很大麻煩。
b) 易用性:使用單片機TCP/IP開發板的用戶一般都對於嵌入式TCP/IP的使用不太了解,這就需要開發板提供更加完善的資料和使用手冊。包括函式定義、更多的例子程式等。
c) 廠家的技術:某些廠家只是仿冒他人的開發板,用戶在使用中遇到的問題根本無法給於解答。這就需要用戶問清楚該協定棧是否是廠家自己設計的。
2. 外包裝和質量保證:外包裝不好可是使得用戶收到時,開發板已經在運輸過程中受損而無法使用。
使用
下面介紹如何使用TCP/IP開發板來進行項目開發。
3. 1 開發板套件
為了建立單片機TCP/IP開發環境,需要一套開發套件,一般包含有:①開發板。②開發板光碟。③USB線。④對連網線。⑤普通網線。⑥串口線。其中TCP/IP協定棧相關資料在②開發板光碟上,③USB線一般用於從PC機USB連線埠獲得電。網線用於和PC機通信,⑥串口線用於和PC機串口通信。
3. 2 開發板部件
一個開發板本身是一個單片機系統,包含有CPU、RAM、電源模組、網路模組。網路模組有很多選擇,這裡以RTL8019AS為例來說明。對於外部接口,最主要的是:⑨網線接口和⑩串口,它們是開發板和PC連線的接口。
3. 3 建立開發環境
建立單片機TCP/IP開發環境的步驟有如下幾步:
1. 連線:連線是將開發板與PC機的串口連線,給開發板上電,然後將開發板連線到和PC在同一個網段中。
2. 安裝軟體:需要安裝開發板的編譯環境。對於51單片機,一般選用KeilC51作為編譯器。設定IP地址,由於必須要求PC機和開發板處於同一個網段,所以需要將PC機的IP位址設定為開發板IP位址的同一個網段的IP位址(有時候也需要設定為特定的IP位址)。
3. 3 開發基於開發板的新程式
這裡介紹如何在不修改開發板硬體的基礎上,開發自己的單片機TCP/IP程式。開發新程式就是在開發板提供的TCP/IP協定棧的基礎上開發套用層的協定。由於TCP層和IP層都已經提供,所以用戶不用考慮其中的運行機制。TCP/IP協定棧一般為用戶提供如下的接口:
1. 初始化協定棧和釋放協定棧的函式接口,類似Init(), Release()之類的函式。
2. 提供類似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函式,用戶調用此類函式進行發起連線、接受連線、傳送數據、接收數據、關閉連線等操作。
3. 接受連線、接收數據、被動關閉的處理:由於此類操作是上位機發起的,所以TCP/IP協定棧必須提供一套機制來處理此類事件的發生。一般來說有兩種方法:
a) 主動等待:例如使用BSD的recv()函式等待數據的到來。
b) 回調機制:採用類似MFC的OnReceive()函式的回調機制,也即是說在接收到數據的時候會自動調用OnReceive()函式。
那么用戶如何使用以上的接口來實現遠程控制、遠程數據採集呢?方法很簡單。
例如現在需要實現一個對LED燈的亮和滅的遠程控制套用。首先PC機使用TCP/IP傳送工具例如SocketDlgTest程式傳送一個位元組的“1”到開發板(根據開發板的IP位址傳送)。開發板在OnReceive函式中發現收到的是“1”,那么就通過P1連線埠將燈打開;反之如果收到的是“0”則將燈熄滅。
如果是實現一個遠程數據採集的套用,例如定時進行溫度採集。首先PC機使用SocketDlgTest程式等待發來數據。開發板每隔一段時間採集一個數據,然後通過send()函式將數據傳送給PC機(根據PC機的IP位址傳送),這樣PC就接收到了當前的遠程溫度數據。