MC9S12NE64型單片機(jī)的嵌入式以太網(wǎng)連接
摘要:本文分析基于單片機(jī)的以太網(wǎng)連接方案,介紹MC9S12NE64型16位單片機(jī)的特性及其最小系統(tǒng)的硬件設(shè)計(jì),給出MC9S12NE64的初始化過程、主程序和TCP/IP協(xié)議棧實(shí)現(xiàn)的思想。
1 引言
隨著互聯(lián)網(wǎng)的出現(xiàn)和以太網(wǎng)的迅速發(fā)展,基于以太網(wǎng)的設(shè)備控制越來越多,發(fā)展也越來越快。目前,以太網(wǎng)(EtImmet)已經(jīng)廣泛地應(yīng)用于各種計(jì)算機(jī)網(wǎng)絡(luò),通過以太網(wǎng)及TCP/IP協(xié)議??梢允共煌木W(wǎng)絡(luò)設(shè)備實(shí)現(xiàn)互連、交換數(shù)據(jù)。
用以太網(wǎng)實(shí)現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)連接有多種方案。傳統(tǒng)的多器件以太網(wǎng)連接方案是通過MCU擴(kuò)展以太網(wǎng)控制器來實(shí)現(xiàn)的,必要時(shí)還需要擴(kuò)展外部RAM和 ROM。雖然這種方案應(yīng)用起來不是很困難,但所用外部元件數(shù)量較多,系統(tǒng)開銷較大。穩(wěn)定性不高。為了解決傳統(tǒng)方案的不足,本文討論以集成以太網(wǎng)MAC層和物理層的16位單片機(jī)MC9S12NE64來實(shí)現(xiàn)單器件以太網(wǎng)連接。與多器件方案相比.單器件連接方案具有所用外部元件少、系統(tǒng)開銷小、穩(wěn)定性高、設(shè)計(jì)時(shí)間短等一系列優(yōu)點(diǎn)。
2 MC9S12NE64簡介
MC9S12NE64是Freescale公司生產(chǎn)的基于HCSl2 CPU內(nèi)核的16位單片機(jī),利用它可以方便地實(shí)現(xiàn)單器件以太網(wǎng)連接,構(gòu)成一個(gè)完整的終端節(jié)點(diǎn)。MC9S12NE64的內(nèi)部功能模塊框圖如圖1所示,主要特性如下:
采用高性能16位HCSl2CPU內(nèi)核,3.3V下工作頻率可達(dá)25MHz或10MIPS,具有優(yōu)化的C語言體系結(jié)構(gòu),可以生成十分簡潔的代碼。
帶有片上調(diào)試接口,可以進(jìn)行實(shí)時(shí)在線仿真和調(diào)試,而無需仿真器。
集成了64KB的nash內(nèi)存和8KB的靜態(tài)RAM,能夠滿足大多數(shù)的應(yīng)用場合。如果需要還可進(jìn)行外部擴(kuò)展。
集成了10/100Mbps以太網(wǎng)媒介訪問控制器(EMAC),內(nèi)置標(biāo)準(zhǔn)的媒介獨(dú)立接口(MII),可以實(shí)現(xiàn)地址識別及過濾、以太類型過濾,支持半雙工和全雙工通信,具有和8KB RAM共用可配置的EMAC緩沖區(qū),包括一個(gè)發(fā)送緩沖區(qū)和兩個(gè)接收緩沖區(qū),MC9S12NE64的RAM以2倍于CPU的速度運(yùn)行,使得CPU和EMAC 緩沖區(qū)可以交叉存取數(shù)據(jù)。
集成了10/100Mbps以太網(wǎng)物理層(EPHY),支持自動(dòng)協(xié)商模式,支持半雙工和全雙工的通信。并具有自診斷功能。
帶有8通道10位模數(shù)轉(zhuǎn)換器fADC)、4通道16位定時(shí)器、2個(gè)串行通信接口(SCI),1個(gè)高速串行外設(shè)接口(SPI)、1個(gè)具有256種時(shí)鐘速度選項(xiàng)的I2C接口,具備使用鎖相回路的時(shí)鐘及復(fù)位發(fā)生器(CRG)模塊,有多達(dá)70個(gè)通用I/O口。具有80引腳TQFP-EP和112引腳LQFP兩種封裝。
3 MC9S12NE64的簡單應(yīng)用
3.1 硬件設(shè)計(jì)
利用MC9S12NE64可以構(gòu)成不同功能的網(wǎng)絡(luò)終端節(jié)點(diǎn),如網(wǎng)絡(luò)服務(wù)器、帶因特網(wǎng)功能的設(shè)備、遠(yuǎn)程監(jiān)控(數(shù)據(jù)采集,診斷)、對現(xiàn)場設(shè)備的遠(yuǎn)程控制、遠(yuǎn)程設(shè)備通過電子郵件或文字尋呼機(jī)發(fā)送消息等。
基于MC9S12NE64最少外圍器件的系統(tǒng)硬件電路原理圖如圖2所示。此最小系統(tǒng)由80引腳的MC9S12NE64與外圍器件組成,電路中帶有背景調(diào)試接頭J1;5個(gè)LED狀態(tài)指示燈(分別用來顯示網(wǎng)絡(luò)連接狀態(tài),包括EPHY是否沖突、連接是否建立、是否接收數(shù)據(jù)、連接速度、雙工模式);必需的偏置電阻R5;高速局域網(wǎng)電磁隔離模塊(即RJ45以太網(wǎng)接口)。其中PHY_TXP和PHY_TXN為發(fā)送線,PHY_RXP和PGY_RXN為接收線。設(shè)計(jì)時(shí),MC9S12NE64的物理端口與隔離變壓器連接時(shí)必須符合IEEE802.3對物理層規(guī)范的要求,如RJ45的插孔與隔離變壓器的間隔應(yīng)盡量小,輸出和輸入差分信號對的走線要很好的隔離,確保電源的額定負(fù)載電流不小于300mA。設(shè)計(jì)時(shí)還應(yīng)注意系統(tǒng)時(shí)鐘的要求,MC9S12NE64只支持皮爾斯型振蕩電路,晶振的精度應(yīng)高于25ppm。系統(tǒng)中MC9S12NE64工作在正常的單片模式,其內(nèi)部穩(wěn)壓電源處于工作狀態(tài)。
3.2 MC9S12NE64的初始化
MC9S12NE64單片機(jī)在工作之前。必須進(jìn)行必要的初始化。主要包括時(shí)鐘及復(fù)位發(fā)生器(CRG)模塊、EMAC模塊、EPHY模塊等。雖然MC9S12NE64上的EMAC和EPHY被設(shè)計(jì)為兩個(gè)獨(dú)立的模塊,但如果用到內(nèi)部的EPHY,則EMAC和EPHY必須同時(shí)進(jìn)行初始化。
MC9S12NE64的初始化過程如下:
(1)初始化時(shí)鐘及復(fù)位發(fā)生器模塊來產(chǎn)生25MHz的內(nèi)部總線時(shí)鐘,這一過程通過設(shè)置時(shí)鐘及復(fù)位發(fā)生器(CRG)模塊的寄存器表來完成。
(2)設(shè)置EPHYCTL0寄存器的DIS10和DIS100位為1,使EPHY時(shí)鐘無效,直到EMAC和EPHY配置完畢。
(3)通過EPHYCTL1寄存器的:EPHYADD0、E-PHYADD1、EPHYADD2、EPHYADD3、EPHYADD4來配置MII請求的EPHY地址。
(4)配置自動(dòng)協(xié)商模式。設(shè)置EPHYCTL0寄存器的ANDIS位為0.使用自動(dòng)協(xié)商模式。
(5)設(shè)置EPHYCTL0寄存器的LEDEN位為1允許EPHY驅(qū)動(dòng)LED信號。設(shè)置EPHYCTL0寄存器的EPHYIEN位為1使EPHY中斷有效。設(shè)置
EPHYCTL0寄存器的EPHYEN位為1使EPHY有效工作,這樣就可以實(shí)現(xiàn)EMAC和EPHY間的介質(zhì)無關(guān)接口(MII)操作。
(6)設(shè)置MCMST寄存器的MDCSEL位為0xA,來配置EMAC管理數(shù)據(jù)時(shí)鐘(EMACMDC)。
(7)設(shè)置BUFCFG寄存器的BUFMAP位來配置EMAC以太網(wǎng)緩沖區(qū)的大小。BUFMAP的值用來確定系統(tǒng)RAM中用戶RAM和EMAC緩沖區(qū)的比例。BUFMAP*為4,這時(shí)單個(gè)緩沖區(qū)的大小為1.5K字節(jié),正好可以存放一個(gè)*的以太網(wǎng)幀。大于緩沖區(qū)大小的數(shù)