版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
以太網(wǎng)及硬件TCP/IP的方案或應(yīng)用快速高效的連接到互聯(lián)網(wǎng),如何實(shí)現(xiàn)TCP/IP的通信,以及如何實(shí)1第1 以太網(wǎng)模五層結(jié)構(gòu)以太網(wǎng)模型有不同的分層方式,ISO(國(guó)際標(biāo)準(zhǔn)組織)提出OSI七層網(wǎng)絡(luò)模同功能模塊承擔(dān)起不同的職責(zé)。由于互聯(lián)網(wǎng)網(wǎng)絡(luò)體系結(jié)構(gòu)以TCP/IP協(xié)議為 根據(jù)的理解,把以太網(wǎng)分成五層比較容易解釋。這五層結(jié)構(gòu)不僅符合OSITCP/IP協(xié)議參考模型協(xié)議之間相互支撐、相用的邏輯關(guān)系。圖1-1-1以太網(wǎng)五2如上圖所示,最的一層叫做“物理層”,也叫“PHY層”,最上面的一層層與協(xié)議”(Protocol很多協(xié)議。這些協(xié)議的總稱就叫做“互聯(lián)網(wǎng)協(xié)議”(InternetProtocolSuite。它們是互聯(lián)網(wǎng)的,下面介紹每一層的功能,及其中的主要協(xié)議。3第2 以太網(wǎng)分層概(Segment(Datagram,(Frame物理層我們從 2-1-1范、10BASE-TRJ-45就屬于這一層。所有比物理層高的層4鏈路層定力的信息流而。以太網(wǎng)協(xié)議(Ethernet圖2-2-1以太等等;“數(shù)據(jù)”部分則是數(shù)據(jù)的具體內(nèi)容;“以太網(wǎng)尾部”則是CRC 5MAC地址以數(shù)據(jù)鏈路層實(shí)際上由兩個(gè)獨(dú)立的部分組成,介質(zhì)存取控制(MediaAccessControl,LLC介質(zhì)環(huán)境中如何進(jìn)行站的調(diào)度、發(fā)生和接收數(shù)據(jù)。MAC確保信息跨鏈路的可靠傳輸,對(duì)數(shù)據(jù)傳輸進(jìn)行同步,識(shí)別錯(cuò)誤和控制數(shù)據(jù)的流向。一般地講,MAC只的多個(gè)設(shè)備,因此鏈路層也叫“MAC層”。每塊網(wǎng)卡出廠的時(shí)候,都有一個(gè)全世界獨(dú)一無(wú)二的MAC地址,長(zhǎng)度是48個(gè)二進(jìn)制位,通常用12個(gè)十六進(jìn)制數(shù)表示。66廣定義地址只是第一步,那么一塊網(wǎng)卡怎么會(huì)知道另一塊網(wǎng)卡的MAC地址?幀必須知道接收方的MAC地址,然后才能發(fā)送。6 (broadcasting網(wǎng)絡(luò)層定MAC標(biāo)準(zhǔn)的不同網(wǎng)段之間的數(shù)據(jù)傳輸一般只涉及到IP協(xié)議規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。它所定義的地址,就被稱為IP地址。目前,廣泛采用的是IP協(xié)議第四版,簡(jiǎn)稱IPv4。這個(gè)版本規(guī)定,網(wǎng)絡(luò)地址由32個(gè)2-3-1IP7習(xí)慣上,我們用分成四段的十進(jìn)制數(shù)表示IP一直到互聯(lián)網(wǎng)上的每一臺(tái)計(jì)算機(jī),都會(huì)分配到一個(gè)IP地址。這個(gè)地址分成兩個(gè)部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機(jī)。比如,IP,這是一個(gè)32位的地址,假定它的網(wǎng)絡(luò)部分是前24位(172.16.254,那么主機(jī)部分就是后8位(最后的那個(gè)1。處于同一個(gè)子網(wǎng)絡(luò)的電腦,它們IP地址的網(wǎng)絡(luò)部分必定是相同的,也就是說(shuō)應(yīng)該與處在同一個(gè)子網(wǎng)IP數(shù)據(jù)報(bào)IPIP但是前面MACIP地址的信息。那么是否需要修改數(shù)據(jù)定義,再添加IP地址信息呢?2-3-2IP65,535字節(jié)。因此理論上,一個(gè)IP數(shù)據(jù)報(bào)的“數(shù)據(jù)”部分,最長(zhǎng)為65,515字 ,以太網(wǎng)數(shù)據(jù)幀的“數(shù)據(jù)”部分,最長(zhǎng)只有1500字節(jié)。因此,如8傳輸層定 UDP協(xié)議2-4-1UDP容。然后,把整UDP數(shù)據(jù)段IP數(shù)據(jù)報(bào)的“數(shù)據(jù)IP數(shù)據(jù)報(bào)又是TCP協(xié)議UDP協(xié)議,每發(fā)出一個(gè)數(shù)據(jù)都要求確認(rèn)。如果有一個(gè)TCP協(xié)議能夠確保數(shù)據(jù)不會(huì)遺失,缺點(diǎn)是過(guò)程復(fù)雜、實(shí)現(xiàn)、消耗較多的9資源。TCP數(shù)據(jù)段和UDP數(shù)據(jù)段一樣,都是內(nèi)嵌在IP數(shù)據(jù)報(bào)的“數(shù)據(jù)”部分。應(yīng)用層定 網(wǎng)絡(luò)資源的API(應(yīng)用程序接口)組成。應(yīng)用層的功能應(yīng)用層協(xié)議應(yīng)用層的HTTP(超文本傳輸)協(xié)議、DNS( 舉例來(lái)說(shuō),TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù),比如 用協(xié)議、網(wǎng)上沖浪用到的這是最高的一層,直接面對(duì)用戶。它的數(shù)據(jù)就放在TCP數(shù)據(jù)段的“數(shù)據(jù)”部分。2-5-1設(shè)備需要聯(lián)網(wǎng),就必須搭建這五層物理連接以及處理層內(nèi)和層與層之間的TCP/IP3章就介紹如何通過(guò)這幾層的銜接來(lái)實(shí)第3 以太網(wǎng)接入方片機(jī)的種類繁多,從到高端,有以51單片機(jī)為代表的8ARM結(jié)為兩大類:第一類是傳統(tǒng)的軟件TCP/IP協(xié)議棧方案;第二類是的硬件TCP/IPMAC+PHYHTTP(超文本傳輸)協(xié)議、DNS(解析)協(xié)議、FTP(文件傳送)協(xié)議、網(wǎng)的物理連接,通過(guò)在主控中植入TCP/IP協(xié)議代碼實(shí)現(xiàn)通信及上層應(yīng)用。應(yīng)用這種軟件TCP/IP協(xié)議棧方式實(shí)現(xiàn)的比較成熟方案有ENC28J60-12MCU不斷地響應(yīng)中斷,這在很大程度上占用了數(shù)據(jù)的處理速度僅能滿足需要,但隨著線程增多,MCU的工作效率直線下降,會(huì)代碼量方面,即便是采用輕量級(jí)的TCP/IP協(xié)議棧LWIP協(xié)議,也會(huì)為主控40KB再?gòu)陌踩缘慕嵌?,設(shè)備并入互聯(lián)網(wǎng)之后必須考慮問題,這種軟件協(xié)議棧的方式系統(tǒng)一旦受到復(fù)雜的,單片機(jī)很有可能癱瘓掉,這對(duì)系統(tǒng)就更加安全,但是還會(huì)出現(xiàn)各種各樣的。-13硬件協(xié)議 方硬件協(xié)議棧方案如下圖所示。由MCU+硬件協(xié)議棧(內(nèi)含MAC和PHY)TCP/IP協(xié)議的工作都是通過(guò)這位MCU的“小”——硬件協(xié)議棧來(lái)完成。圖3-2-1硬件協(xié)議 這套方案是由WIZnetW5100W5200、W5300W5500。圖3-2-2TCP/IP硬件協(xié)議棧內(nèi)核原理簡(jiǎn)圖TCP、UDP、ICMP、IGMPIP、ARP、PPPoEMACPHY和的寄存器、內(nèi)存、SPI接口組成了這一整套硬件化的以太網(wǎng)解決方案。-14這套硬件TCP/IP協(xié)議棧代替了以往的MCU來(lái)處理這些中斷請(qǐng)求,即MCU只WIZnet的 的五層網(wǎng)絡(luò)模型,簡(jiǎn)化產(chǎn)品開發(fā)方案。這樣一來(lái),工程師們就不必再面對(duì)繁瑣的通信協(xié)議代碼,只需要了解簡(jiǎn)單的寄存器功能以及Socket編程便能完成產(chǎn)品開發(fā)CPIP協(xié)議工作,不僅極大地減少了單片機(jī)的中斷次數(shù),讓單片機(jī)騰出資源去完成其他工作,而且硬件化的電路處理協(xié)議會(huì)更加快速、穩(wěn)定。經(jīng)試驗(yàn)測(cè)試,單線程下,該方案的通0Skt在。代碼量方面,因?yàn)檫@套方案主要是完成對(duì)Socket的編程以及寄存器的調(diào)用,因此10K左右的代碼量,遠(yuǎn)小于軟件協(xié)議方案,對(duì)51STM32等內(nèi)存很 的價(jià)格跟用MAC+PHY比起來(lái)基本差不多。 最后安全性方面,硬件化的邏輯門電路來(lái)處理CPIP協(xié)議是不可就是說(shuō)網(wǎng)絡(luò)和對(duì)它無(wú)效,這也充分彌補(bǔ)了網(wǎng)絡(luò)協(xié)議安全性不足的短板。也正是因?yàn)檫@一優(yōu)勢(shì),硬件協(xié)議棧技術(shù)在未來(lái)物聯(lián)網(wǎng)以及智能家居領(lǐng)域有著廣泛目前4個(gè)/8Socket,不能隨時(shí)開啟Socket。但是,在嵌入式應(yīng)用中8Socket已經(jīng)足夠應(yīng)對(duì)超過(guò)大部分的應(yīng)用。-15第4 開發(fā)板ISOSTM32搭配野火W5500網(wǎng)絡(luò)適配板實(shí)現(xiàn)以太網(wǎng)接入,W5500,以及如何通過(guò)STM32+W5500輕松實(shí)現(xiàn)各種常見的應(yīng)用協(xié)議。實(shí)驗(yàn)描述ISOSTM324-1-1STM32F103ZET6單片機(jī),IOCPU,使用起來(lái)非常方便,4-1-1野火開發(fā)板ISO-16W5500SCSn,SCLKMOSIMISO4路信號(hào)。5W5500的腳,10、12腳為W5500供電引腳。4-1-2野火開發(fā)板SPI1W5500有兩種工作模式,分別是可變數(shù)據(jù)長(zhǎng)度模式和固定數(shù)據(jù)長(zhǎng)度模式。在可變數(shù)據(jù)長(zhǎng)度模式中,W5500可以與其SPI設(shè)備共SPI接口一旦將SPI接口指定給W5500之后1CS片選信號(hào)如果選中了W5500,則不能再與其他SPI設(shè)備共用。在固定數(shù)據(jù)長(zhǎng)度模式,SPI將指定給W5500,不能與其SPI設(shè)備共享。因?yàn)?CS片選信號(hào)將直接接地為低電平。W5500_conf.c主要配W5500MAC、IP地址,W5500基本的數(shù)據(jù)讀寫過(guò)Socket.c函數(shù)主要介紹W5500SOCKET相關(guān)配置函數(shù),比SOCKET的w5500.cW5500-17W5500Socket初始 4IP地址寄存器本機(jī)物理地址寄存器(SHAR)的地址是MAC層的硬件地址,這是生產(chǎn)商指定使用的地址。MAC地址可由IEEE指定。最后介紹設(shè)置端口信息,這一步設(shè)置端口TX/RX信息,每個(gè)端口的址和地址在這里確定并保存。W5500有1個(gè)通用寄存器,8個(gè)Socket存器區(qū),以及對(duì)應(yīng)每個(gè)Socket的收/發(fā)緩存區(qū)。每一個(gè)Socket的發(fā)送緩存區(qū)都在一個(gè)16KB的物理發(fā)送內(nèi)存中,初始化分配為2KB。每一Socket的接收緩存區(qū)都在16KB的物理接收內(nèi)存中,初始化2KB。無(wú)論給每Socket分配多大的收/發(fā)緩存,都必須在16位的偏移地址范圍內(nèi)(從0x0000到0xFFFF。W5500有一16KB的發(fā)送Socketn的發(fā)送緩存區(qū)16KB的接收內(nèi)存用于Socketn的接收緩存區(qū)。16KB的發(fā)送內(nèi)存初始化被分配為每個(gè)Socket2KB發(fā)送緩存區(qū)(2KBX816KB-18寄存器(Sn_TXBUF_SIZE)重新分配。一旦所有的Socket(Sn_TXBUF_SIZE)配置完成,16KB的發(fā)送內(nèi)存就會(huì)按照配置分配給每個(gè)Socket的Socket07順序分配。16KB物理內(nèi)存的地址是可以自增的。但是,為了避免數(shù)據(jù)傳輸錯(cuò)誤,需要避免發(fā)送緩存大小寄存器16KB的發(fā)送內(nèi)存中分配了對(duì)應(yīng)Socketn的發(fā)送緩存區(qū),用于為來(lái)自主機(jī)傳輸?shù)臄?shù)據(jù)做緩存。Socketn發(fā)送緩存區(qū)的16位偏移地址支持64KB的尋址范圍(從0x0000xFFFF關(guān)于他的配置請(qǐng)參考‘Socketn發(fā)送寫指針寄存器(Sn_TX_WR)’以及Socketn發(fā)送讀指針寄存器(Sn_RX_WR)。然而,這16位偏移地址會(huì)自動(dòng)轉(zhuǎn)化為指定的16KB發(fā)送內(nèi)存的物理地址。16KB的內(nèi)存的分派方式與16KB的發(fā)送內(nèi)存一樣。16KB的接收內(nèi)存初始Socket2KB接收緩存區(qū)(2KBX816KB2KBSocketSocket接收緩存大小寄存器(Sn_XBUF_SIZE)重新分配。一旦所有的Socket發(fā)緩存大小寄存器(Sn_TXBUF_SIZE)配置完成,7順序分配。16KB物理內(nèi)存的地址是可以自增的。但是,為了避免數(shù)據(jù)傳輸錯(cuò)誤,需要避免發(fā)送緩存大小寄存器(Sn_TXBUF_SIZE)的和超過(guò)16。的數(shù)據(jù)做緩存。Socketn1664KB的尋址范圍(從FFFF以及Socketn接受寫指針寄存器(Sn_RX_WR)。然而,這16位偏移地址會(huì)自動(dòng)轉(zhuǎn)化為指定16KB接收內(nèi)存的物理地址。代碼4-1就主要定義每一SOCKET接-19代 4-1SOCKET接收和發(fā)送緩存的大小配置文voidsocket_buf_init(uint8*tx_size,uint8*rx_size{int16int16for(i=0;i<MAX_SOCK_NUM;{#ifdef printf("tx_size[%d]:%d,Sn_TXMEM_SIZE=tx_size[i],printf("rx_size[%d]:%d,Sn_RXMEM_SIZE=rx_size[i],SSIZE[i]=RSIZE[i]=if(ssum<={SSIZE[i]=}if(rsum<={ ssum+=rsum+= 30.應(yīng)用層協(xié)議開發(fā)支撐協(xié)議:服務(wù)系統(tǒng)(DNS,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)等,典型應(yīng)用Web瀏覽、電子郵件、文件傳輸、登錄等。(HTTP(SMTP協(xié)議(FTP,簡(jiǎn)單文件傳輸協(xié)議(TFTP)和登錄(net。4-3-1TCP/IP協(xié)議族及上層的應(yīng)用協(xié)議,前面介紹了硬件協(xié)議棧實(shí)現(xiàn)了下一章帶領(lǐng)大家運(yùn)用野火開發(fā)板ISOSTM32+W5500網(wǎng)絡(luò)適配板-20-21第5 例程講以太網(wǎng)控制W5500TCP/IP協(xié)議棧,即內(nèi)部結(jié)構(gòu)TCP/IP協(xié)議棧完全獨(dú)立于主控,可以降低主負(fù)載且無(wú)需移植繁瑣的TCP/IP協(xié)議棧,便于產(chǎn)品意的是,下面的例程均在Keil4.72的開發(fā)環(huán)境下進(jìn)行。TCPTCP是整個(gè)協(xié)議簇的協(xié)議之一,是TCP/IP體系中面向連接的傳輸層協(xié)IP作為網(wǎng)絡(luò)層,提供全雙工的和可靠交付的服務(wù)。TCP建立通信的5-1-1客戶/如圖5-1-1所示為一個(gè)通過(guò)互聯(lián)網(wǎng)進(jìn)行交互的C/S模型,C/S模型是一個(gè)最TCP協(xié)議通過(guò)三個(gè)報(bào)文段完成連接的建立,這個(gè)過(guò)程稱為三次握手handshake1,第一次握手:建立連接時(shí),客戶端發(fā)送SYN包(seq=j)到服務(wù)器,并進(jìn)SYN_SEND2,第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SY(ack=j+1同時(shí)自己也發(fā)送一個(gè)SYN(seqkSYN+ACK此時(shí)服務(wù)器進(jìn)入SYN_RECV3,第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)ESTABLISHED狀態(tài),完建立接需要三次握手,而終止1FIN位的報(bào)文,表示主動(dòng)終止從本地到FIN報(bào)文。2,第二次揮手:遠(yuǎn)端收到FIN后,會(huì)立即發(fā)送ACK;主動(dòng)方收到ACK后,進(jìn)FIN_WAIT2FIN_WAIT1狀態(tài)持續(xù)的時(shí)間非常短;此時(shí)遠(yuǎn)端進(jìn)入3,第三次揮手:當(dāng)遠(yuǎn)端進(jìn)行了必要的數(shù)據(jù)發(fā)送后,它發(fā)送FIN,表示從它出發(fā)LASTACK狀態(tài)。4,第四次揮手:主動(dòng)方收到FIN后,回應(yīng)一個(gè)ACK;遠(yuǎn)端就此進(jìn)入CLOSEDTIMEWAIT狀態(tài);確保最后一個(gè)ACK沒有丟失,W5500TCPW5500初始化完成后,程序進(jìn)入主循環(huán),此時(shí)該Socket的狀態(tài)值,并選擇進(jìn)入哪種模式。當(dāng)Socket處于關(guān)閉狀態(tài)時(shí),在進(jìn)行通信之前,我們先將該Socket初始化。這個(gè)Socket作為服務(wù)器端,端要固定為要偵聽的端口。當(dāng)socket將處于初始化TCP3次握手完成后,socket的狀態(tài)將會(huì)轉(zhuǎn)變?yōu)檫B接建立狀態(tài),SOCK_ESTABLISHEDSOCK_ESTABLISHED狀態(tài)1TCP服務(wù)器采用默認(rèn)的IP信息,所以w5500_conf.c文件中設(shè)置ip_fromIP_FROM_DEFINE。3,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-1-3設(shè)置信息。4,在測(cè)試之前要注意兩個(gè)問題,第一個(gè)就是建PC的;第二個(gè)問題,如果W5500模塊與PC直接通過(guò)網(wǎng)線連接,需要修PC的IP地址為靜態(tài)IP,且保持與W5500的IP在同一個(gè)網(wǎng)段,如果直接連接路由器,可以不用修改PC的IP地址。5,W5500作為服務(wù)器,PC5-1-3所示,從串口打印信息可以得到W5500IP8,端為5000。connect連接服務(wù)器,如果成功會(huì)顯示本機(jī)的IP信息。5-1-4下面介紹W5500作為TCP服務(wù)器的基本操作過(guò)程,下圖簡(jiǎn)單地描述了數(shù)據(jù)收發(fā)的過(guò)程。當(dāng)W5500初始化完成后,程序進(jìn)入主循環(huán),可以調(diào)用getSn_SR(Socket號(hào))來(lái) 該Socket的狀態(tài)值。當(dāng)Socket處于關(guān)閉狀態(tài)時(shí),在進(jìn)行通信之前,我們需要先將該Socket初始化,這里通信協(xié)議這里 配置成TCP,即Sn_MR_TCP。當(dāng)程序成功執(zhí)行socket(…)函數(shù)后,socket0將處于SOCK_INIT狀態(tài)。此時(shí),作為TCP客戶端,就要調(diào)用connect(...)函數(shù)連接 服務(wù)器。待TCP連接的3次握手完成后,socket0的狀態(tài)將會(huì)轉(zhuǎn)變?yōu)镾OCK_ESTABLISHED狀態(tài)。在進(jìn)入SOCK_ESTABLISHED狀態(tài)后,便可進(jìn)行數(shù)據(jù)收發(fā)。 4,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-1-6設(shè)置信息。5,PC作為服務(wù)器,W5500作為客戶端連接服務(wù)器。如圖5-1-7所示,PC 為5000。添加無(wú)誤以后點(diǎn)擊Listen連接 65-1-7中的信息,說(shuō)5-1-7在TCP/IP協(xié)議棧的傳輸層中,TCP面向連接,而接下來(lái)要演示的UDP協(xié)議則是面向下面介紹W5500作為UDP服務(wù)器的基本操作過(guò)程。如圖5-2-1為UDP通信流程圖。W5500UDP建立過(guò)程也是非常方便的,通過(guò)簡(jiǎn)單的讀寫寄存器便可以輕Socket處于關(guān)閉狀態(tài)時(shí),初始化完成狀態(tài)即SOCK_UDP狀態(tài),此時(shí)就可以通過(guò)廣播方式發(fā)送數(shù)據(jù)了。接下來(lái)使用W5500演示如何使用UDP發(fā)送和接收數(shù)據(jù)。在測(cè)試之前要注意兩個(gè)問題,首先建議PC的;其W5500模塊PC直接通過(guò)網(wǎng)線連接,需要修改PC的IP地址為靜態(tài)IP,且保持與W5500的IP在同一個(gè)網(wǎng)段;如果直接連接路由器,可以不用修改PCIP地址。具體的測(cè)試步驟為:4,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-2-2設(shè)置信息。55-2-2ModuleIP為5000;Localport設(shè)置為計(jì)算機(jī)的端口5000,點(diǎn)擊“連接”。65-2-3所示。W5500UDP5-2-3本節(jié)中W5500DHCP客戶端,路由器作為DHCP服務(wù)器端。在DHCP請(qǐng)求的過(guò)程中,包括4個(gè)主要的階段:發(fā)現(xiàn)階段、提供階段、選擇階段以及確認(rèn)階段。下面來(lái)說(shuō)一下整個(gè)DHCP請(qǐng)求流程。DHCPDHCPOFFER消息(IP地址租用提供,由于DHCPREQUESTDHCPREQUEST消息中IPDHCPDHCPACK的響應(yīng)消的一個(gè)穩(wěn)定期限的租約(默認(rèn)是8天DHCP數(shù)據(jù)庫(kù)。包并接收路由器的IP地址分配,完成了完整的DHCP工作過(guò)程。DHCP初始化完成以后,通過(guò)獲取DHCP_SOCKET的狀態(tài)來(lái)獲取動(dòng)態(tài)IP地址。第一個(gè)狀態(tài)DHCP_RET_NONE就是獲取不成功,第二個(gè)狀態(tài)DHCP_RET_TIMEOUT是獲取地址成功,此時(shí)將得到的IP地址通過(guò)SPI寫入W5500的寄存器。如果是 狀態(tài),就要返回DHCP服務(wù)重新獲取。主程序除了初始W5500之外,在主循環(huán)里面主要完成DHCP狀態(tài)機(jī)。具1,DHCPIPW5500 3,連接好網(wǎng)線,USB4Windows下的具體操作是,開始→運(yùn)行→(鍵入)cmd095-3-2 DHCP獲取IP地 DNS是 解析。DNS的出現(xiàn)就是為了用戶在訪 的IP地址,而是用一串便于 通過(guò)W5500來(lái)實(shí)現(xiàn)DNS 解析也是非常方便的。本節(jié)將解析對(duì)應(yīng)的IP地址??蛻舳顺跏蓟戤呏螅绻鸇NS運(yùn)行標(biāo)志位是1或者DNS發(fā)送次數(shù)超過(guò)3次就直接返回。如果不是上面的情況,并且DNSServer的IP不是時(shí),進(jìn)入switch函數(shù)。當(dāng)處于DNS 功狀態(tài)時(shí),DNS_OK置1,發(fā)送請(qǐng)求報(bào)文次數(shù)置0,并且把得到的 對(duì)應(yīng)的IP地址copy到ConfigMsg.rip,然后我們把解析到的 的IP地址通 失敗時(shí),標(biāo)志位置0,請(qǐng)求報(bào)文次數(shù)加1,然后跳出循環(huán)。如果以上情況都不是,打印出無(wú)效的DNSServer地址。以上是簡(jiǎn)單介紹了通過(guò)W5500解析 寄存器狀態(tài)來(lái)判斷W5500的狀態(tài),最終成功解析到IP地址。3,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸 5-4-1DNSSMTP即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的5-5-1 1TCP 3RCPT4DATA5,以“.”QUIT命令退腦操作將有很大的不同。這里用W與郵箱通信為例來(lái)具體分析郵件的發(fā) 為:o123。收件人郵箱地址為: 具體過(guò)程很簡(jiǎn)單,先解析126郵箱的服務(wù)器 W5500的運(yùn)行模式下,按一下Reset鍵或者上電一次,只發(fā)送一封郵件。1SMT3,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-5-2設(shè)置信息。 成功,會(huì)得到mailsendOK的信息。5-5-2的命令(LinuxWindows中均有,這個(gè)“”ICMP協(xié)議工作的過(guò)程。命令利用ICMP回射請(qǐng)求報(bào)文和回射應(yīng)答報(bào)文來(lái)測(cè)試目標(biāo) 是,從送信方來(lái)看,自己送出的ICMP報(bào)文從目標(biāo)服務(wù)器那里象鸚鵡學(xué)舌那樣 4,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-6-1設(shè)置信息。從打印信息可以看到,發(fā)送一次請(qǐng)求,之后得到一次回復(fù),如果請(qǐng)求和回復(fù)的次數(shù)保持相同,則說(shuō)明一直正常。 HTTPHTTP服務(wù)器也就是平時(shí)我們所說(shuō)網(wǎng)頁(yè)服務(wù)器,其實(shí)這種嵌入式設(shè)備內(nèi)嵌的本節(jié)我們就用W5500建立自己的網(wǎng)頁(yè)服務(wù)器,你只在瀏覽器地址欄里鍵入W5500IP地址,就成功在你的網(wǎng)頁(yè)上顯示出來(lái)了。HTTPServer實(shí)現(xiàn)原理圖見圖5-7-1。首先在main主函數(shù)中,我們完成對(duì)W5500的初始化,同時(shí)調(diào)用W5500的IP地址,MAC地址等基本網(wǎng)絡(luò)在主循環(huán)中調(diào)用do_http()函數(shù)實(shí)現(xiàn)HTTP服務(wù)器。單片機(jī)作為HTTP服務(wù)器的具體工作過(guò)程在voidproc_http(SOCKETs,uint8*buf)中有詳細(xì)過(guò)程http請(qǐng)求報(bào)文并發(fā)http1,HTTP服務(wù)器采用默認(rèn)的IP信息,所以在w5500_conf.c文件中設(shè)置 3,連接好網(wǎng)線,USB5-7-25-7-3本節(jié)在W5500上面實(shí)現(xiàn)一個(gè)HTTP 程序去連接網(wǎng)絡(luò)服務(wù)器Yeelink平臺(tái)。野火開發(fā)板預(yù)留有溫濕度傳感器DHT11的接口,因此通過(guò)W5500將到溫度和濕度信息上傳Yeelink平臺(tái),并且在Yeelink平臺(tái)實(shí)時(shí)觀察溫濕度變化情況。圖5-8-1為W5500通過(guò)Yeelink平臺(tái)實(shí)現(xiàn)HTTP 圖5-8-1W5500通過(guò)Yeelink平臺(tái)實(shí)現(xiàn) 模Yeelink是一個(gè)免費(fèi)的云平臺(tái),旨在利用無(wú)線網(wǎng)絡(luò)、開源硬件和軟件,智能和App共同打造一個(gè)家庭智能中心打開。打開Yeelink平臺(tái)服務(wù)器網(wǎng)頁(yè)以 器。將復(fù)的感器極簡(jiǎn)方組到一個(gè)網(wǎng)內(nèi),滿智能居的種需求通過(guò)Yeelink提供的數(shù)據(jù)接口,用戶可以把自己的傳感器通過(guò)互聯(lián)網(wǎng)接入Yenk云平臺(tái),從而實(shí)現(xiàn)隨時(shí)隨地獲取傳感器數(shù)據(jù),為一些智能家居設(shè)備接入( )IDdevice/xxxxIDsensor/xxxx。這幾個(gè)信息與程序開頭建立的請(qǐng)求添加設(shè)備是得到的信息。同大多數(shù)開源平臺(tái)一樣,YeelinkAPI也是基于HTTPAPIYeelink。圖5-8-2是添加好的設(shè)備界面信息。5-8-2接下來(lái)簡(jiǎn)單分析一下程序,main.cW5500上傳數(shù)據(jù)的主流程,bsp_dht11.c文件實(shí)現(xiàn)對(duì)溫濕度數(shù)據(jù),http_文件實(shí)現(xiàn)W5500與服為了使程序能方便地組建Yeelink所要求的JSON數(shù)據(jù)格式,我們把 代這個(gè)字符串中的xx即可。device/ID/sensor/ID這兩處ID已經(jīng)在 一個(gè)設(shè)備可以有若干個(gè)傳感器。U-ApiKey則是你的 U-ApiKey才可以在Yeelink上面更新數(shù)據(jù)。Content-Length:后面的12,指的就的是,在C語(yǔ)言中,雙引號(hào)“”需要使用轉(zhuǎn)義字符。ip_from為IP_FROM_DEFINE。3,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-8-3打印信息。5-8-34,我們根據(jù)串口提示的信息登錄Yeelink賬號(hào),打開我的設(shè)備→管理設(shè)備,圖5-8-4實(shí)時(shí)的溫濕 (API, 他特殊功能,幾乎所有的局域網(wǎng)都是在NetBIOS協(xié)議的基礎(chǔ)上工作的。NetBIOS協(xié)議,簡(jiǎn)單來(lái)說(shuō)就是通過(guò) 設(shè)備名稱就可以實(shí)現(xiàn)對(duì)IP地址的 NetBIOS實(shí)現(xiàn)過(guò)程示意圖如5-9-1所示。在Windows操作系統(tǒng)中,默認(rèn)情況下在安裝TCP/IP協(xié)議后會(huì)自動(dòng)安裝的用途中會(huì)使用不同的報(bào)文,可用端口進(jìn)行區(qū)分,NetBIOS數(shù)據(jù)報(bào)報(bào)文使用UDP138端口,NetBIOS會(huì)話報(bào)文使用TCP139端口。本節(jié)主要通過(guò)NetBIOS協(xié)議實(shí)現(xiàn)把IP地址解析為對(duì)應(yīng)的一個(gè)名字,就比如07是 服務(wù)器的IP地址,對(duì)應(yīng)的名字是“ 本例程首先通過(guò)DHCP獲取一個(gè)動(dòng)態(tài)IP地址分配給W5500,然后通過(guò)NetBIOS頁(yè)中輸入W5500就可以進(jìn)入相應(yīng)的網(wǎng)頁(yè)信息,在windows下 W5500也可以得到對(duì)應(yīng)的IP地址信息。 DHCP獲取動(dòng)態(tài)IP以后,再通過(guò)NetBIOS實(shí)現(xiàn)名字解析的,所以要在w5500_conf.c文件下定義ip_from為IP_FROM_DHCP。DHCP程序在5.3節(jié)已經(jīng)詳細(xì)介紹,在此不再多解釋。NetBIOS的處理主要在NetBIOS.c中。在do_netbios函數(shù)中對(duì)UDP廣播查詢做了解析,并且回應(yīng)。這就完成了b節(jié)點(diǎn)的NetBIOS名稱服務(wù)。在do_netbios中一個(gè)Socket在指定的端口一直偵聽,如果收到數(shù)據(jù)包就判斷格式,看是不是NetBIOS查詢包。如果是,調(diào)用netbios_name_decoding函數(shù)解包。之后按照NetBIOS格式組包回復(fù)。1DHCPIPW5500IPw5500_conf.cip_fromIP_FROM_DHCP。3,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-9-2設(shè)置信息。5-9-2 說(shuō)明NetBIOS名稱解析成功。 W5500回復(fù)信5-9-4NTP是網(wǎng)絡(luò)時(shí)間協(xié)議,是用來(lái)使設(shè)備時(shí)間同步化的一種協(xié)議,在一些應(yīng)用場(chǎng)越大,因?yàn)樵O(shè)備中晶振自身會(huì)產(chǎn)生誤差。那么NTP協(xié)議就可以解決這個(gè)問題。NTP校時(shí)過(guò)程中的原理示意圖,5-10-1所示。其中在我們的演示中,W5500為圖中LS_A端,NTP服務(wù)器(國(guó)家授時(shí)中心)為L(zhǎng)S_B端。詳細(xì)校時(shí)過(guò)程的講解,請(qǐng)參考相關(guān)教學(xué)。W5500W5500NTP協(xié)議,即從一個(gè)NTP服務(wù)器獲取標(biāo)準(zhǔn)網(wǎng)絡(luò)時(shí)間,通過(guò)換算成時(shí)間(東八區(qū)NTP有更清晰的認(rèn)再贅述。主函數(shù)中重要的是調(diào)用ntp_init()do_ntp_()兩個(gè)函數(shù)。前者初始化NTP報(bào)文,后者完成與NTP服務(wù)器的交互過(guò)程。0,為了簡(jiǎn)化程序,NTP_Message中也僅僅包flag中的內(nèi)容。NTP服務(wù)器IP地址在全局NTP_Server_IP中定義,NTP服務(wù)器的默認(rèn)端是123。1DHCPIPW5500IPw5500_conf.cip_fromIP_FROM_DHCP。3,連接好網(wǎng)線,USB串口線。打開串口調(diào)試工具,復(fù)位野火開發(fā)板,從輸出結(jié)果可以得到圖5-10-2設(shè)置信息。5-10-2網(wǎng) 配置設(shè)備 單片機(jī),來(lái)配置W5500的IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān)等信息。這里使用EEPROM來(lái) 有2k字節(jié)的EEPROM來(lái)保存配置信息。和Flash類似,EEPROM也是一種掉電 。但與Flash不同的是,EEPROM是一個(gè)外部 程序中通過(guò)cgi_ipconfig()函數(shù)來(lái)將配置信息寫入EEPROM中。源程序分三部分來(lái)解讀。main.c主文件實(shí)現(xiàn)程序運(yùn)行的主流程,httputil.c文件用于HTTP請(qǐng)求報(bào)文和發(fā)http響應(yīng)報(bào)文,httpd.c用于實(shí)現(xiàn)對(duì)請(qǐng)求報(bào)文的解析,需要調(diào)用的其它函數(shù)在其他應(yīng)用程序中。主程序的初始化過(guò)程基本一樣,唯一不同的是把W5500_conf.cuse_eeprom賦值為1。因?yàn)楸竞瘮?shù)在配置網(wǎng)絡(luò)信息的過(guò)程中要從EEPROM信息,將EEPROM配置信息到配置結(jié)構(gòu)體。While主循環(huán)運(yùn)行HTTPServer主函數(shù),如果標(biāo)志位1的話,重新啟動(dòng)程序。不難看出,該程序具有掉電功能,因?yàn)槲覀儼雅渲?/p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工貿(mào)企業(yè)安全標(biāo)準(zhǔn)化自評(píng)報(bào)告
- 油氣井增產(chǎn)材料研發(fā)-洞察分析
- 眼科臨床研究與眼部疼痛-洞察分析
- 業(yè)務(wù)對(duì)象模型標(biāo)準(zhǔn)化-洞察分析
- 文化產(chǎn)業(yè)價(jià)值評(píng)估體系-洞察分析
- 水電站規(guī)劃與建設(shè)-洞察分析
- 水表數(shù)據(jù)質(zhì)量監(jiān)控方法-洞察分析
- 水暖工程項(xiàng)目管理-洞察分析
- 弦論中的黑洞解-洞察分析
- 《班組安全文化建設(shè)》課件
- 機(jī)器人課程課程設(shè)計(jì)
- 南充市市級(jí)事業(yè)單位2024年公招人員擬聘人員歷年管理單位遴選500模擬題附帶答案詳解
- 9.2溶解度(第2課時(shí))-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 安全知識(shí)考試題庫(kù)500題(含答案)
- 2024-2025學(xué)年上學(xué)期南京小學(xué)數(shù)學(xué)六年級(jí)期末模擬試卷
- 河北省保定市定興縣2023-2024學(xué)年一年級(jí)上學(xué)期期末調(diào)研數(shù)學(xué)試題(含答案)
- 2025年中國(guó)蛋糕行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
- 護(hù)理組長(zhǎng)年底述職報(bào)告
- 護(hù)理不良事件分析 課件
- 糖尿病患者健康管理測(cè)試試題(三套題-有答案)
- 《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀課件
評(píng)論
0/150
提交評(píng)論