摘要:對(duì)于當(dāng)前物聯(lián)網(wǎng)的應(yīng)用及需求,以Cortex-M3芯片為模版,實(shí)現(xiàn)串口與以太網(wǎng)之間的數(shù)據(jù)轉(zhuǎn)換與傳送,該文簡(jiǎn)要介紹了轉(zhuǎn)換設(shè)備的硬件與軟件設(shè)計(jì),通過(guò)實(shí)際應(yīng)用驗(yàn)證其的可行性。
關(guān)鍵詞:LM3S6432、Cortex-M3、串口、以太網(wǎng)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)02-0252-05
近幾年來(lái),隨著物聯(lián)網(wǎng)的推廣,越來(lái)越多的設(shè)備需要聯(lián)入網(wǎng)路工作,通過(guò)現(xiàn)有的精簡(jiǎn)的TCP/IP協(xié)議棧來(lái)實(shí)現(xiàn)網(wǎng)路通信。對(duì)于現(xiàn)有的32位的ARM芯片來(lái)說(shuō),集成這樣的一個(gè)帶有TCP/IP協(xié)議的通信系統(tǒng),是件很容易的事。但是對(duì)于8位的單片機(jī)來(lái)說(shuō)卻是件難事,固有的FLASH空間限制了其使用,那么使用8位單片機(jī)的產(chǎn)品就不能實(shí)現(xiàn)網(wǎng)路通信了嗎?答案是否定的。串口以太網(wǎng)轉(zhuǎn)換器就是將得到的8位單片機(jī)的串口,通過(guò)內(nèi)部轉(zhuǎn)換以網(wǎng)絡(luò)幀的形式進(jìn)行通信,以達(dá)到網(wǎng)絡(luò)通信的目的,大大增加了原串口設(shè)備的遠(yuǎn)程控制收發(fā)的功能。
1 轉(zhuǎn)換器的硬件規(guī)劃與設(shè)計(jì)
轉(zhuǎn)換器在MCU的選擇上,根據(jù)功耗、存儲(chǔ)空間,硬件特點(diǎn)等方面,我們選擇TI公司的LM3S6432 作為轉(zhuǎn)換器的主芯片。
如果說(shuō)軟件設(shè)計(jì)是系統(tǒng)的思想的話,那么硬件設(shè)計(jì)就是整個(gè)系統(tǒng)的軀干了。整個(gè)轉(zhuǎn)換器在硬件設(shè)計(jì)上由核心板+底板+ 接線板構(gòu)成,核心板可用于后期的芯片升級(jí)和更換,接主板提供了主要的供電和IO接口,接線板方便后期的線材鏈接。電源部分采用DC-DC電路作為系統(tǒng)電源部份,輸入電壓12V,輸出為5V和3.3V兩路。
本系統(tǒng)MCU芯片LM3S6432是LuminaryMicro(TI)公司推出的基于ARMCortex-M3嵌入式內(nèi)核的微控制器。
該微控制器包括以下特性:32位ARMCortexTM-M3V7M架構(gòu);工作頻率為50-MHz;96KB單周期Flash,32KB單周期訪問(wèn)的SRAM;3個(gè)通用定時(shí)器模塊(GPTM),每個(gè)提供2個(gè)16-位定時(shí)器。;兼容ARMFiRM的看門狗定時(shí)器;局域網(wǎng)控制器,傳輸速率可達(dá)1Mb/S;以太網(wǎng)控制器,在100Mbps和10Mbps速率運(yùn)作下支持全雙工和半雙工的操作方式,同步串口接口,2個(gè)完全可編程的6C550-typeUART,支持IrDA;3個(gè)10位模數(shù)轉(zhuǎn)換器(ADC);2個(gè)獨(dú)立集成模擬比較器;I2C模塊在標(biāo)準(zhǔn)模式下主機(jī)和從機(jī)接收和發(fā)送操作的速度可達(dá)100Kbps,在快速模式下可達(dá)400Kbps;高達(dá)14-43個(gè)GPIO口,輸入/輸出可承受5V,片內(nèi)低壓差穩(wěn)壓器,具有可編程的輸出電壓;靈活的復(fù)位源;包括是上電復(fù)位(POR),軟件復(fù)位,看門狗定時(shí)器復(fù)位;遵循IEEE802.3-2002規(guī)范的10/100M以太網(wǎng)控制器,集成了10/100Mbps收發(fā)器(PHY物理層),可編程MAC地地址、遵循IEEE1149.1-1990標(biāo)準(zhǔn)的測(cè)試訪問(wèn)端口(TAP)控制器通過(guò)JTAG和網(wǎng)絡(luò)接口進(jìn)行調(diào)試訪問(wèn)、完整的JTAG邊界掃描。
本設(shè)計(jì)系統(tǒng)在MCU上已經(jīng)基礎(chǔ)了一個(gè)符合IEEE802.3-2002標(biāo)準(zhǔn)的工業(yè)以太網(wǎng)接口,并且內(nèi)部集成了MAC+PHY層,外面只需要接一個(gè)網(wǎng)絡(luò)變壓器和RJ-45的以太網(wǎng)接口就可以很方便的實(shí)現(xiàn)以太網(wǎng)通訊了,在硬件設(shè)計(jì)上非常的簡(jiǎn)便,并且穩(wěn)定,成本降低,圖1就是實(shí)際設(shè)計(jì)中以太網(wǎng)控制的連接圖。
圖1 以太網(wǎng)Ethernet通訊接口部分
LM3S6432內(nèi)置的以太網(wǎng)控制器由一個(gè)完全集成的Media Access Control( 即MAC介質(zhì)訪問(wèn)控制器)和Physical Layer( 即PHY網(wǎng)絡(luò)物理層)等接口器件組成。LM3S6432的以太網(wǎng)控制器也是遵循IEEE 802.3 協(xié)議規(guī)范的,對(duì)于10BASE-T 和 100BASE-TX的標(biāo)準(zhǔn)完全支持。 因此我們?cè)谧鱿到y(tǒng)設(shè)計(jì)師時(shí)只需要在外圍接入一個(gè)雙路 1:1隔離變壓器就能與線路相連,實(shí)現(xiàn)網(wǎng)路通信。
電路連接描述:
在電路的連接上,我們考慮到LM3S6432內(nèi)部已經(jīng)集成了MAC和PHY兩個(gè)模塊,且與ISO模型的1,2層相對(duì)應(yīng),芯片本身可以實(shí)現(xiàn)以太網(wǎng)幀的發(fā)送和接收處理。因此我們只需要接入一個(gè)網(wǎng)絡(luò)變壓器,通過(guò)RJ45接口隔離不同設(shè)備之間的電平不同,增強(qiáng)信號(hào)以實(shí)現(xiàn)IP網(wǎng)路的通信的功能。
UART部分:
Stellaris?通用異步收發(fā)器(UART)具有完全可編程、16C550型串行接口的特性。LM3S8962控制器帶有2個(gè)UART模塊。支持IrDA 串行紅外(SIR)編碼器/解碼器,用戶可以根據(jù)需要對(duì)IrDA串行紅外(SIR)或UART輸入/輸出端進(jìn)行編程,IrDASIR編碼器/解碼器功能模塊在半雙工時(shí)其數(shù)據(jù)速率可高達(dá)115.2Kbps,可編程的內(nèi)部時(shí)鐘發(fā)生器,允許對(duì)參考時(shí)鐘進(jìn)行1到256分頻以得到低功耗模式的位持續(xù)時(shí)間。
圖4 UART結(jié)構(gòu)圖
2 轉(zhuǎn)換器的軟件規(guī)劃與設(shè)計(jì)
在軟件設(shè)計(jì)上主要分為兩大部分,一部分為以太網(wǎng)的信號(hào)處理,一部分為串口通信數(shù)據(jù)處理,軟件設(shè)計(jì)在結(jié)構(gòu)上采用模塊化的設(shè)計(jì)方法,各個(gè)功能為一個(gè)模塊。
1)串口接收部分
Stellaris通用異步收發(fā)器(UART)的API接口提供了一組使用StellarisUART模塊的函數(shù)。提供的函數(shù)用來(lái)配置和控制UART模塊的發(fā)送和接收數(shù)據(jù)、管理UART模塊的中斷。通過(guò)對(duì)UART控制寄存器(UARCTL)的RXE位進(jìn)行設(shè)置,將UART配置成接收。由于復(fù)位完成后,發(fā)送和接收都是使能的??梢酝ㄟ^(guò)將UARTCTL寄存哭喊的UARTEN位清零來(lái)實(shí)現(xiàn)。
代碼如下:
2)以太網(wǎng)處理部分
Stellaris 以太網(wǎng)控制器由一個(gè)完全集成媒體訪問(wèn)控制器(MAC)和一個(gè)網(wǎng)絡(luò)物理(PHY )接口器件組成。以太網(wǎng)控制制器符合IEEE 802.3 規(guī)范和完全支持10B ASE-T 標(biāo)準(zhǔn)與100BA SE-TX標(biāo)準(zhǔn)。 以太網(wǎng)API 提供這樣一組函數(shù):以太網(wǎng)控制器需要用這一組函數(shù)來(lái)執(zhí)行這個(gè)以太網(wǎng)控制器的一個(gè)中斷驅(qū)動(dòng)的以太網(wǎng)驅(qū)動(dòng)程序。函數(shù)被提供來(lái)配置和控制MAC,以便訪問(wèn)在PHY設(shè)置的寄存器,以便發(fā)送和接收以太網(wǎng)包,并配置和控制可用的中斷。
要使用以太網(wǎng)控制器,外設(shè)必須通過(guò)置位RCGC2寄存器的EPHY0和EMAC0位來(lái)使能。然后 ,使用以下步驟來(lái)配置以太網(wǎng)控制器執(zhí)行基本的操作。
(1)編程MACDIV寄存器在內(nèi)部MII上獲得一個(gè)2.5MHz的時(shí)鐘(或更小的時(shí)鐘)。假設(shè)系統(tǒng)時(shí)鐘為20MHz,則MACDIV的值就是4。
(2)編程MACIA0和MACIA1寄存器進(jìn)行地址過(guò)濾。
(3)使用值0x16編程MACTCTL寄存器,實(shí)現(xiàn)自動(dòng)CRC產(chǎn)生、填充和全雙工操作。
(4)使用值0x08編程MACRCTL寄存器來(lái)拒絕帶有壞FCS的幀。
(5)通過(guò)置位MACTCTL和MACRCTL寄存器的LSB來(lái)使能發(fā)送器和接收器。
(6)要發(fā)送一個(gè)幀,就使用MACDATA寄存器將該幀寫入TXFIFO。然后置位MACTR寄存器的NEWTX位啟動(dòng)發(fā)送過(guò)程。當(dāng)NEWTX位被清零后,TXFIFO就可用于下個(gè)幀的發(fā)送。
(7)要接收一個(gè)幀,就必須等到MACNP寄存器的NPR域?yàn)榉橇阒怠H缓笫褂肕ACDATA寄存器開(kāi)始將幀從RXFIFO中讀出。當(dāng)幀(包括FCS字段在內(nèi))被讀取后,NPR域的值應(yīng)當(dāng)減1。當(dāng)RXFIFO中沒(méi)有幀時(shí),NPR域?qū)⒆x出為零。
代碼如下:
3 結(jié)束語(yǔ)
通過(guò)實(shí)際的應(yīng)用說(shuō)明了串口轉(zhuǎn)以太網(wǎng)的可行性及可靠性,降低了生產(chǎn)中系統(tǒng)投入的成本,增強(qiáng)了系統(tǒng)的可靠性和可拓性。電路簡(jiǎn)單、成本低廉。目前已應(yīng)用于某公司的實(shí)際產(chǎn)品中。
參考文獻(xiàn):
[1] 吳春銳,張志凱.基于LM3S6432的嵌入式以太網(wǎng)轉(zhuǎn)串口模塊設(shè)計(jì)[J].電腦編程技巧與維護(hù),2012(2):76-78.
[2] 殷倫,王英民.串口聯(lián)網(wǎng)技術(shù)在遠(yuǎn)程設(shè)備控制中的應(yīng)用[J].電聲技術(shù),2007 31(12):46-47,55.
[3] 陳曉敦.多路(單平臺(tái))稱重傳感采集控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].福州:福州大學(xué),2012.