用MSP430實現(xiàn)的嵌入式因特網(wǎng)終端設(shè)計
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中分配了三個緩沖區(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ā)速度越快,因為這樣可以減少因緩沖區(qū)不足造成的 滯后。 可以通過主動或被動的方式調(diào)用函數(shù)TCPPassiveOpen()或TCPActiveOpen()建立網(wǎng)絡(luò)通信連接。函數(shù) TCPPassiveOpen()函數(shù)的作用主要是用于檢測到有數(shù)據(jù)包送入時,把數(shù)據(jù)包送入緩沖區(qū),函數(shù)TCPActiveOpen()的 主要作用是,把要發(fā)送的數(shù)據(jù)包送入緩沖區(qū)。在主動發(fā)送數(shù)據(jù)包之前,先設(shè)置要接收該數(shù)據(jù)包的MAC地址,并把本 機地址包含進數(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ù)需要不同的處理時間,這個時間可以使用MSP430F149的定時器Timer_A 來提供,不過必須注意的是,在使用定時器Timer_A之前,必須進行初始化,這點同使用其它微控制器是相似的。 為了減少數(shù)據(jù)包發(fā)送不成功造成的錯誤,當(dāng)接收機接收到數(shù)據(jù)后,其應(yīng)當(dāng)返回一個接收正確信號,當(dāng)發(fā)送機超過設(shè) 定時間,仍接收不到正確的接收信號時,TCP/IP模塊自動進行數(shù)據(jù)包重發(fā),這個過程可以通過相應(yīng)的變量和函數(shù)來 實現(xiàn)。 雖然,各個公司的軟件處理TCP/IP協(xié)議的程序不盡相同,但幸運的是,各個公司在TCP/IP協(xié)議上的兼容性都非 常好,因此,只要用戶按照TCP/IP協(xié)議進行程序編寫,不同的程序間的通信應(yīng)該不存在多大的問題。 4.3 API(應(yīng)用編程接口) 為了使用戶既能夠使用現(xiàn)在的應(yīng)用,也能夠建立適用自己要求的嵌入式應(yīng)用,在整個軟件的編制過程中,應(yīng)當(dāng) 留一下API函數(shù),以便于用戶無需對TCP/IP協(xié)議有過多的了解也能夠在原有程序的基礎(chǔ)上進行二次開發(fā)。本軟件充 分考慮了這一點,給用戶留出了很多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è)計中,還提供了檢查連接狀態(tài)和收發(fā)狀態(tài)的變量 (標(biāo)志),如SOK_ACTIVE、SOCK_CONNEDTED等。 4.4 HTTP應(yīng)用 在進行以上的工作之后,用戶就可以建立HTTP服務(wù)器,通過TCP/IP協(xié)議,實現(xiàn)不同的微控制器或工作站之間的 通信。HTML(超文本鏈接標(biāo)示語言)網(wǎng)頁數(shù)據(jù)可以保存在MSP430F149的片內(nèi)FLASH存儲器中。網(wǎng)頁能夠完成接收數(shù) 據(jù)、發(fā)送網(wǎng)頁數(shù)據(jù)、關(guān)閉連接和等待其它應(yīng)用進行連接等。并且,用戶建立的網(wǎng)頁,能夠動態(tài)實時的進行數(shù)據(jù)更 新。當(dāng)然,無論是在普通計算機或微控制器上運行HTML網(wǎng)頁應(yīng)用程序,要實現(xiàn)和其它計算機進行通信,都必須如前 所述,設(shè)置單一、有效的MAC地址。 5. 結(jié)束語 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,需要進行網(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系列單片機的功耗非常低,很好的解決了在某些特殊場合下的電源問題。由此 可見,本文所論述的設(shè)計方案具有很大的應(yīng)用前景。 |