基于網絡單片機PIC18F97J60的開發與應用
Microchip公司生產的PICl8F97J60單片機將PIC18系列高端8位單片機與完整的以太網控制器集成在一起,并且包括了MAC、PHY和RAM收發緩沖器。利用這一64或100引腳封裝的系列器件享有的完善網絡連接功能,可以實現成本低、簡單易用的以太網應用方案。此外,利用Microchip公司免費提供的TCP/IP軟件棧,能夠大大縮短開發時間。
1、PICl8F97J60網絡單片機
1.1 網絡特性
PICl8F97J60系列器件具有嵌入式以太網控制器模塊。這是一個完整的連接解決方案,完全實現了介質訪問控制(Media Access Control,MAC)和物理層收發器(Physical Layer Transcei、ver,PHY)模塊,只需使用2個脈沖變壓器和一些無源元件就可以將單片機直接與以太網相連。以太網模塊符合IEEE 802.3中所有關于雙絞線網絡10Base—T連接的規定。它在內部實現了一些數據包過濾機制,用于限制傳入的數據包。它提供了一個用于實現快速數據吞吐的內置DMA模塊,以及硬件IP校驗和計算;另外還提供了2個用于指示鏈路和網絡活動的LED輸出。以太網模塊包含以下5個主要功能模塊:
①PHY收發器模塊——對傳輸雙絞線接口上的模擬數據進行編碼和解碼,并通過網絡發送和接收;
②MAC模塊——實現了符合IEEE 802.3規范的MAC邏輯,并提供了用于控制PHY的MIIM(Media In—dependent Interface Management);
③獨立的8 KB RAM緩沖區——用于存儲已經接收和將要發送的數據包;
④判優器——在單片機內核、DMA、發送和接收模塊發出請求時,控制對RAM緩沖區的訪問;
⑤寄存器接口——用作以太網模塊和單片機特殊功能寄存器(SFR)之間命令和內部狀態信號的譯碼器。
1.2 應用實例
圖1表明,基于互聯網的遠程控制系統是由連接互聯網的主PC機和監測裝置構成的。其中,監測裝置代表某個接入網絡的嵌入式系統,它既可以是工控應用中的溫度、壓力及流量等監控設備,也可以是家庭應用中的網絡家電等。網絡單片機為該監測裝置的核心,其不僅可以采集和處理溫度或流量等傳感器數據,還具有嵌入式網關的功能,可以實現監測裝置的網絡接入。互聯網上的主PC機通過Web形式訪問監測裝置,實現遠程監控。
2、開發工具
2.1 PICDEM.net2開發板
PICDEM.net.2開發板除了包含PICl8F97J60核心器件外,與網絡接入有關的功能還包括:串行EEPROM提供256 Kb(32 KB)存儲空間,可以用來存儲網頁和一些配置信息;可以通過SPI接口編程;RJ一45(10Base一T)標準連接器,其J1連接到PICl8F97J60;RJ一1l(6線)標準連接器,用于通信和器件編程或調試的USB連接;串口RS232,可以用來配置芯片的IP和以太網地址,也可以用來下載新的網頁到EEPROM等。
此外,開發板還提供了Mirochip公司的獨立以太網控制器ENC28J60,用來開發不帶以太網控制器的單片機,可通過標準的SPI接口連接。開發板提供的其他設備包括LCD顯示器、LED指示燈、按鈕開關、溫度傳感器、用于連接擴展卡的插座或邊緣連接器、實驗用布線區(面包板)及電源等。
通過PICDEM.net2開發板可以方便地開發各種定制的PICl8F97J60應用系統,經裁剪或擴充,完成應用系統的硬件電路設計。
2.2 在線調試器MPLAB ICD2
選擇MPLAB ICD2作為在線調試器和燒寫器。Microchip公司提供的在線調試器MPIAB ICD2是一款功能強大而成本低的運行時開發工具,通過RS232或高速USB接口與主PC機相連。與ICE相比,其仿真功能有一些限制,但有如下突出的優點:在產品量產后,只要保留6芯插針,就可直接與ICD2相連;ICD2可以在目標應用中對固件再編程,而不需要其他在線燒寫器設備。通信方式使用默認的USB接口方式。為了避免目標板負載過重對ICD2帶來損害,應采用目標板獨立供電。
2.3 Microchip TCP/IP協議棧
Microchip公司提供免費的TCP/IP軟件棧,為應用開發提供了便利。Microchip TCP/IP協議棧是一套程序,它服務于標準的、基于TCP/IP的應用程序,或者應用在定制的、基于TCP/IP的應用程序中。本應用系統使用的是該協議棧的4.02版本。
類似于TCP/IP參考模型,Microchip TCP/IP協議棧將TCP/IP協議棧分為多層,如圖2所示。每層的實現代碼駐留在一個獨立的源文件中,而服務和應用程序編程接口(API)是通過頭文件或包含文件定義的。與TCP/IP參考模型不同的是,Microchip TCP/IP協議棧中的許多層可以直接訪問在它下面的一層或多層。關于一個層是否繞過相鄰模塊來獲得所需的服務,主要根據開銷的大小,以及服務是否需要智能處理后才能傳遞到下一層來決定。與傳統TCP/IP協議棧實現方法的不同之處是添加了2個新模塊:StackTask和ARPTask。Stackrrask管理協議棧及其所有模塊的操作,而ARPTask管理地址解析協議(Address ResohJtion Protocol,ARP)層的服務。Microchip TCP/IP協議棧使用了協同式多任務處理技術。在協同式多任務處理系統中,同時存在多個任務,每個任務執行自己的作業然后交回控制權,這樣下一個任務才能夠執行作業。StackTask和ARPTask都是協同式任務。Microchip TCP/IP協議棧盡管沒有實現通常TCP/IP協議棧中的所有模塊,但是在需要時可以將它們作為單獨的任務或模塊來實現。
2.4 Stack Manager
Microchip TCP/IP協議棧由多個模塊組成。在使用模塊之前,用戶必須查閱并了解它的用途和API。函數的語法、參數、返回值、前提條件等具體問題可以在編程時針對具體的問題單獨查閱。
使用Microchip TCP/IP協議棧的任何應用程序都必須執行一定的步驟,以確保在適當的時間調用相應的模塊(例如IP、TCP、UDP和ICMP)。無論主應用程序邏輯如何,管理協議棧模塊的任務都始終相同。
為了減輕主應用程序管理各個模塊的負擔,Micro—chip TCP/IP協議棧使用了一個特殊的應用程序層模塊,稱為“StackTask”或“Stack Manager”。Stack Manager以協同式任務處理方式來實現。被賦予處理時間后,它將輪詢MAC層是否存在有效的數據包。若接收到一個包,它將對其進行解碼并路由到相應的模塊做下一步的處理。
Stack Manager。不是Mirochip TCP/IP協議棧的一部分,它與協議棧一起提供給用戶。這樣主應用程序除了自己的工作以外,不需要管理協議棧模塊。執行StackManager任務之前,必須通過調用StackInit()函數來對其進行初始化。這個函數按正確的順序初始化Stack Man—ager變量和各個模塊。一旦調用Stacklnit(),主程序就必須定期調用StackTask()函數,以確保及時處理所有進入的包,以及所有的超時和錯誤條件。
2.5 MicrOChip HTTP服務器
Microehip HTTP服務器以協同式任務處理方式實現,它與Microchip TCP/IP協議棧以及用戶的主應用程序共存。這個服務器自身在源文件“HTTP.c”中實現,使用一個用戶應用程序實現2個回調函數。
這里提供的HTTP服務器不會實現所有的HTTP功能,它是面向嵌入式系統的最小型服務器。用戶可以按需要方便地添加新功能。HTTP服務器主要功能包括:支持位于內部程序存儲器或外部串行EEPROM中的網頁、簡單文件系統(MPFS)、動態網頁內容生成和基于PC的程序,以及從給定目錄創建MPFS映像等。
對于Microchip協議棧及其HTTP服務器,特定格式是MPFS。如果MPFS映像要存儲在外部EEPROM中,則可能需要在應用程序中包含編程方法。HTTP服務器使用文件“index.htm’’作為它的缺省網頁。這要求所有應用程序都將名為“index.htm"的文件作為它們MPFS映像的一部分。
3、系統開發過程
3.1 動態HTTP頁面生成
本應用系統實例中服務器端網頁的設計涉及2項網頁開發技術:AJAX和CGI。篇幅所限,網頁編程代碼略。AJAX全稱為“Asynchronoous JavaScript and XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。與傳統的Web應用不同,AJAX應用可以僅向服務器發送并取回必需的數據,它使用SOAP或其他一些基于XML的web service接口,并在客戶端采用JavaScript處理來自服務器的響應。因為在服務器和瀏覽器之間交換的數據大量減少,因此就能看到響應更快的應用。同時,很多的處理工作可以在發出請求的客戶端機器上完成,所以web服務器的處理時間也縮短了。
CGI(Common Gate Interface,通用網關接口)是Web服務器與客戶端HTML頁面的接口。通俗地講,CGI就像是一座橋,把網頁和Web服務器中的執行程序連接起來,把HTML接收的指令傳遞給服務器,同時把服務器執行的結果返還給HTML頁。CGI可以實現處理表格、據庫查詢、送電子郵件等許多操作,常見的cGI就是計數器。CGI使網頁不再是靜態的,而變成是交互式的。
3.2 集成環境設計
MPLAB IDEv8.OO提供了一個編程環境,由于使用C語言編程,故下載并安裝了免費的C編譯器MPLAB—C18一Student Edition—v3_16.exe。MPLAB集成環境是Micro—chip公司為其所有的開發工具研發的,使用前需要選擇MPLAB ICD2。ICD2可以充當調試器和燒寫器,debug—ger和programmer在菜單中都可以進行選擇。在debug—ger模式下,Program按鈕表示把目標文件和監控程序一起燒寫入待調試的MCU中。
MPLAB ICD2通過USB線連接主機,但不能使用默認的驅動。手動在MPLAB IDE軟件中找到ICD2_USB驅動。這個路徑包含1CD2W2K.INF、ICD2W2K.SYS、ICD2W2K L.SYS等文件。
運行MPLAB.exe后,選擇PICl8F97J60及MPLABICD2,則系統可下載配合該芯片使用的硬件操作系統。完成下載后,系統會檢查ICD2的連接情況。
建立工程項目包括下載安裝Microchip TCP/IP協議棧、修改編譯選項等。要將TCP/IP協議棧集成在主應用程序中,較容易實現且節省存儲空間的方法是調用堆棧文件。但是當集成很多的應用程序時,使用該專用協議棧可能會產生特殊問題。本系統應用只是進行數據采集等簡單應用,因此不必考慮此問題,只需要修改主應用程序MainDemo.c。這是Demo Application的核心文件,用來調用標準的Microehip TCP/IP堆棧文件。
主應用程序MainDemo.c是服務器端程序執行的入口。它首先配置硬件,然后調用TCP/IP堆棧,運行檢測程序,并等待客戶端的請求。通過編譯主程序生成.0結尾的目標文件,連接生成.hex和.cof文件。最后,結合Microchip公司的編程工具ICD2將映像燒寫到單片機。
Microchip HTTP服務器使用簡單文件系統(Micro—chip文件系統或MPFS)來存儲網頁。MPFS映像可以存儲在片上程序存儲器或外部串行EEPROM中,它采用特殊的格式在給定的存儲介質上存儲多個文件。
Microchip提供了MPFS.exe程序將網頁轉換為MPFS映像。在創建MPFS映像之前,用戶必須先創建所有的網頁和相關文件,并保存在同一個目錄中。如果文件擴展名是“htm”,則Image Builder將去掉所有回車和換行字符來減小MPFS映像的大小。需要注意的是,生成的映像文件大小不要超過32 KB。接著需要把MpfsHan—Img.bin映像使用堆棧所提供的ftp服務上傳到EEP-ROM。也可以利用超級終端,通過串口將MPFS映像傳送到EEPROM。
此外,還要通過串口對單片機進行IP地址的設定,這樣就完成了整個系統架構的設計。打開主PC機瀏覽器,輸入遠程單片機的IP地址,可以看到主控制監測頁面,通過網頁即可實現對遠程單片機監測裝置的控制,以及對溫度、流量等信息的監測等。
評論