杜 剛
(中國科學技術大學精密機械與精密儀器系,安徽 合肥 230027)
嵌入式微處理器FPGA相比于微機,具有成本低、體積小、速度快的優點,對于中小型設備其處理能力完全可以滿足要求[1]。相比于各種單片機等嵌入式芯片,FPGA采用可編程門陣列,可以根據具體需求構造SOPC(System-on-a-Programmable-Chip,片上可編程系統)、較為便捷地搭建外圍電路,有效提高芯片資源的利用率[2]。
以FPGA為控制核心,設計一種具有無線通訊功能的觸摸屏控制系統。其無線通訊功能,可以實時發送無線控制命令并無線監控設備運行狀況,可以作用于危險環境或操作者難以親自到達的場合。設計中以觸控屏替代實體按鍵,減小了控制裝置的體積。該系統可以脫離微機,獨立操縱控制,減輕微機的工作負擔。整個控制裝置體積小,重量輕,可便攜。
系統主要由FLASH控制模塊、基于XPT2046的觸摸屏坐標采集模塊、基于ILI9325的LCD顯示控制模塊及NRF24L01無線通訊模塊組成。系統的控制核心采用FPGA芯片EP4CE15F17C8,搭建SOPC核。在LCD觸摸屏繪制用戶控制界面,利用觸摸屏控制芯片采集控制信號,經編碼后交由無線通訊模塊發送至接收終端,實現觸摸屏控制器的無線控制。無線通訊模塊接收到控制端發送的信號經譯碼后被FPGA處理,FPGA將處理后的信號去控制受控設備。在對硬件編程時,主要采用NIOSII類C語言。
一個基本的SOPC核的組成部分有時鐘(本設計采用50 MHz)、CPU、SDRAM控制器(用于在線調試)、FLASH控制器(用于燒錄程序并實現掉電保存),JTAG_UART[3]。此外,還需搭建 IO 作為各個模塊的控制接口,具體為:LCD的控制接口 RS、WR、RD、CS、REST及數據線DB7~DB0;觸摸屏控制接口T_CS、T_CLK、T_IN、T_OUT、T_IRQ;無線通訊模塊控制接口 MOSI、MISO、CE、CSN、SCK。
在上述模塊中,觸摸屏坐標采集模塊XPT2046和無線模塊NRF24L01都是基于SPI總線實現的,SPI總線是一種串行接口協議,一般由片選CS、時鐘CLK、主出從入MOSI及主入從出MISO四根數據線組成,分別對應 XPT2046控制總線中的 T_CS、T_CLK、T_IN、T_OUT端口及 NRF24L01中的 CSN、SCK、MOSI、MISO 端口[4]。圖 1 為 SPI時序圖。

圖1 SPI時序
對與NRF24L01與XPT2046,都是MOSI時鐘上升沿有效,MISO時鐘下降沿有效。在NIOSII中使用四個IO口模擬實現SPI接口。
采用的LCD觸摸屏為電阻式,其中的LCD用以繪制并顯示系統的用戶控制界面,觸摸屏用以對觸控點進行捕捉,編碼轉換為該觸控點所表示按鍵的具體指令。該部分主要工作流程如圖2所示。

圖2 LCD顯示及觸摸控制工作流程
1.2.1 LCD 顯示控制
LCD用以繪制控制系統的用戶控制界面,并反映對受控端工作狀態監控的信息。為此,把用戶控制界面分為按鍵區和顯示區兩部分。而ILI9325的作用就是讀入控制界面的顏色數據矩陣,以靜態的方式在LCD屏上繪制出來,同時在顯示區顯示受控設備的工作狀態。
LCD驅動芯片ILI9325最高支持320X240分辨率的圖像顯示,且有18位RGB接口,故最多可支持262144色顯示。芯片內置存儲器大致分為兩個部分:控制寄存器及緩存圖片數據的GRAM(Graphics RAM,GRAM),通過對控制寄存器寫入控制字,以此設置驅動芯片的工作狀態。圖片存儲區GRAM大小為320X240X18bit,即有320X240個陣列存儲單元,每個單元有18bit空間,GRAM結構與LCD像素排列方式對應。在寫入圖像數據之前,需要設置GRAM的工作范圍,同時也是LCD的顯示范圍,該范圍由對角線上兩點坐標決定。待顯示的圖片數據會暫時存于GRAM中,顯示圖片時,GRAM尋址計數器自動在設定的范圍內累加,以此讀出GRAM中相應存儲單元的圖片數據,在屏幕像素陣列上顯示[5]。LCD顯示控制流程如圖3所示。

