歡迎來到溫州瑞川電子有限公司!
摘要 在自動(dòng)化控制及其他民用設(shè)備、工業(yè)控制如電力設(shè)備系統(tǒng)等領(lǐng)域,眾多設(shè)備的對(duì)外通訊接口仍然是低速串口。但低速串口有其固有的缺點(diǎn):無法集中、全面、準(zhǔn)確而實(shí)時(shí)地監(jiān)控?cái)?shù)據(jù)。本文介紹基于微處理器SEP3203串口以太網(wǎng)轉(zhuǎn)換器的以太網(wǎng)接口的軟硬件設(shè)計(jì)方法,它可以變傳統(tǒng)的串口通訊為網(wǎng)絡(luò)通訊,實(shí)現(xiàn)串口設(shè)備的快速聯(lián)網(wǎng)。
關(guān)鍵詞 串口;以太網(wǎng)口;SEP3203;Nucleus
1引言
在自動(dòng)化控制及其他民用設(shè)備、工業(yè)控制如電力設(shè)備系統(tǒng)等領(lǐng)域,眾多設(shè)備的對(duì)外通訊接口仍然是低速串口。因此現(xiàn)有系統(tǒng)的缺點(diǎn)是:無法集中、全面、準(zhǔn)確而實(shí)時(shí)地監(jiān)控?cái)?shù)據(jù)。隨著以太網(wǎng)在工業(yè)、商業(yè)領(lǐng)域的大規(guī)模使用以及網(wǎng)絡(luò)自動(dòng)化強(qiáng)勁勢(shì)頭的到來,用戶與供應(yīng)商迫切需要在任何時(shí)間和任何地點(diǎn)都可以實(shí)時(shí)訪問數(shù)據(jù)和進(jìn)行控制,做到遠(yuǎn)程快速故障分析與處理、設(shè)備的遠(yuǎn)程維護(hù),以便提高質(zhì)量,提高工作效率并降低整體成本。完全換掉這些串口通訊的設(shè)備是既不經(jīng)濟(jì)也不可行的。針對(duì)一些實(shí)際需求,采用串口以太網(wǎng)轉(zhuǎn)換器就是解決這些問題的解決方案。本課題串口以太網(wǎng)轉(zhuǎn)換器正是在這一要求下設(shè)計(jì)出來的產(chǎn)品, 本文就是本課題下的子課題部分。
2 基于ARM7TDMI的SEP3203微處理器簡介
ARM7TDMI處理器是ARM7處理器系列成員之一,是目前應(yīng)用較廣的32位高性能嵌入式RISC處理器,SEP3203[1]是東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心基于ARM7TDMI處理器內(nèi)核設(shè)計(jì)的16/32位RISC微處理器芯片。它面向低成本手持設(shè)備和其它通用嵌入式設(shè)備,為用戶提供了豐富的外設(shè)、低功耗管理和低成本的外存配置。
3串口以太網(wǎng)轉(zhuǎn)換器中與以太網(wǎng)接口相關(guān)的電路結(jié)構(gòu)
為了實(shí)現(xiàn)該轉(zhuǎn)換模塊的研究,首先要選擇一個(gè)硬件平臺(tái)即嵌入式處理器。由于ARM是
基于精簡指令系統(tǒng)(RISC)的32位內(nèi)核,代碼效率高,運(yùn)行速度快,綜合性能強(qiáng),在基于ARM體系結(jié)構(gòu)的嵌入式CPU中,基于ARM7TDMI體系結(jié)構(gòu)的SEP3203嵌入式微處理器擁有較好的技術(shù)支持,因此本轉(zhuǎn)換器選擇SEP3203作為硬件平臺(tái);轉(zhuǎn)換系統(tǒng)必須要有電源,供整個(gè)系統(tǒng)用;系統(tǒng)工作時(shí)需要有工作時(shí)鐘,因此本系統(tǒng)需要有時(shí)鐘電路;由于用戶需要的轉(zhuǎn)換器要有串口、USB和以太網(wǎng)口下載等功能,由于本文只針對(duì)以太網(wǎng)口,其它兩個(gè)接口本文不作介紹。以太網(wǎng)口與嵌入式芯片之間要有一個(gè)網(wǎng)絡(luò)模塊,現(xiàn)把與以太網(wǎng)口相關(guān)電路結(jié)構(gòu)的部分設(shè)計(jì)顯示如圖1所示。
4 網(wǎng)絡(luò)接口電路的硬件設(shè)計(jì)
SEP3203芯片內(nèi)部沒有集成網(wǎng)絡(luò)模塊,但SEP3203芯片設(shè)計(jì)的接口豐富,可以方便地?cái)U(kuò)展??紤]使用中可能對(duì)網(wǎng)速的要求比較高,因此本系統(tǒng)選用了10M的以太網(wǎng)接口。本系統(tǒng)的網(wǎng)絡(luò)接口采用REALTEK公司的RTL8019芯片。RTL8019AS 是一種高度集成的以太網(wǎng)芯片,能簡單的實(shí)現(xiàn)Plug and Play 并兼容NE2000。由于它擁有三種等級(jí)的掉電模式,所以它是綠色電腦的網(wǎng)絡(luò)設(shè)備的理想選擇。在全雙工模式下,如果是連接到一個(gè)同樣是全雙工的交換機(jī)或集線器,就可實(shí)現(xiàn)同時(shí)接收和發(fā)送[2]。
RTL8019AS支持16KByte、32KByte、64KByte的BROM,另外還支持FLASH MENORY和頁訪問方式,最大支持4MByte(16K×256),此外還支持在運(yùn)行完BROM 后釋放內(nèi)存以供系統(tǒng)其他程序的運(yùn)行。網(wǎng)絡(luò)接口模塊的系統(tǒng)連接示意圖如圖2所示。
5 軟件平臺(tái)Nucleus
綜合考慮各個(gè)因素,我們選擇了嵌入式實(shí)時(shí)操作系統(tǒng)Nucleus。Nucleus PLUS是美國著名RTOS廠商(ATI)(Accelerated Technology Inc)公司為實(shí)時(shí)嵌入式應(yīng)用而設(shè)計(jì)的一個(gè)搶先式多任務(wù)操作系統(tǒng)內(nèi)核,其95%的代碼是用ANSI C寫成的,非常便于移植并支持大多數(shù)類型的處理器。Nucleus PLUS是一組C函數(shù)庫,下載到目標(biāo)板的RAM中或直接燒錄到到目標(biāo)板的ROM中執(zhí)行。在典型的目標(biāo)環(huán)境中,Nucleus PLUS核心代碼一般不超過20K字節(jié)大小,內(nèi)核規(guī)模非常小。Nucleus PLUS除提供功能強(qiáng)大的內(nèi)核操作系統(tǒng)外,還提供種類豐富的功能模塊。例如用于通訊系統(tǒng)的局域和廣域網(wǎng)絡(luò)模塊,支持圖形應(yīng)用的實(shí)時(shí)化Windows模塊,支持nternet網(wǎng)的WEB產(chǎn)品模塊,工控機(jī)實(shí)時(shí)BIOS模塊,圖形化用戶接口,以及應(yīng)用軟件性能分析模塊等,用戶可以根據(jù)自己的應(yīng)用來選擇不同的應(yīng)用模塊。
6 網(wǎng)絡(luò)接口通信的設(shè)計(jì)
網(wǎng)絡(luò)接口的硬件將網(wǎng)絡(luò)上傳送來的數(shù)據(jù)送入系統(tǒng)內(nèi)存中,并通知操作系統(tǒng)有網(wǎng)絡(luò)數(shù)據(jù)到達(dá)。通常,網(wǎng)絡(luò)接口使用中斷機(jī)制來完成這一任務(wù),一個(gè)中斷時(shí)處理器將正常的處理掛起,跳轉(zhuǎn)到設(shè)備驅(qū)動(dòng)程序的代碼段執(zhí)行。此時(shí),由設(shè)備驅(qū)動(dòng)程序管理所有細(xì)節(jié)。設(shè)備驅(qū)動(dòng)軟件通知協(xié)議棧已經(jīng)有一個(gè)分組到達(dá),并要求進(jìn)行相應(yīng)的處理。當(dāng)設(shè)備驅(qū)動(dòng)軟件完成這些繁瑣的處理工作后,他將從中斷返回,處理器繼續(xù)從中斷發(fā)生處往下執(zhí)行。在本協(xié)議棧中,設(shè)備驅(qū)動(dòng)程序?qū)ι蠈討?yīng)用屏蔽了接收和發(fā)送的細(xì)節(jié)。用戶只需要調(diào)用相應(yīng)的套接字即可以完成數(shù)據(jù)的接收和發(fā)送。比如用戶要使用非阻塞方式接收和發(fā)送數(shù)據(jù),可以使用Select(),在Select 的timeout 參數(shù)選擇NO_PREEMPT,即可以非阻塞方式接收發(fā)送。在本TCP/IP 實(shí)現(xiàn)中,協(xié)議棧初始化是依靠調(diào)用NETI_Init()完成的。NETI_Init()完成兩個(gè)工作,首先是對(duì)網(wǎng)絡(luò)協(xié)議棧的初始化[5], 然后就對(duì)系統(tǒng)所使用的網(wǎng)絡(luò)設(shè)備進(jìn)行初始化。
網(wǎng)絡(luò)接口通信模塊的流程圖如圖4[1]所示。
流程說明:①程序由Main()函數(shù)開始,調(diào)用taskmain()。②taskmain()調(diào)用sys_ini()對(duì)系統(tǒng)初始化,調(diào)hardware_ini()對(duì)硬件初始化;調(diào)用vcre_tsk()創(chuàng)建了6個(gè)任務(wù),調(diào)用stak_tske()將部分任務(wù)放入就緒隊(duì)列,調(diào)用sys_sta()啟動(dòng)系統(tǒng)。③通過系統(tǒng)調(diào)度開啟任