引言
隨著網絡應用的推廣,網絡的概念逐漸由PC向工控模塊上轉移,如何充分利用網絡協議,進行數據采集或者遠程控制越來越受到了行業的關注。
進行以太網服務器的開發時,一般的做法是MCU或者DSP加上網卡芯片。這樣做可以根據設計應用的領域,選擇速度資源合適的控制芯片,和外擴芯片配合,達到功能和成本的最優化。如果控制芯片中能夠集成以太網的MAC層和PHY層,以此開發的系統當然會在靈活性方面更勝一籌。Freescale公司在最近推出的網絡芯片MC9S12NE64便是在集成度方面的一次開拓性嘗試。
MC9S12NE64單片機特點
MC9S12NE64是Freescale公司在2004年推出的一款S12系列的網絡單片機。它內部集成了以
太網控制模塊和以太網物理層驅動模塊,兼容IEEE 802.3標準。和常用的網卡芯片一樣,NE64的工作模式能夠設定為10Mbps / 100Mbps全雙工/半雙工,并且擁有自適應的功能,可以滿足不同物理環境的要求。
NE64芯片與一般網卡芯片不同的是它的以太網緩沖區的設計,一般網卡芯片使用FIFO作為緩沖區,這種設計可以最大限度的發揮緩沖區的作用。NE64內部則是使用3塊RAM作為緩沖區,兩塊用于接收,一塊用于發送,而且RAM大小可以用戶設定。因為用于控制,以太網數據包一般少用到1.5KB的最大傳輸,所以這種用戶設定大小的緩沖RAM帶來了應用上的靈活性,而節約下來的RAM也可以被用戶程序使用。
NE64的CPU是速度為50MHz的明星內核(Star Core),總線時鐘可以達到25MHz,此外它還有8KB的片內RAM和64KB的片內Flash,因此只是一塊NE64芯片,就可以在眾多中低端網絡應用領域取代以往的外擴芯片設計模式。
除了以上資源以外,MC9S12NE64內部還集成8路10位ADC,各種串口(2個SCI、1個SPI、1個I2C),以及一些單片機常用模塊,如定時器、振蕩器等,功能足夠強大。NE64的封裝形式有112引腳LQFP和80引腳QFP兩種,112引腳的封裝形式引出了總線擴展用的幾組I/O,便于總線的擴展。
在線開發方法
對于新型單片機,最重要的是要熟知它的特性,建立開發環境,然后著手開發。筆者制作了基于NE64的硬件開發平臺,同時繼承實驗室以前的積累,編寫了片上調試監控程序,用于軟件調試。以此為開發環境,實現了一個以太網服務器,用于以太網數據和串口數據的轉換,詳細介紹如下。
硬件開發
開發平臺
首先為NE64制作了一個開發平臺,這是實現NE64最基本功能的核心子板,除了最基本的電源和時鐘電路之外,子板上還有RS232和以太網的硬件驅動電路。開發平臺的硬件示意圖如圖1所示。
圖1 開發平臺硬件示意圖
其中,電源部分使用了一片LM1086,用來把供電變壓器的5V電源轉成3.3V給系統供電。RS232驅動部分使用MAX3232,用來轉換RS232的電平。網口部分采用了一個內置隔離變壓器的RJ45頭。因為板子只是一個實現了基本功能的系統,所以單片機還有很多功能引腳暫且沒有用到,這些引腳通過兩個32引腳的歐式插座引了出來,用戶可以根據引腳定義制作相應母板,完成更多功能的開發。
下載工具
在開發學習中,使用調試監控程序已經能夠滿足調試的要求了,但是在產品使用中,總是需要一個下載工具來把用戶的程序下載到單片機內部,因此又需要一個具有下載功能的編程器。針對這個要求,我們自行制作了一個BDM下載工具,俗稱BDM頭。
下載工具的硬件電路基本和開發平臺一樣,只是去掉了不需要的以太網驅動和歐式插座部分,僅用NE64單片機的一個I/O引腳實現和目標機的通信。軟件部分是根據芯片手冊寫的B
DM功能程序,使此下載工具可以完成最基本的擦除和下載功能。因為2個MCU具有速度相同的時鐘,通信程序相當簡單。
軟件開發
開發方式
S12系列單片機的程序編譯可以使用Metrowerks公司的CoderWarrior系列編譯軟件,它的各種限制版本可在Freescale的網站www.freescale.com下載。
BDM頭的主要用途是首先將監控程序下載到單片機的Flash中,以及最終擦除監控程序并下載最終的應用程序,BDM頭也可用于軟件調試。BDM頭可以自己制作,也可以買到第3方開發的各種商用BDM調試工具。繼承實驗室的積累,筆者針對NE64開發平臺編寫了相應監控程序,可以完成片內Flash擦除、用戶程序下載、斷點設置、寄存器顯示、修改,存儲區顯示修改等,用來做程序開發,這些功能基本夠用了。監控指令的詳細說明,可以訪問www.tsinghua-mot.net 網站。監控程序實際上也是一個用戶程序,它通過串口與用戶交互。監控程序它接收來自串口的命令,執行相應的操作,達到調試的目的。使用監控程序開發應用程序,完全是在線的,是用單片機自己調試自己,調試功能的強弱取決于監控命令的多少。缺點是監控程序本身要占用一些RAM、Flash資源。我們的NE64 監控程序占用了8K的Flash和32B RAM空間,相對于NE64所擁有的64KB Flash和8KB RAM,這些資源占用量是可以接受的。
應用實例
基于上面的開發平臺,我們完成了一個以太網服務應用器的開發實例,它是一個RS232與以太網之間進行數據轉換的模塊。由于目前在工控領域,串行接口的應用還是很普遍的,不可能短時間內完成升級,想要把已有的串行接口設備接入以太網,就需要一個“黑盒子”接在串口和以太網之間,把以太網的數據轉給串口,同時把串口的數據發送到以太網上。
此服務器主要的工作是使用UDP或者TCP來收發以太網數據包,對協議棧的齊備性要求不高,因此筆者使用一個uC/IP的精簡版本作為以太網操作的協議棧。整體程序基于中斷設計而成,這是考慮到NE64的MAC層可以產生接受中斷,串口使用的SCI模塊也可以產生中斷,因此選擇中斷作為整個軟件的基礎,可以提高程序運行效率。詳細的流程圖圖2所示。
圖2 應用程序流程圖
當系統上電完成各種初始化之后,就進入了循環等待中斷的狀態。此時當以太網的數據包發送到交互工具的時候,會觸發一次以太網接收的中斷,在中斷程序中,系統首先存儲遠端地址,然后調用協議棧進行解包分析,把有用數據通過SCI發送給串口;同時當串口數據通過SCI中斷接收進來的時候,系統調用協議棧,把數據發送到暫存的以太網遠端地址。這樣,系統不停的接收以太網上發來的數據,把它轉換給串口,同時接收串口的數據,把它發送到以太網上。作為一個開發實例,這個系統的穩定性還是不錯的,筆者把它接入所在局域網,網絡環境不是很好,但在測試的48小時之內它的工作都是正常的。當然,如果要制作一個完備的產品,這樣一個協議處理顯得比較簡陋了,還需要進一步完善。
協議棧運用
進行網絡應用的開發,最關鍵在于根據本身資源選擇一個比較合適的協議棧。由于MC9S12NE64的資源比較豐富,足以支持大部分的嵌入式協議棧。
目前商業化的協議棧一般比較昂貴,鑒于一般嵌入式的應用對協議棧的完備性要求不是很高,因此可以選擇使用開放源代碼的免費協議棧。Freescale為NE64選定了一個開放源代碼的協議棧OpenTCP,他們與Viola Systems公司合作,已經把OpenTCP開放源碼移植到了NE64。
結語
本文介紹了一款內部集成了以太網模塊的單片機,以及其開發方式和網絡設計應用,希望給讀者帶來以太網開發方面的新思路。MC9S12NE64內部集成以太網模塊的嘗試是對芯片集成化方向的一次開拓,或許NE64比起擴展式的網絡模塊設計方案有些欠缺,但面向中低端網絡應用領域,其單片方式帶來的靈活性與電磁兼容性還是頗具特色的。
責任編輯:gt
-
芯片
+關注
關注
455文章
50761瀏覽量
423368 -
單片機
+關注
關注
6036文章
44555瀏覽量
634911 -
以太網
+關注
關注
40文章
5420瀏覽量
171652
發布評論請先 登錄
相關推薦
評論