少妇高潮久久久久久久久-亚洲精品乱码中文字幕-国产精品一区二区熟女91-尹人香蕉网在线观看视频-国产成人精选在线不卡-少妇一区二区三区精品-日韩色久悠悠婷婷综合-韩国毛片免费全部播放完整-又大又色又爽的视频

單片機(jī)TCP/IP開(kāi)發(fā)板

ZLMCU網(wǎng)

摘要: 本文根據(jù)作者在使用單片機(jī)TCP/IP開(kāi)發(fā)板過(guò)程中的經(jīng)驗(yàn)介紹了單片機(jī)TCP/IP開(kāi)發(fā)板的用途、如何選擇單片機(jī)TCP/IP開(kāi)發(fā)板、如何使用TCP/IP開(kāi)發(fā)板進(jìn)行新項(xiàng)目的開(kāi)發(fā)。對(duì)于需要實(shí)現(xiàn)單片機(jī)TCP/IP技術(shù)的初學(xué)者來(lái)說(shuō)有一定的借鑒意義。

關(guān)鍵詞: 單片機(jī);TCP/IP;開(kāi)發(fā)板;學(xué)習(xí)板;單片機(jī)上網(wǎng);

1 引 言

單片機(jī)TCP/IP開(kāi)發(fā)板(或稱之為單片機(jī)TCP/IP學(xué)習(xí)板)是為提供用戶學(xué)習(xí)單片機(jī)TCP/IP協(xié)議棧技術(shù),從而設(shè)計(jì)自己的基于單片機(jī)TCP/IP項(xiàng)目而提供的一種開(kāi)發(fā)板。

在當(dāng)今信息時(shí)代,計(jì)算機(jī)的聯(lián)網(wǎng)已經(jīng)慢慢的過(guò)渡到了嵌入式設(shè)備的聯(lián)網(wǎng),聯(lián)網(wǎng)技術(shù)就不得不提到TCP/IP協(xié)議棧,這就需要在嵌入式設(shè)備上實(shí)現(xiàn)嵌入式TCP/IP協(xié)議棧。對(duì)于高端的嵌入式CPU,可以運(yùn)行Linux等操作系統(tǒng)實(shí)現(xiàn)嵌入式TCP/IP協(xié)議棧相對(duì)比較容易。但是像51單片機(jī)、AVR單片機(jī)、PIC單片機(jī)上實(shí)現(xiàn)TCP/IP協(xié)議棧就比較復(fù)雜,因?yàn)門CP/IP協(xié)議棧對(duì)CPU 的速度、內(nèi)存消耗要求比較高。

于是在單片機(jī)上實(shí)現(xiàn)TCP/IP協(xié)議棧,如果完全從頭開(kāi)始實(shí)現(xiàn),則需要幾個(gè)月到幾年的實(shí)現(xiàn),對(duì)于單片機(jī)上網(wǎng)項(xiàng)目的開(kāi)發(fā)是一個(gè)重點(diǎn)和難點(diǎn)。于是就需要單片機(jī)TCP/IP開(kāi)發(fā)板。本文主要以51單片機(jī)上的TCP/IP協(xié)議棧為例。

2 單片機(jī)TCP/IP開(kāi)發(fā)板的用途

目前單片機(jī)上網(wǎng)技術(shù)是一個(gè)熱門技術(shù),很多高校學(xué)生選擇與此相關(guān)的畢業(yè)設(shè)計(jì),同時(shí)高校也有與此相關(guān)的項(xiàng)目。為了快速實(shí)現(xiàn)單片機(jī)TCP/IP,可以通過(guò)使用單片機(jī)TCP/IP開(kāi)發(fā)板來(lái)實(shí)現(xiàn)。一般一個(gè)單片機(jī)TCP/IP開(kāi)發(fā)板需要包含如下的內(nèi)容:

1.              單片機(jī)TCP/IP協(xié)議棧:用戶可以根據(jù)協(xié)議棧提供的用戶接口來(lái)實(shí)現(xiàn)TCP的發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作。最好是該協(xié)議棧能夠兼容BSD socket接口。

2.              硬件電路板及其相關(guān)連接線:用此硬件可以建立嵌入式TCP/IP實(shí)驗(yàn)環(huán)境。

3.              硬件原理圖:這可以方便用戶將相關(guān)硬件集成到自己的電路板中。

4.              配套開(kāi)發(fā)工具:在嵌入式TCP/IP實(shí)驗(yàn)環(huán)境中必須要有PC機(jī)端的軟件,用以和開(kāi)發(fā)板進(jìn)行通信。

3 如何選擇單片機(jī)TCP/IP開(kāi)發(fā)板

