歡迎來(lái)到《圣博凱斯》變頻供水設(shè)備官網(wǎng)
精銳于專業(yè) / 卓然于品質(zhì) -- 20年專注于供水行業(yè),締造至臻品質(zhì) -- 服務(wù)熱線:0731-85783205 18932453205

單片機(jī)控制單片機(jī)_網(wǎng)頁(yè)控制單片機(jī)

單片機(jī)TCP/IP是在單片機(jī)上運(yùn)行的TCP/IP協(xié)議棧。 由于嵌入式網(wǎng)絡(luò)設(shè)備越來(lái)越多,需要在嵌入式設(shè)備上實(shí)現(xiàn)TCP/IP協(xié)議棧,但嵌入式設(shè)備與PC不同,通常采用MCU (即單片機(jī))而不是CPU作為核心處理器這需要在單片機(jī)上實(shí)現(xiàn)TCP/IP協(xié)議棧。 對(duì)于高端32位單片機(jī),由于其性能已接近低端PC的CPU (如奔騰ii系列),與在PC上實(shí)現(xiàn)TCP/IP協(xié)議棧沒(méi)有太大區(qū)別; 本文主要描述低端的8位(例如,51位)、16位單片機(jī)TCP/IP協(xié)議棧。

中文名稱

單片機(jī)TCP/IP

外語(yǔ)名稱

danpianjiTCP/IP

特長(zhǎng)

程序存儲(chǔ)區(qū)域和外部RAM區(qū)域沒(méi)有什么特征

速度慢

協(xié)議棧

eCos單片機(jī)TCP/IP協(xié)議棧

協(xié)議棧

ZLIP51單片機(jī)TCP/IP協(xié)議棧

單片機(jī)TCP/IP單片機(jī)TCP/IP的特點(diǎn)

編輯

語(yǔ)音

在單片機(jī)上實(shí)現(xiàn)TCP/IP和在PC上實(shí)現(xiàn)TCP/IP是不同的。 參照《TCP/IP1單片機(jī)上的實(shí)現(xiàn)特點(diǎn)和方法》,可以看出其特征如下。

1 .速度慢:本文介紹,12M晶振的51單片機(jī)最快網(wǎng)絡(luò)傳輸速度為25KB/s。 重要的是,TCP/IP需要每個(gè)傳輸字節(jié)的校驗(yàn)和計(jì)算和所需的副本。 這樣就不夠51單片機(jī)的處理速度了。 提高單片機(jī)TCP/IP速度的常用方法是簡(jiǎn)化協(xié)議棧。

2 .程序存儲(chǔ)空間和外部RAM空間不大:一般單片機(jī)最大程序和數(shù)據(jù)空間為64KB。 TCP/IP協(xié)議通常需要緩存發(fā)送的數(shù)據(jù),但最大的數(shù)據(jù)包為1500B左右,網(wǎng)絡(luò)速度較大時(shí)內(nèi)存消耗較大。 非嵌入式TCP/IP協(xié)議棧缺少64KB的程序和數(shù)據(jù)空間。

3 .單片機(jī)架構(gòu): 51單片機(jī)是8位機(jī),如果需要完成相同的數(shù)據(jù)操作,32位PC機(jī)可能只需要10條指令,而51單片機(jī)

單片機(jī)TCP/IP現(xiàn)有單片機(jī)TCP/IP協(xié)議棧

編輯

語(yǔ)音

TCP協(xié)議棧的手續(xù)流程很復(fù)雜,需要處理對(duì)方發(fā)來(lái)的數(shù)據(jù)和連接,不知道對(duì)方什么時(shí)候做什么操作,導(dǎo)致協(xié)議處理變得復(fù)雜。 另一個(gè)原因是單片機(jī)TCP/IP協(xié)議棧的穩(wěn)定性是一個(gè)非常重要的問(wèn)題,穩(wěn)定的協(xié)議棧在實(shí)際應(yīng)用中需要長(zhǎng)時(shí)間的測(cè)試,因此穩(wěn)定的單片機(jī)TCP/IP協(xié)議棧為此,另一個(gè)選擇是使用現(xiàn)有的TCP/IP協(xié)議棧。

1. eCos單片機(jī)TCP/IP協(xié)議棧: eCos TCP/IP棧涉及與eCos操作系統(tǒng)/內(nèi)核一起工作。 eCos (和TCP/IP堆棧)通過(guò)大量處理其結(jié)構(gòu)得到支持。 eCos TCP/IP堆棧目前作為單獨(dú)的模塊發(fā)布測(cè)試版。

