作者Email: liekie@126.com
【摘 要】本文詳細描述了用TI公司的MSP430單片機實現嵌入式因特網終端的設計,包括硬件和軟件兩大部分。MSP430微控制器控制以太網控制器CS8900A實現本地局域網的功能,通過TCP/IP協議提供與因特網進行連接的應用接口,使用該應用接口,可以建立新的任務或改變現有的任務,實現與因特網中其它終端間的通信。在本文中,給出了硬件原理圖,說明了部分模塊的工作流程。
1. 介紹
計算機通信系統尤其是因特網在日常生活中的作用越來越重要,并且呈加速發展的趨勢。如今,上網不再是個人電腦和網絡工作站的專利,很多用微控制器(或稱單片機)控制的嵌入式系統也成為了因特網網絡節點中的一員,通常,這種嵌入式系統可稱為嵌入式因特網終端。試想,如果通過網頁瀏覽器,能夠完成對遠處的微控制器控制,并能夠接收到微控制器采集的信號,那將給人們的生活帶來很大的便利和極大地推動生產力的發展。打個比方,如果通過辦公室的一臺連接到因特網的電腦和安裝在家里的嵌入式控制器,人們就可以了解到家里或者發生的一切,那么家居防盜等一系列問題將會等到很好的解決。
MSP430是由于TI(Texas Instruments,美國德州儀器公司)開發的16位微處理器,其突出的特點是強調低功耗,非常適用于各種低功率要求的應用,有多個系列和型號。由于其性價比比較高,所以,被廣泛應用于家居自動化,醫療設備,安防系統,樓宇控制系統等許多領域當中。本因特網終端設計方案中使用的MSP430F149是TI公司于2000年增加的MSP430F1X中的一員。
2. 協議基礎
ISO(Internet Standard Organization,國際標準組織)于1981年提出了OSI(Open System Interconnect,開放系統互連)七層網絡模型。七層網絡模型的最大優點是將服務、接口和協議這三個概念明確地區分開來:服務說明某一層為上一層提供一些什么功能,接口說明上一層如何使用下層的服務,而協議涉及如何實現本層的服務。
因特網采用的四層網絡模型是OSI七層網絡模型的一個子集,其具體的四層:應用層、傳輸層、因特網層和網絡層,圖1為因特網的四層網絡模型與OSI七層網絡模型的對應關系圖。因特網模型通過數據分段(Segment)中的序列號保證所有傳輸的數據可以在遠端按照正常的次序進行重組,而且通過確認保證數據傳輸的完整性。
圖1 OSI七層協議與因特網四層模型的對應關系
2.1 以太網(Ethernet)[1]
以太網是目前用得最廣泛的一種局域網,它在因特網四層網絡模型當中,屬于網絡層。以太網網絡中的每個節點具有相同的訪問網絡的權利,它們之間對網絡占用是通過具有沖突檢測的載波監聽多路訪問( CSMA/CD )的方法來實現的。數據采用曼徹斯特編碼,網絡中的連接一般采用雙絞線或同軸電纜。以太網中每個節點具有一個48位、唯一編號的地址。每幀數據的最大長度為1518個字節,第一個48位為目標地址,第二個48位為數據源地址,然后是2個字節的數據幀類型值,在數據幀的最后,自動生成4個字節的循環冗余碼校驗(CRC)值,用于保證數據幀的完整性。
2.2傳輸控制協議TCP(Transmission Control Protocol)
TCP提供了一種可靠的數據流服務,盡管TCP是DARAP協議組中的一員,但它卻有很大的獨立性。它對下層網絡協議只有最基本的要求,很容易在不同的網絡上建成,因而非常流行。ISO/OSI運輸層標準中的第四類TP-4就是以 TCP作為原型建立的。TCP可以在眾多的網絡上工作,可以提供虛擬電路服務和面向數據流的傳輸服務。用戶數據可以有序而且可靠的傳送。在一個分組可能發生丟失、破壞、重復、延遲或失序情況下,TCP服務可提供一種可靠的進程間通信機制,協議可以自動糾正各種差錯。
2.3網際協議IP(Internet Protocol)
第三層最重要的協議是IP。它將多個網絡聯成一個互連網。IP的工作是將一個以上的報文處理網絡聯成一個網際網。IP的基本任務是通過網際網傳送數據報,各個IP數據報之間是相互獨立的。主機上的IP層基于數據鏈路層的服務向傳輸層提供服務。IP從源運輸實體取得數據,通過它的數據鏈路層服務傳給目的主機的IP層。網關通過下一網絡數據報傳到目的主機或下一網關。
2.4地址轉換協議ARP(Address Resolution Protocol)
在TCP/IP網絡環境下,每個主機分配的組位IP地址只是一種邏輯地址,這樣在傳送時必須轉換成物理地址,ARP協議就是完成這一功能的。? ARP使主機可以找到同一物理網絡中任一物理主機的物理地址,只需給出該主機的網際地址即可。可見,基本網絡的物理編址對網絡層服務是透明的。
2.5 其它協議
在因特網網絡協議當中,還有其它相關的協議,如:反向地址轉換協議RARP(Reverse Address Resolution Protocol)、用戶數據報協議UDP(User Datagram Protocol)、網際控制報文協議ICMP(Internetwork control Message Protocol)、超文本傳輸協議(hypertext transfer protocol)等,它們在因特網的數據交換當中都有什么重要的作用,本文限于篇幅,不一一詳細介紹。
3. 硬件設計[1]
本設計中所用到的兩個重要組件為TI公司的微處理器MSP430F149和Crystal公司的以太網控制器CS8900A,下面簡單介紹一下這兩個組件,再論述硬件實施方案。
3.1 MSP430F149[2]
MSP430F149具有60K字節的FLASH存儲器和2K字節的RAM、看門狗定時器(Watchdog Timer)、6個8位的通用I/O口、12位A/D轉換器、2個串行通信接口和1個硬件乘法器等。MSP430F149的60K字節FLASH存儲器足以存儲網頁數據, 6個通用I/O口既可以用來控制以太網控制器CS8900A,也可以用來執行其它的用戶命令,12位A/D轉換器可以用來在終端采集數據,然后再通過網絡發給用戶.
3.2 CS8900A[3]
CS8900A低功耗的以太網控制器,被廣泛應用于工控機中。其高集成度的設計(在應用當中只需要極少的外圍元件)和簡單容用的總線接口,非常適用于本設計。目前,許多的以太網控制器都只提供PCI(周邊元件擴展接口)接口,而CS8900A可以直接和微控制器相連,所以,可以MSP430F149的I/O口來直接對CS8900A進行控制,具體連接方式如圖2所示。另外,CS8900A可以直接3V供電,這有利于和MSP430F149之間的電平匹配。
3.3 MSP430F149與CS8900A的接口
CS8900A有三種工作模式:I/O模式、存儲器模式和直接存儲器存儲模式,默認為I/O模式,可通過程序使其工作于其它模式。CS8900A的各個工作模式各有優缺點,本設計當中,采用的是它的I/O模式。CS8900A共有8個16位的I/O口,這8個I/O口與片內的8個16位寄存器相對應。如圖2所示,CS8900A采用8位的數據總線方式和MSP430F149的P5口相連,接口中共用到14個引腳。復位后,CS8900A默認選擇I/O地址為0x300,并且一直保持該默認地址工作。
3.4 系統硬件原理
整個系統的硬件原理如圖2所示,下面詳細分析圖中的各個模塊。
CS8900A的XTAL1(97)引腳和XTAL2(98)引腳接一20MHz的晶振,由于其片內XTAL處集成了電容,所以,不需要外接電容。CS8900A的復位引腳為高有效,在芯片上電工作時,需要一個復位信號,這由R9和C17提供聯合提供。CS8900A有兩個不同的LED控制引腳:LANLED(100)引腳和LINKLED(99)引腳,用于控制LED以顯示CS8900A的工作狀態。LANLED引腳接一個紅色LED(D1),當CS8900A接收或發送數據時,該引腳輸出低電平,點亮紅色LED。LINKLED接一個黃色LED(D2),當CS8900A和工作的以太網絡連接時,黃色LED點亮。
和MSP430F149有關的電路,除了上述的和CS8900A連接的部分外,還有JTAG(Joint Test Action Group)接口、晶振和復位電路。其中,JTAG接口用于編程和調試,用一個14引腳的接頭引出了TCK、TDI、TDO/TDI四個用于編程和調試的引腳,可直接和MSP430的調試工具FET(FLASH Emulation Tool)相連。用戶也可以通過電平轉換芯片MAX3221把MSP430F149的串行通信口也引出,以實現需要的功能。MSP430F149時鐘電路部分,需要接一個8MHz的晶振和兩個15pF的電容。
整個系統由3.3V的電源供電,綠色LED(D4)為整個系統的電源指示燈。為了系統擴展的需要,也可以把MSP430F149所有未用到的I/O引腳都用接頭引出。
進行PCB(印制電路板)設計時,通過旁路電容濾波,以給MSP430F149和CS8900A提供穩壓的電源信號。為了得到更好的系統性能和減小電磁干擾,最好能夠把PCB布置為四層板。
3.5 CS8900A與局域網的接口
CS8900A片內集成了一個10M的以太網收發器,其片內集成了所有用于和局域網通信的模擬和數字電路,其可通過一個電磁隔離器E2023直接和局域網相連。電阻R1用于連接兩根接收線,和兩根發送線相連的電阻R2和R3則用于阻抗匹配。RJ45為網絡接頭,其可接10M或100的網絡集線器(hub)。
4. 軟件設計
本設計的軟件部分主要分為四大部分:以太網模塊、TCP/IP模塊、API(應用程序接口)和HTTP(超文本傳輸協議)服務模塊,全部程序用C語言編寫(便于與其它微控制器系統的接口的擴展),并通過IAR Workbench for MSP430 V2.10編譯。
4.1 以太網模塊
以太網部分程序的主要作用是對以太網控制器CS8900A進行驅動、以函數的形式給其它模塊提供讀寫CS8900A寄存器的接口、產生讀寫CS8900A的時鐘等。以太網程序包含了網絡接口的各種配置,其中,最重要的是,MAC(介質訪問控制)地址的配置。MAC地址共48位,在程序中用6個無符號整型變量存儲MAC地址值,每個MAC地址值必需為唯一的,并且不能是0xFFFFFFFFFFFF。
以太網控制器的配置過程如下:在系統上電后,首先調用函數Init8900()進行以太網控制器CS8900A的初始化配置,然后CS8900A被復位,MSP430F149把本機的MAC地址以配置序列字的形式發給CS8900A,CS8900A把MAC地址存儲在寄存器中。配置完成后,MSP430F149就可以對CS8900A讀寫數據了。
4.2 TCP/IP模塊
TCP/IP模塊是整個系統軟件的關鍵,定義了使用網絡來收發數據的協議,使用以太網模塊所提供的各種讀寫函數來接收或發送數據,并給應用層提供簡單易用的API接口。
TCP/IP模塊中,最重要的函數是DoNetworkStuff(),該函數的主要作用是進行TCP事件處理,應該周期性地被用戶程序調用。在函數DoNetworkStuff()中,定義了一些用于標志以CS8900A和MSP430F149工作狀態的標志量,該函數的工作流程如圖3所示。函數DoNetworkStuff()被調用得周期越短,系統執行TCP/IP協議的性能越好。
為了更好的協調接發和發送的數據,給TCP/IP模塊在SRAM中分配了三個緩沖區,TxFrame1、TxFrame2和RxTCPBuffer。其中,TxFrame1的主要作用是給要發送的TCP數據幀(包括以太網、IP、TCP幀頭)提供緩沖內存;TxFrame2的主要作用是給TCP非數據幀(包括以太網、IP、TCP幀頭)和ARP、CIMP協議幀提供緩沖內存;RxTCPBuffer給接收到的TCP數據提供緩沖內存。所分配的緩沖區越大,收發速度越快,因為這樣可以減少因緩沖區不足造成的滯后。
可以通過主動或被動的方式調用函數TCPPassiveOpen()或TCPActiveOpen()建立網絡通信連接。函數TCPPassiveOpen()函數的作用主要是用于檢測到有數據包送入時,把數據包送入緩沖區,函數TCPActiveOpen()的主要作用是,把要發送的數據包送入緩沖區。在主動發送數據包之前,先設置要接收該數據包的MAC地址,并把本機地址包含進數據包。一旦連接建立完成,就可以開始發送數據,可以通過相應的接口函數讀出連接的狀態。當數據發送完畢,可以通過函數TCPClose()關閉連接。
在數據包收發的過程當中,不同的任務需要不同的處理時間,這個時間可以使用MSP430F149的定時器Timer_A來提供,不過必須注意的是,在使用定時器Timer_A之前,必須進行初始化,這點同使用其它微控制器是相似的。為了減少數據包發送不成功造成的錯誤,當接收機接收到數據后,其應當返回一個接收正確信號,當發送機超過設定時間,仍接收不到正確的接收信號時,TCP/IP模塊自動進行數據包重發,這個過程可以通過相應的變量和函數來實現。
雖然,各個公司的軟件處理TCP/IP協議的程序不盡相同,但幸運的是,各個公司在TCP/IP協議上的兼容性都非常好,因此,只要用戶按照TCP/IP協議進行程序編寫,不同的程序間的通信應該不存在多大的問題。
4.3 API(應用編程接口)
為了使用戶既能夠使用現在的應用,也能夠建立適用自己要求的嵌入式應用,在整個軟件的編制過程中,應當留一下API函數,以便于用戶無需對TCP/IP協議有過多的了解也能夠在原有程序的基礎上進行二次開發。本軟件充分考慮了這一點,給用戶留出了很多AIP函數,主要的有,TCPClose()、TCPReleaseRxBuffer()和TCPTransmitTxBuffer()等。其中,函數TCPClose()的主要用處是用于關閉打開了的連接,在關閉連接之前,發送的數據包還留在發送緩沖區中以保證正確發送,連接關閉之后,用戶要重新建立連接的話,必須重新設置IP地下、重新分配I/O口和重新建立連接。TCPReleaseRxBuffer()的主要作用是,在讀出緩沖區的數據之后,調用此函數,無需再保存已正確讀出的數據包,這樣就可以騰出緩沖區用于存放新的數據包。用戶可以使用函數TCPTransmitTxBuffer()通過已建立的連接發送數據,但是,在使用該函數前,用戶要先檢查SOCK_TX_BUF_RELEASED標志,確定是否有可用的發送緩沖區。本設計中,還提供了檢查連接狀態和收發狀態的變量(標志),如SOK_ACTIVE、SOCK_CONNEDTED等。
4.4 HTTP應用
在進行以上的工作之后,用戶就可以建立HTTP服務器,通過TCP/IP協議,實現不同的微控制器或工作站之間的通信。HTML(超文本鏈接標示語言)網頁數據可以保存在MSP430F149的片內FLASH存儲器中。網頁能夠完成接收數據、發送網頁數據、關閉連接和等待其它應用進行連接等。并且,用戶建立的網頁,能夠動態實時的進行數據更新。當然,無論是在普通計算機或微控制器上運行HTML網頁應用程序,要實現和其它計算機進行通信,都必須如前所述,設置單一、有效的MAC地址。
5. 結束語
隨著網絡技術的發展,需要進行網絡連接和通信的微型嵌入式因特網終端越來越多,這不僅可以應用于日常生活中,也可以應用于許多工業現場,特別是在那些分散、共享數據或需要共享某些信息的工業現場嵌入式網絡終端的技術優質更加明顯。此外,MSP430系列單片機的功耗非常低,很好的解決了在某些特殊場合下的電源問題。由此可見,本文所論述的設計方案具有很大的應用前景。
參考文獻
[1] Texas Instruments. MSP430 Internet Connectivity[Z].2004.2
[2] Texas Instruments. MSP430x13x, MSP430x14x, MSP430x14x1 MIXED SIGNAL MICROCONTROLLER[Z].2000.7
[3] Cirrus Logic. CS8900A Product Data Sheet[Z] .2001.4
評論