楊曉云
(太原大學(xué)教育學(xué)院計算機系,山西太原030001)
目前,嵌入式系統(tǒng)已經(jīng)滲透到日常生活中的各個角落,工業(yè)、服務(wù)業(yè)、消費電子等,如常見到的手機、MP3、掌上電腦(PDA)、數(shù)碼相機、機頂盒、電視機、空調(diào)器、汽車等都是典型的嵌入式系統(tǒng)。Intel PXA270是Intel公司推出的基于ARM微處理核的嵌入式處理器,它被廣泛地應(yīng)用于PDA、智能手機等領(lǐng)域,這源于它具有卓越的性能。2007年,微軟正式發(fā)布了自己的第六代嵌入式系統(tǒng)工具套裝:Windows Embedded CE 6.0,并完全開放了其核心源代碼。它是高度模塊化的嵌入式操作系統(tǒng),它可以根據(jù)目標(biāo)設(shè)備或平臺的不同特點進行定制。本文利用C++語言制作了一個界面友好的串口通信應(yīng)用軟件 PL_SOM,使用交叉串口線連接 PC機與PXA270處理器相關(guān)接口,借助DNW工具測試PC機與PXA270信息傳遞的內(nèi)容。該軟件可以應(yīng)用在PC機與其它具有嵌入式操作系統(tǒng)的ARM處理器上,為PC機與高端處理器串口通信提供了途徑。
PXA270具有較高的主頻,最高可達(dá)624MHz。PXA270最引人注目的是加入了Wireless MMX技術(shù),大大提升了多媒體處理能力。同時PXA270還加入了Intel Speed Step動態(tài)電源管理技術(shù),在保證CPU性能的情況下,最大限度地降低了移動設(shè)備功耗。PXA270處理器內(nèi)部集成了雙通道16位PCMCIA PC卡/CF控制器;支持8位、16位I/O模式和Memory模式的訪問。存儲系統(tǒng)包括 Flash和SDRAM控制器,內(nèi)置MMC、SD和SDIO卡控制器,支持MMC卡規(guī)范3.2,SD卡規(guī)范1.01,SDIO卡規(guī)范1.0,既支持一般讀/寫方式,也支持SPI方式。
RS232串口標(biāo)準(zhǔn)是美國EIA(電子工業(yè)聯(lián)合會)與BELL等公司一起開發(fā)的通信協(xié)議。RS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(Electronic Industry Association)代表美國電子工業(yè)協(xié)會,RS(recommended standard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識號,C代表RS232的最新一次修改(1969),在這之前,有 RS232B、RS232A,它規(guī)定連接電纜和機械、電氣特性、信號功能及傳送過程。
DB-9連接器(接頭)又分公頭和母頭,一般PC機上的RS232 DB-9接頭為公頭,設(shè)備端的RS232 DB-9接頭以母頭居多(但也有公頭的),DB-9針串口引腳定義如表1所示。
在TXD和RXD上:邏輯1(MARK)=-3V~-15V;邏輯 0(SPACE)=+3V~ +15V。在 RTS、CTS、DSR、DTR和DCD等控制線上:信號有效(接通,ON狀態(tài),正電壓)=+3V~+15V信號無效(斷開,OFF狀態(tài),負(fù)電壓)=-3V~-15V。接通狀態(tài)(ON)即信號有效的電平高于 +3V,斷開狀態(tài)(OFF)即信號無效的電平低于-3V,也就是當(dāng)傳輸電平的絕對值大于3V時,電路可以有效地檢查出來,介于-3~+3V之間的電壓無意義,低于-15V或高于+15V的電壓也認(rèn)為無意義,因此,實際工作時,應(yīng)保證電平在±(3~15)V之間。
表1 DB-9針串口引腳定義
EIA-RS-232C是用正負(fù)電壓來表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。為了能夠同計算機接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路之間進行電平和邏輯關(guān)系的變換。MAX3243芯片可完成TTL←→EIA雙向電平轉(zhuǎn)換。RS 232與PXA270處理器通信原理圖如1所示。
串行通信異步協(xié)議的特點是一個字符的一個字符地傳輸,并且傳送一個字符總是以起始位開始,以停止位結(jié)束的,字符之間沒有固定的時間間隔要求。其串口收發(fā)數(shù)據(jù)幀格式如圖2所示。
圖1 RS 232與PXA270處理器通信原理圖
圖2 收發(fā)數(shù)據(jù)幀格式
通用異步收發(fā)串行接口的數(shù)據(jù)幀格式:起始位、數(shù)據(jù)位、奇偶校驗位、停止位。
2.2.1 打開串口設(shè)備
Windows CE應(yīng)用程序通過應(yīng)用編程接口函數(shù)CreatFile()來創(chuàng)建、打開或修改一個文件,而所有的設(shè)備都被抽象為文件,所以這里的串口設(shè)備也被當(dāng)作文件一樣打開。CreatFile()函數(shù)返回一個設(shè)備句柄(標(biāo)志了某個設(shè)備),在以后訪問該設(shè)備時就要利用這個設(shè)備句柄。
應(yīng)用程序打開串口設(shè)備時,引用的設(shè)備的名字應(yīng)遵循串口驅(qū)動的接口規(guī)定。串口驅(qū)動的索引號由注冊表中的子鍵“Prefix”與“Index”兩項組成,結(jié)合該實驗要求,要打開FFUART,CreateFile()函數(shù)的第一個參數(shù)值應(yīng)設(shè)置為L“COM2:”
對于串口等通信設(shè)備,在打開設(shè)備的時候一般要指定其設(shè)備相應(yīng)通信參數(shù)。應(yīng)該要設(shè)置的參數(shù)波特率、數(shù)據(jù)幀格式、收發(fā)超時等。這些參數(shù)被包含在結(jié)構(gòu)體DCB中。在Windows CE應(yīng)用程序中,可以通過函數(shù)SetCommState()來設(shè)置設(shè)備的通信參數(shù)。
2.2.2 應(yīng)用程序從串口讀數(shù)據(jù)
應(yīng)用程序通過ReadFile()函數(shù)來從文件中讀取數(shù)據(jù)。在本實驗的串口控制應(yīng)用程序中,通過函數(shù)WaitCommEvent()來監(jiān)控串口設(shè)備,如果串口設(shè)備有事件發(fā)生并且是緩沖區(qū)中接受到了字符,那么就通過ReadFile()函數(shù)調(diào)用串口驅(qū)動從串口緩沖區(qū)中讀取數(shù)據(jù)。函數(shù)SetCommMask()用來設(shè)置與設(shè)備通信時監(jiān)控的事件類型,在Windows CE下,通信事件都有相應(yīng)的掩碼定義。函數(shù)SetCommMask()用來清除與設(shè)備通信時發(fā)生的錯誤,并且可以返回設(shè)備狀態(tài)。
2.2.3 應(yīng)用程序往串口寫數(shù)據(jù)
應(yīng)用程序通過WriteFile()函數(shù)調(diào)用串口驅(qū)動的寫串口函數(shù)。
在PC機上打開串口監(jiān)控軟件DNW,配置波特率為115200。然后在DNW窗口的主菜單中點擊“Serial Port”- >“Connect”。將可執(zhí)行文件 PL_SOM.exe(通過編譯PL_SOM應(yīng)用程序得到)通過SD卡拷貝到已經(jīng)運行了Windows CE 6.0的基于PXA270處理器的實驗平臺中運行,在串口應(yīng)用程序的初始界面的左邊下拉框配置串口通信的參數(shù),相關(guān)的串口通信配置參數(shù)如圖3所示。
圖3 串口通信應(yīng)用程序界面
在PC機上的DNW窗口中輸入要發(fā)送的字符,比如,這里輸入“1768520”,然后在PXA270處理器的實驗平臺上會接受到PC機上發(fā)送來的數(shù)據(jù),在Receive Data區(qū)域顯示“1768520”,同樣,在 Send Data區(qū)域輸入“5201768”,點擊“Send Data”,數(shù)據(jù)發(fā)送到了PC機上。PC機會通過DNW軟件接收到剛才發(fā)送的數(shù)據(jù),實驗結(jié)果如圖4所示。
圖4 DNW接受PXA270處理器發(fā)來的數(shù)據(jù)
本文闡述了PC機與PXA270處理器串口通信的實現(xiàn)過程。通過上述的實驗表明:基于PXA270處理器串口通信的設(shè)計思路簡單可行、具有很強的可移植性,為PC機與高端處理器串口通信提供了途徑,同時也使嵌入式系統(tǒng)在整個應(yīng)用系統(tǒng)中起到了智能控制與信息處理的作用。串口通信可以應(yīng)用于信息家電、工業(yè)控制以及傳感技術(shù)等多個領(lǐng)域,具有良好的實用價值和廣闊的應(yīng)用前景。
[1]王黎明,夏立,卜樂平,等.深入淺出XScale嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2011.
[2]賀敬凱,劉德新,管明祥.單片機系統(tǒng)設(shè)計、仿真與應(yīng)用——基于Keil和Proteus仿真平臺[M].西安:西安電子科技大學(xué)出版社,2011.
[3]潘方.RS 232串口通信在PC機與單片機通信中的應(yīng)用[J].現(xiàn)代電子技術(shù),2012,35(13).
[4]葛磊蛟,毛一之,李歧,等.基于C語言的RS232串行接口通信實現(xiàn)[J].河北工業(yè)大學(xué)學(xué)報,2008,37(6).
[5]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.