2. ZLIP 51單片機(jī)TCP/IP協(xié)議棧: ZLIP是專門為51單片機(jī)設(shè)計(jì)的嵌入式TCP/IP協(xié)議棧,可以在有操作系統(tǒng)的情況下運(yùn)行實(shí)現(xiàn)了TCP、UDP、ICMP、ARP協(xié)議,ZLWeb實(shí)現(xiàn)了HTTP協(xié)議。 支持同時(shí)運(yùn)行多TCP連接、多UDP連接,支持在uc/os-II操作系統(tǒng)上通過(guò)多任務(wù)發(fā)送和接收數(shù)據(jù)。 可用于51單片機(jī)TCP/IP互聯(lián)網(wǎng)解決方案。

3. uc/ip單片機(jī)TCP/IP協(xié)議棧3360UC/IP(Mew-kip )是一種旨在對(duì)其進(jìn)行控制的TCP/IP協(xié)議棧。 代碼基于BSD,但與所有其他堆棧相似。 但是,非常小的覆蓋功能正在減少。 目前為L(zhǎng)inux和DOS目標(biāo)構(gòu)建。

4. BSD單片機(jī)TCP/IP協(xié)議棧: BSD棧歷史上是其他業(yè)務(wù)棧的起點(diǎn),有很多專門的TCP/IP棧,如帶Wind-River VxWorks內(nèi)核的這是因?yàn)锽SD在BSD許可協(xié)議下提供了他們的堆棧。 這些許可證允許您以修改或未修改的形式合并代碼,而無(wú)需向作者支付特許權(quán)使用費(fèi)。 與GPL許可證相比,合并GPL源代碼時(shí),后者要求GPL公開(kāi)源代碼。

5. lwIP單片機(jī)TCP/IP協(xié)議棧: lwIP (輕量級(jí)) TCP/IP棧是TCP/IP協(xié)議棧的小型實(shí)現(xiàn)。 包括具有IP和ICMP的TCP和UDP傳輸層。 還提供了可選的BSD插座API。 為了性能,還包括qkdcg。 LwIP協(xié)議棧是為嵌入式系統(tǒng)設(shè)計(jì)的,適用于40KB的ROM和數(shù)百字節(jié)的RAM。 為了可移植性,用c寫的。

6. uIP單片機(jī)TCP/IP協(xié)議棧: uIP是專門為8位和16單片機(jī)設(shè)計(jì)的非常小的TCP/IP協(xié)議棧。 uIP完全用c編寫,可以移植到各種結(jié)構(gòu)和操作系統(tǒng)中。 編譯的堆??梢栽趲浊ё止?jié)rom或幾百字節(jié)的RAM上運(yùn)行。 uIP還包括HTTP服務(wù)器作為服務(wù)內(nèi)容。

7. TinyTCP單片機(jī)TCP/IP協(xié)議棧: TinyTCP棧是TCP/IP非常小的簡(jiǎn)單實(shí)現(xiàn),包括FTP客戶。 TinyTCP旨在烤ROM,似乎對(duì)大端結(jié)構(gòu)很有用(初始目標(biāo)是68000芯片)。 TinyTCP還包括用于3Com多總線卡的簡(jiǎn)單以太網(wǎng)驅(qū)動(dòng)器。

8. WATTCP單片機(jī)TCP/I

P協(xié)議棧:WATTCP是為嵌入基于DOS的系統(tǒng)而設(shè)計(jì)的一個(gè)小型TCP/IP棧。它包括一個(gè)Real Mode DOS版本和另一個(gè)32位擴(kuò)展環(huán)境版本。

單片機(jī)TCP/IP如何使用單片機(jī)TCP/IP協(xié)議棧

編輯

語(yǔ)音

用戶在拿到一個(gè)單片機(jī)TCP/IP協(xié)議棧以后該如何處理呢。其中的處理分為兩個(gè)部分:上層接口和下層接口。

4. 1 上層接口

用戶使用單片機(jī)TCP/IP的目的實(shí)際非常明了,就是要實(shí)現(xiàn)數(shù)據(jù)的傳送,即從PC機(jī)(或者另一個(gè)單片機(jī))上傳送過(guò)來(lái)的數(shù)據(jù)能夠在本地單片機(jī)上接收,反之亦然。所以如果屏蔽底層的話,單片機(jī)TCP/IP協(xié)議棧就是一個(gè)傳輸數(shù)據(jù)的手段。所以最后歸結(jié)到了使用send()、recv()函數(shù)即可。這就是使用單片機(jī)TCP/IP協(xié)議棧的核心所在。

但是事實(shí)上并沒(méi)有這么簡(jiǎn)單,因?yàn)閷?duì)于TCP需要有發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作以配合數(shù)據(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)單。

