用MSP430實(shí)現(xiàn)的嵌入式因特網(wǎng)終端設(shè)計(jì)
430F149工作狀態(tài)的標(biāo)志量,該 函數(shù)的工作流程如圖3所示。函數(shù)DoNetworkStuff()被調(diào)用得周期越短,系統(tǒng)執(zhí)行TCP/IP協(xié)議的性能越好。 為了更好的協(xié)調(diào)接發(fā)和發(fā)送的數(shù)據(jù),給TCP/IP模塊在SRAM中分配了三個(gè)緩沖區(qū),TxFrame1、TxFrame2和 RxTCPBuffer。其中,TxFrame1的主要作用是給要發(fā)送的TCP數(shù)據(jù)幀(包括以太網(wǎng)、IP、TCP幀頭)提供緩沖內(nèi)存; TxFrame2的主要作用是給TCP非數(shù)據(jù)幀(包括以太網(wǎng)、IP、TCP幀頭)和ARP、CIMP協(xié)議幀提供緩沖內(nèi)存;RxTCPBuffer 給接收到的TCP數(shù)據(jù)提供緩沖內(nèi)存。所分配的緩沖區(qū)越大,收發(fā)速度越快,因?yàn)檫@樣可以減少因緩沖區(qū)不足造成的 滯后。 可以通過主動(dòng)或被動(dòng)的方式調(diào)用函數(shù)TCPPassiveOpen()或TCPActiveOpen()建立網(wǎng)絡(luò)通信連接。函數(shù) TCPPassiveOpen()函數(shù)的作用主要是用于檢測到有數(shù)據(jù)包送入時(shí),把數(shù)據(jù)包送入緩沖區(qū),函數(shù)TCPActiveOpen()的 主要作用是,把要發(fā)送的數(shù)據(jù)包送入緩沖區(qū)。在主動(dòng)發(fā)送數(shù)據(jù)包之前,先設(shè)置要接收該數(shù)據(jù)包的MAC地址,并把本 機(jī)地址包含進(jìn)數(shù)據(jù)包。一旦連接建立完成,就可以開始發(fā)送數(shù)據(jù),可以通過相應(yīng)的接口函數(shù)讀出連接的狀態(tài)。當(dāng)數(shù) 據(jù)發(fā)送完畢,可以通過函數(shù)TCPClose()關(guān)閉連接。 在數(shù)據(jù)包收發(fā)的過程當(dāng)中,不同的任務(wù)需要不同的處理時(shí)間,這個(gè)時(shí)間可以使用MSP430F149的定時(shí)器Timer_A 來提供,不過必須注意的是,在使用定時(shí)器Timer_A之前,必須進(jìn)行初始化,這點(diǎn)同使用其它微控制器是相似的。 為了減少數(shù)據(jù)包發(fā)送不成功造成的錯(cuò)誤,當(dāng)接收機(jī)接收到數(shù)據(jù)后,其應(yīng)當(dāng)返回一個(gè)接收正確信號(hào),當(dāng)發(fā)送機(jī)超過設(shè) 定時(shí)間,仍接收不到正確的接收信號(hào)時(shí),TCP/IP模塊自動(dòng)進(jìn)行數(shù)據(jù)包重發(fā),這個(gè)過程可以通過相應(yīng)的變量和函數(shù)來 實(shí)現(xiàn)。 雖然,各個(gè)公司的軟件處理TCP/IP協(xié)議的程序不盡相同,但幸運(yùn)的是,各個(gè)公司在TCP/IP協(xié)議上的兼容性都非 常好,因此,只要用戶按照TCP/IP協(xié)議進(jìn)行程序編寫,不同的程序間的通信應(yīng)該不存在多大的問題。 4.3 API(應(yīng)用編程接口) 為了使用戶既能夠使用現(xiàn)在的應(yīng)用,也能夠建立適用自己要求的嵌入式應(yīng)用,在整個(gè)軟件的編制過程中,應(yīng)當(dāng) 留一下API函數(shù),以便于用戶無需對TCP/IP協(xié)議有過多的了解也能夠在原有程序的基礎(chǔ)上進(jìn)行二次開發(fā)。本軟件充 分考慮了這一點(diǎn),給用戶留出了很多AIP函數(shù),主要的有,TCPClose()、TCPReleaseRxBuffer()和 TCPTransmitTxBuffer()等。其中,函數(shù)TCPClose()的主要用處是用于關(guān)閉打開了的連接,在關(guān)閉連接之前,發(fā)送 的數(shù)據(jù)包還留在發(fā)送緩沖區(qū)中以保證正確發(fā)送,連接關(guān)閉之后,用戶要重新建立連接的話,必須重新設(shè)置IP地下、 重新分配I/O口和重新建立連接。TCPReleaseRxBuffer()的主要作用是,在讀出緩沖區(qū)的數(shù)據(jù)之后,調(diào)用此函數(shù), 無需再保存已正確讀出的數(shù)據(jù)包,這樣就可以騰出緩沖區(qū)用于存放新的數(shù)據(jù)包。用戶可以使用函數(shù) TCPTransmitTxBuffer()通過已建立的連接發(fā)送數(shù)據(jù),但是,在使用該函數(shù)前,用戶要先檢查 SOCK_TX_BUF_RELEASED標(biāo)志,確定是否有可用的發(fā)送緩沖區(qū)。本設(shè)計(jì)中,還提供了檢查連接狀態(tài)和收發(fā)狀態(tài)的變量 (標(biāo)志),如SOK_ACTIVE、SOCK_CONNEDTED等。 4.4 HTTP應(yīng)用 在進(jìn)行以上的工作之后,用戶就可以建立HTTP服務(wù)器,通過TCP/IP協(xié)議,實(shí)現(xiàn)不同的微控制器或工作站之間的 通信。HTML(超文本鏈接標(biāo)示語言)網(wǎng)頁數(shù)據(jù)可以保存在MSP430F149的片內(nèi)FLASH存儲(chǔ)器中。網(wǎng)頁能夠完成接收數(shù) 據(jù)、發(fā)送網(wǎng)頁數(shù)據(jù)、關(guān)閉連接和等待其它應(yīng)用進(jìn)行連接等。并且,用戶建立的網(wǎng)頁,能夠動(dòng)態(tài)實(shí)時(shí)的進(jìn)行數(shù)據(jù)更 新。當(dāng)然,無論是在普通計(jì)算機(jī)或微控制器上運(yùn)行HTML網(wǎng)頁應(yīng)用程序,要實(shí)現(xiàn)和其它計(jì)算機(jī)進(jìn)行通信,都必須如前 所述,設(shè)置單一、有效的MAC地址。 5. 結(jié)束語 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,需要進(jìn)行網(wǎng)絡(luò)連接和通信的微型嵌入式因特網(wǎng)終端越來越多,這不僅可以應(yīng)用于日常生 活中,也可以應(yīng)用于許多工業(yè)現(xiàn)場,特別是在那些分散、共享數(shù)據(jù)或需要共享某些信息的工業(yè)現(xiàn)場嵌入式網(wǎng)絡(luò)終端 的技術(shù)優(yōu)質(zhì)更加明顯。此外,MSP430系列單片機(jī)的功耗非常低,很好的解決了在某些特殊場合下的電源問題。由此 可見,本文所論述的設(shè)計(jì)方案具有很大的應(yīng)用前景。 |