圖3 LCD顯示控制流程
ILI9325提供了多種數據讀寫接口,有讀寫速度從快至慢分別為18-/16-/9-/8-bit的并行接口和1-bit的串行接口,綜合考慮速度要求和FPGA的IO資源,本設計采用8-bit并行接口,圖片顏色格式采用RGB565。在此接口模式及顏色格式下,一個像素點的顏色數據為16位,需分兩次傳輸。圖4為8-bit下并行接口顏色數據輸入格式。

圖4 8-bit并行接口顏色數據輸入格式
本設計以FPGA內部資源搭建ROM存儲模塊,用以存放構成用戶控制界面的圖像數據矩陣,在上電后寫入GRAM,這樣,在FPGA資源允許的情況下可以減小外圍電路的規模,有效提高了對FPGA資源的利用率。
1.2.2 觸摸屏的控制
相比于電容屏,電阻屏雖不能支持多點觸控,但具有精度高,價格低廉的特點,可做到一個像素點的精確控制。所以,對于控制器而言,電阻屏更為合適。

圖5 XPT2046采集坐標流程
控制電阻式觸摸屏的核心芯片是XPT2046,其本質上是一款逐次逼近型的數模轉換器,可自由設置為8位或12位精度。觸摸屏不同像素點受到壓力會產生不同的模擬電壓值,該電壓由XPT2046采集后由處理器識別其對應的像素坐標,得到所按屏幕的區域并執行相應按鈕的指令,在采集到像素坐標時,XPT2046同時會產生IRQ中斷,因此,對應的具體命令函數可在中斷中實現[6]。
觸摸屏的像素坐標與具體的模擬電壓值成正比關系,因為不同的屏幕該比例因子可能會略有差別,所以為了使觸摸屏能在更精確的情況下工作,需要對觸摸屏校正,計算出所用屏真實的比例系數。校正主要采用多次采集屏幕上特定像素點(例如一個矩形的四個頂點)的電壓值,平均后得到較為精確的有效值,再結合被采點的幾何關系即可算出比例系數。根據實際驗證,20次左右的采集次數即可保證校正的精度。圖7為XPT2046采集觸摸點坐標的控制流程。
XPT2046的控制接口中T_IN口(即MOSI口)寫入控制字,決定芯片的工作狀態,包括模數轉化的精度(8為或12位)、采集的坐標是橫坐標還是縱坐標、單端采集還是差分采集等,而T_OUT口(即MISO)輸出12位數值,代表在12位精度下采集到電壓值[7]。XPT2046讀寫時序如圖6所示。