例如如果需要實(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. 1 下層接口

下層接口是一個(gè)比較復(fù)雜的部分,實(shí)際上是TCP/IP協(xié)議棧和底層硬件的對(duì)接問(wèn)題。如果用戶將TCP/IP協(xié)議棧移植到自己的單片機(jī)系統(tǒng)上。由于硬件上存在一定的差異,就需要修改底層代碼。這里需要包括:

1.網(wǎng)卡驅(qū)動(dòng):如果TCP/IP協(xié)議棧已經(jīng)提供了網(wǎng)卡驅(qū)動(dòng),并且驅(qū)動(dòng)和用戶使用的網(wǎng)卡芯片一樣,那么就相對(duì)容易一些。這里只需要修改網(wǎng)卡的基地址即可。否則需要自己動(dòng)手寫驅(qū)動(dòng)程序。如果網(wǎng)卡采用RTL8019AS可以參考老古開(kāi)發(fā)網(wǎng)的單片機(jī)與TCP/IP網(wǎng)絡(luò)。如果網(wǎng)卡采用CS8900,可以參考《嵌入式 TCP/IP 協(xié)議單片機(jī)技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用》

2.TCP/IP底層接口。一般單片機(jī)TCP/IP需要底層為其提供定時(shí)中斷、網(wǎng)卡中斷處理的入口。底層需要做相應(yīng)的處理。

猜你喜歡

  • modbus通訊協(xié)議功能碼對(duì)應(yīng)地址_modbus通訊協(xié)議功能碼

    1.MODBUS功能代碼概要下表列出了MODBUS支持的部分功能代碼。用十進(jìn)制表示。表1.1MODBUS的部分功能代碼代碼中文名稱寄存器PLC地址位操作/字操作操作數(shù)01讀取線圈的狀態(tài)00001-09999位操作單個(gè)或多個(gè)02讀取離散輸入狀態(tài)10001-19999位操作單個(gè)或多個(gè)03讀保持寄存器40001-499

  • cpu與plc有什么區(qū)別?_plc與cpu有什么區(qū)別

    其實(shí)際,PLC就是一個(gè)完整bai的單片機(jī)系統(tǒng)du,你可以把它形像化為一zhi個(gè)功能專一的單片機(jī)開(kāi)發(fā)板dao.這個(gè)單片機(jī)開(kāi)發(fā)板由電源+單片機(jī)+繼電器或MOS管+端子等等組成.現(xiàn)在的PLC,多用32位單片機(jī),也有16位,早很多年前的PLC,還有用8位的,比如西門子曾經(jīng)用的是51單片機(jī).而梯形圖燒錄到PLC后內(nèi)正常運(yùn)行

  • 初學(xué)者怎樣看懂單片機(jī)代碼_單片機(jī)代碼怎么讀懂

    就數(shù)據(jù)存儲(chǔ)類型而言,8051系列有片上、輸出程序存儲(chǔ)裝置、片上、輸出數(shù)據(jù)存儲(chǔ)器,片上程序存儲(chǔ)器還分為直接地址區(qū)域和間接地址類型,分別為code支持根據(jù)idata和51系列特色設(shè)定的pdata類型,通過(guò)使用不同的內(nèi)存,程序的執(zhí)行效率不同,與生成C51程序的ANSI-C略有不同,為SAMLL、COMPACT、lll

  • powerbus通訊協(xié)議_powerbus原理圖

    通過(guò)自己的理解,將modbus工作的全過(guò)程歸納為以下幾個(gè)圖。希望你能更形象地從整體的角度理解整體的原理。由于篇幅有限,圖中的字體很小,省略了一些程序的語(yǔ)句。請(qǐng)結(jié)合freemodbus的源代碼進(jìn)行確認(rèn)。串行端口相應(yīng)地設(shè)置有基于STM32的USART2。另外,應(yīng)該有三個(gè)枚舉概率,有識(shí)別和區(qū)別。1)emb事件類型、e

  • modbus通訊協(xié)議寫命令_modbus通訊協(xié)議報(bào)文

    “只要想做好事,就一定會(huì)利用那個(gè)器皿”。在研究開(kāi)源Modbus協(xié)議FreeMODBUS之前,介紹一種主要用于Modbus協(xié)議仿真和Modbus從設(shè)備開(kāi)發(fā)的ModbusPoll軟件。本文用圖解說(shuō)明了ModbusPoll軟件對(duì)Modbus協(xié)議的仿真過(guò)程。首先,在計(jì)算機(jī)上使用“虛擬串行驅(qū)動(dòng)程序”軟件虛擬化兩個(gè)互

  • 揚(yáng)修電力:電動(dòng)執(zhí)行器總線控制及通訊協(xié)議總結(jié)

    在閥門執(zhí)行器現(xiàn)場(chǎng)總線控制系統(tǒng)中,維持系統(tǒng)而有秩序工作的是系統(tǒng)通信所使用的各種現(xiàn)場(chǎng)總線協(xié)議。在國(guó)際性現(xiàn)場(chǎng)總線標(biāo)準(zhǔn)沒(méi)有完全統(tǒng)一之前,閥門或執(zhí)行器專業(yè)公司出于自身的利益,開(kāi)發(fā)了各自的