3. 1 各類開(kāi)發(fā)板

目前單片機(jī)TCP/IP一般有面向16位和32位的單片機(jī)的LWIP、面向8位單片機(jī)的uIP、面向51單片機(jī)的ZLIP等。目前51單片機(jī)上的TCP/IP協(xié)議棧以u(píng)IP和ZLIP為主,目前uIP的最高版本為V1.0,ZLIP的最高版本為ZLIP增值版V1.0。

市面上的開(kāi)發(fā)板有老古開(kāi)發(fā)網(wǎng)單片機(jī)TCP/IP開(kāi)發(fā)板套件、北京電子無(wú)憂網(wǎng)的51單片機(jī)TCP/IP上網(wǎng)開(kāi)發(fā)板、上海卓嵐的51單片機(jī)TCP/IP開(kāi)發(fā)板等。

3. 2 選擇注意事項(xiàng)

作為單片機(jī)上網(wǎng)技術(shù)學(xué)習(xí)者,選擇一款合適的開(kāi)發(fā)板對(duì)于學(xué)習(xí)是事半功倍的,選擇開(kāi)發(fā)板時(shí)應(yīng)該注意以下問(wèn)題:

1.             價(jià)格考慮。TCP/IP開(kāi)發(fā)板的最主要的東西在于TCP/IP協(xié)議棧本身,硬件的成本可以做得很低,所以不要因?yàn)榈蛢r(jià)而忽略了核心軟件。對(duì)于TCP/IP協(xié)議?梢詮娜缦路矫婵紤]:

a)         穩(wěn)定性:商家提供的TCP/IP協(xié)議棧是否有全面的測(cè)試,是否在連續(xù)PING的情況下不斷線,是否在發(fā)送接受大數(shù)據(jù)量(例如10M以上)時(shí)不丟失任何字節(jié)?對(duì)于使用者來(lái)說(shuō)如果協(xié)議棧不穩(wěn)定,那么對(duì)于項(xiàng)目的順利開(kāi)發(fā)將帶來(lái)很大麻煩。

b)        易用性:使用單片機(jī)TCP/IP開(kāi)發(fā)板的用戶一般都對(duì)于嵌入式TCP/IP的使用不太了解,這就需要開(kāi)發(fā)板提供更加完善的資料和使用手冊(cè)。包括函數(shù)定義、更多的例子程序等。

c)        廠家的技術(shù):某些廠家只是仿冒他人的開(kāi)發(fā)板,用戶在使用中遇到的問(wèn)題根本無(wú)法給于解答。這就需要用戶問(wèn)清楚該協(xié)議棧是否是廠家自己設(shè)計(jì)的。

2.             外包裝和質(zhì)量保證:外包裝不好可是使得用戶收到時(shí),開(kāi)發(fā)板已經(jīng)在運(yùn)輸過(guò)程中受損而無(wú)法使用。

4 使用TCP/IP開(kāi)發(fā)板

下面介紹如何使用TCP/IP開(kāi)發(fā)板來(lái)進(jìn)行項(xiàng)目開(kāi)發(fā)。

4. 1 開(kāi)發(fā)板套件

為了建立單片機(jī)TCP/IP開(kāi)發(fā)環(huán)境,需要一套開(kāi)發(fā)套件,一般包含有:圖中:①開(kāi)發(fā)板。②開(kāi)發(fā)板光盤(pán)。③USB線。④對(duì)連網(wǎng)線。⑤普通網(wǎng)線。⑥串口線。

其中TCP/IP協(xié)議棧相關(guān)資料在②開(kāi)發(fā)板光盤(pán)上,③USB線一般用于從PC機(jī)USB端口獲得電。網(wǎng)線用于和PC機(jī)通信,⑥串口線用于和PC機(jī)串口通信。

4. 2 開(kāi)發(fā)板部件

單片機(jī)TCP/IP開(kāi)發(fā)板

       一個(gè)開(kāi)發(fā)板本身是一個(gè)單片機(jī)系統(tǒng),包含有CPU、RAM、電源模塊、網(wǎng)絡(luò)模塊。網(wǎng)絡(luò)模塊有很多選擇,這里以RTL8019AS為例來(lái)說(shuō)明。對(duì)于外部接口,最主要的是:⑨網(wǎng)線接口和⑩串口,它們是開(kāi)發(fā)板和PC連接的接口。

4. 3 建立開(kāi)發(fā)環(huán)境

      建立單片機(jī)TCP/IP開(kāi)發(fā)環(huán)境的步驟有如下幾步:

1.  連線:連線是將開(kāi)發(fā)板與PC機(jī)的串口連接,給開(kāi)發(fā)板上電,然后將開(kāi)發(fā)板連接到和PC在同一個(gè)網(wǎng)段中。

2.  安裝軟件:需要安裝開(kāi)發(fā)板的編譯環(huán)境。對(duì)于51單片機(jī),一般選用 KeilC51作為編譯器。設(shè)置IP地址,由于必須要求PC機(jī)和開(kāi)發(fā)板處于同一個(gè)網(wǎng)段,所以需要將PC機(jī)的IP地址設(shè)置為開(kāi)發(fā)板IP地址的同一個(gè)網(wǎng)段的IP地址(有時(shí)候也需要設(shè)置為特定的IP地址)。

3.  測(cè)試連接:一般可以通過(guò)PING命令,例如ping 192.168.0.2 –t來(lái)測(cè)試開(kāi)發(fā)板和PC機(jī)的網(wǎng)絡(luò)是否處于連通狀態(tài)。

4. 3 開(kāi)發(fā)基于開(kāi)發(fā)板的新程序

       這里介紹如何在不修改開(kāi)發(fā)板硬件的基礎(chǔ)上,開(kāi)發(fā)自己的單片機(jī)TCP/IP程序。開(kāi)發(fā)新程序就是在開(kāi)發(fā)板提供的TCP/IP協(xié)議棧的基礎(chǔ)上開(kāi)發(fā)應(yīng)用層的協(xié)議。由于TCP層和IP層都已經(jīng)提供,所以用戶不用考慮其中的運(yùn)行機(jī)制。TCP/IP協(xié)議棧一般為用戶提供如下的接口:

1.  初始化協(xié)議棧和釋放協(xié)議棧的函數(shù)接口,類似Init(), Release()之類的函數(shù)。

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函數(shù),用戶調(diào)用此類函數(shù)進(jìn)行發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作。

3.  接受連接、接收數(shù)據(jù)、被動(dòng)關(guān)閉的處理:由于此類操作是上位機(jī)發(fā)起的,所以TCP/IP協(xié)議棧必須提供一套機(jī)制來(lái)處理此類事件的發(fā)生。一般來(lái)說(shuō)有兩種方法:

a)         主動(dòng)等待:例如使用BSD的recv()函數(shù)等待數(shù)據(jù)的到來(lái)。

b)        回調(diào)機(jī)制:采用類似MFC的OnReceive()函數(shù)的回調(diào)機(jī)制,也即是說(shuō)在接收到數(shù)據(jù)的時(shí)候會(huì)自動(dòng)調(diào)用OnReceive()函數(shù)。

那么用戶如何使用以上的接口來(lái)實(shí)現(xiàn)遠(yuǎn)程控制、遠(yuǎn)程數(shù)據(jù)采集呢?方法很簡(jiǎn)單。

例如現(xiàn)在需要實(shí)現(xiàn)一個(gè)對(duì)LED燈的亮和滅的遠(yuǎn)程控制應(yīng)用。首先PC機(jī)使用TCP/IP發(fā)送工具例如SocketDlgTest程序發(fā)送一個(gè)字節(jié)的“1”到開(kāi)發(fā)板(根據(jù)開(kāi)發(fā)板的IP地址發(fā)送)。開(kāi)發(fā)板在OnReceive函數(shù)中發(fā)現(xiàn)收到的是“1”,那么就通過(guò)P1端口將燈打開(kāi);反之如果收到的是“0”則將燈熄滅。

如果是實(shí)現(xiàn)一個(gè)遠(yuǎn)程數(shù)據(jù)采集的應(yīng)用,例如定時(shí)進(jìn)行溫度采集。首先PC機(jī)使用SocketDlgTest程序等待發(fā)來(lái)數(shù)據(jù)。開(kāi)發(fā)板每隔一段時(shí)間采集一個(gè)數(shù)據(jù),然后通過(guò)send()函數(shù)將數(shù)據(jù)發(fā)送給PC機(jī)(根據(jù)PC機(jī)的IP地址發(fā)送),這樣PC就接收到了當(dāng)前的遠(yuǎn)程溫度數(shù)據(jù)。

4. 3 開(kāi)發(fā)基于新硬件的程序

通過(guò)“開(kāi)發(fā)基于開(kāi)發(fā)板的新程序”一節(jié)的介紹后,開(kāi)發(fā)基于新硬件的程序就相對(duì)容易了。這只要根據(jù)單片機(jī)TCP/IP開(kāi)發(fā)板相應(yīng)的硬件調(diào)整通過(guò)單片機(jī)的控制端口例如P1進(jìn)行控制或者數(shù)據(jù)采集即可。