圖6 XPT2046讀寫時序
由時序圖可見,在觸動屏幕,產生IRQ中斷信號后開始進行一次有效的電壓采集,在一次采集的數據輸出7位后,可以進行第二次采集的控制字輸入,這樣既可保證下一次的數值不會覆蓋前一次,又可提高采集效率。
NRF24L01工作頻率為2.4~2.525 GHz的公頻段。NRF24L01有六個收發通道,因此可實現一對多或多對一的相互通訊,一次最多可發送的數據包大小為32 Bytes,在一般室內環境中有效通訊距離可達10 m(在開闊的室外環境可以更高)。
NRF24L01必須至少兩片同時工作,一片發送一片接收。互為收發的兩片芯片需配置相同的收發地址、收發通道、工作頻率、數據長度及發射功率。NRF24L01的收發狀態由CE管腳(激活芯片進入收發狀態)及CONFIG寄存器中的PWR_UP(上電位)位和PRIM_RX(收發選擇位)位共同決定。表1為NRF24L01工作狀態。
具體的發送流程為:①接收端地址及待發送的數據寫入NRF24L01;②配置CONFIG寄存器,進入發送狀態;③置高CE管腳,激發發送;④發送數據包,并得到接收端的應答,完成發送。具體的接收流程為:①配置本機地址(需與發射端地址一致)及需接收的數據包的大小;②配置CONFIG寄存器,進入接收狀態;③置高CE,激發接收;④接收到發射端發來的數據,產生應答;⑤從NRF24L01讀出接收到的數據,置低CE,進入待機模式[9]。圖7為無線模塊工作流程。

表1 NRF24L01工作狀態

圖7 無線模塊工作流程
NRF24L01的工作狀態,可以通過讀取狀態寄存器STATUS實現。STATUS為8位寄存器,其中接收到有效數據后第六位RX_DR置高,發送數據成功接收到應答后第五位TX_DS置高。在收發完成后,必須對STATUS寄存器重置及對數據緩存區清空,否則下次收發可能會出現錯誤。為了提高收發的成功率,應該打開NRF24L01的自動重發功能,NRF24L01最多支持16次數據重發,直至收到接收端成功接收的應答為止。
由于無線通訊模塊用于對控制端控制指令的傳輸,所以需要對控制界面產生的不同指令進行編碼,交由無線模塊發送,在接收端進行譯碼還原原始指令,并執行相應的操作。NRF24L01一次發送的數據包最多可達32bytes,可以滿足控制指令的編碼需求。
以帶有光柵尺反饋系統的二維電控平臺為受控設備,對研制的控制系統進行了測試。圖10為LCD觸摸屏上顯示的用戶控制界面。圖中上下箭頭分別控制X向步進電機的正反轉,左右箭頭分別控制Y向步進電機的正反轉,中間為啟動和暫停鍵。上面的狀態欄顯示反饋的光柵尺測得的X和Y方向位移。一次發送控制指令和返回監控狀態所用時間約為30~50 ms,該系統可用于實時控制和監測。圖8為系統用戶控制界面。

圖8 用戶控制界面
本設計基于FPGA搭建SOPC嵌入核,實現LCD顯示、觸摸屏控制、無線通訊模塊的控制,構建了無線觸控系統,并通過無線操控和監測帶光柵尺反饋的二維電控平臺,驗證了該系統運行的準確性、穩定性、可靠性和實時性。該無線觸控系統也可應用于控制和監測其他工業設備或實驗室儀器。
[1]李 欣.基于FPGA的片上多處理器建模方法[D].合肥:中國科學技術大學,2012.
[2]馮亞楠.基于SOPC的嵌入式系統架構及應用驗證[D].呼和浩特:內蒙古大學,2014.
[3]王 剛,張 瀲.基于FPGA的SOPC嵌入式系統設計與典型實例[M].北京:電子工業出版社,2008.
[4]劉福奇.FPGA嵌入式項目開發實戰[M].北京:電子工業出版社,2009.
[5]高 超.基于SOPC汽車故障檢測系統的設計[D].哈爾濱:黑龍江大學,2014.
[6]張 勇,鄒衛軍.基于Cortex-M3的低成本液晶觸摸屏設計[J].工業控制計算機,2014,27(6):12 -14.
[7]張恩迪,余 萌.基于STM32和μC/OS-Ⅲ的雙觸摸屏無線自助點餐系統設計[J].微型機與應用,2014(12):90-92.
[8]楊 旭,李德敏,張謙益.基于nRF24L01的一種無線通信協議設計[J].通信技術,2011,44(7):57 -59.
[9]李 輝,宋 詩,周建江.基于ARM和nRF24L01的無線數據傳輸系統[J].國外電子元器件,2008(12):44 -46.