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