




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本欄目責任編輯:謝媛媛開發研究與設計技術 電腦知識與技術1引言觸摸屏在嵌入式設備中的應用正在迅速普及開來,特別是新一代的智能手機(SmartPhone、個人多媒體娛樂設備(如iPod等手持設備都將提供人機交互的手寫識別觸摸屏功能。觸摸屏正在隨處可見,工業控制系統、消費電子產品,甚至醫療設備上很多都裝備了觸摸屏輸入裝置。2觸摸屏工作原理2.1觸摸屏坐標檢測觸摸屏在嵌入式系統中的應用需要高度集成的芯片以節省費用、減少能耗和空間。現在很多音頻編解碼芯片都集成了觸摸屏控制功能(如Wolfson 的WM9712,也可以用單獨的模數轉換芯片實現觸摸屏控制功能(如本文講述的AD7887。最常見的觸摸屏是電阻
2、式觸摸屏,觸摸屏是在一個顯示屏上覆蓋一個觸感設備,或者觸摸板。便攜式應用中最常見的型號是電阻式四線觸摸板,有兩塊透明的電阻層組成,分別是X 板和Y 板。如下圖1所示。圖1觸摸屏原理圖X 板的左端和右端有電接觸,而Y 板的頂部和底部有電接觸。當一個指點設備,例如一只筆或手指,接觸觸摸屏上的任何一點時,這一點就會在X 板和Y 板之間形成電接觸。如上圖所示。為了決定X 的坐標,一個電壓被加到X 板上,電阻Rx+(從X 板的正電壓邊到接觸點和Rx-(從接觸點到負邊形成一個電勢差,接觸點的電勢和X 軸坐標是成比例的。此時,沒有電流流經Y 板,可以在Y 板的任何一端測量接觸點的電勢。通常,Y 的兩端被連在
3、一起然后連接到ADC 的輸入端。獲得Y 軸坐標的方法與X 軸坐標類似,只需要把X 板和Y 板交換即可。2.2觸摸屏壓力檢測檢測觸摸屏的壓力是非常有用的,可以實現一些功能,例如:用筆畫線時,用的力越大,畫的線就越粗。觸摸屏壓力檢測是間接檢測的,通過檢測頂端和底端之間的電阻Rc 。隨著壓力和接觸面積的增加,電阻Rc 會減小。然而,壓力檢測在許多便攜式系統中不是首選項,是可選項,因為它消耗能量較多,而且需要很多計算。有一種方法,將頂端連到電源端,底端連接到地,通過檢測流經觸摸板的電流可知電阻Rc 的大小。如下圖2所示。這種方法本質上是不精確的,因為它不是檢測的電阻Rc ,而是Rc +R +R ,R
4、是X 板正端(X+和接觸點頂端之間的電阻,R 是接觸點底端到Y 板負端(Y-端之間的電阻。如果筆接觸點的坐標和板電阻已知,Rc 可以估算出來,但是這需要計算能力和額外的檢測板的電阻。這種方法的另一個缺點是當筆點到觸摸屏的一個角落時,一個很大的電流可能流過,不必要的消耗大量的電量并引起散熱難題。圖2觸摸屏壓力檢測3觸摸屏控制電路觸摸屏控制電路可以采用獨立的模數轉換芯片,本文采用的方案是StrongARM 芯片外接美國模擬器件公司的AD7887。AD7887是一個高速、低能耗、12位的模數轉換芯片,直接輸出二進制編碼,轉換速度可達2.5MHz 。AD7887支持兩個通道,可以通過片上控制寄存器配置
5、為雙通道或者單通道操作,觸摸屏的坐標數據分為X 坐標和Y 坐標,因此需要把AD7887配置為雙通道工作模式。雙通道操作模式下,管腳V/AIN1是AIN1功能,提供第二個模擬輸入通道。這種情況下,參考電壓通過管腳V 提供,AIN0和AIN1模擬輸入電壓范圍都是0到V 。AD7887主要功能管腳的介紹:收稿日期:2007-04-25基金項目:校級重點課程(4053010作者簡介:郭小梅(1953-,女,江蘇南京,副教授;高峰(1978-,男,河南,碩士,工程師。嵌入式Linux 觸摸屏驅動開發郭小梅1,高峰2(1.南京曉莊學院計算機系,江蘇南京210038;2.無錫矽太恒科電子有限公司,江蘇無錫2
6、14000摘要:根據觸摸屏坐標檢測原理和壓力檢測方法,以AD7887芯片為例講述了觸摸屏控制電路的控制原理和方法;以Intel Stron-gAR M 嵌入式系統為平臺,介紹Linux 下觸摸屏驅動程序的開發方法。系統通過AD 轉換芯片采樣觸摸屏數據,做模數轉換后通過CPU 的串口送給系統.觸摸屏驅動程序包括AD7887和SA1110相關控制寄存器的硬件初始化,驅動程序的流程和構架,引入內核定時器的重要意義,以及坐標數據的處理。關鍵詞:觸摸屏;Linux ;設備驅動程序;SA1110,AD7887中圖分類號:TP316文獻標識碼:A 文章編號:1009-3044(200709-20766-03
7、Touch Screen Driver Development for Embedded LinuxGUO Xiaomei 1,GAO Feng 2(1.Nanjing Xiaozhuang Institute Department of Computer,Nanjing 210038,China;2.Wuxi SITEK HengKe Electronics CO.LTD,214000,ChinaAbstract:This paper introduces that touch screen how to work,how to check pressure and coordinates
8、with an AD IC chip:AD7887.The paper also introduces how to develop a touch screen driver for embedded Linux based on Intel StrongAR M1110platform.The touch screen da-ta are sampled through AD7887,then be converted from Analog to Digital and transferred to CPU through serial port.The points include i
9、ni-tializing touch screen hardware by setting registers,how to process coordinates data and the importance of using Linux kernel timer.Key words:Touch Screen;Linux;DeviceDriver;SA1110;AD7887766本欄目責任編輯:謝媛媛開發研究與設計技術*AIN1/V:模擬輸入端1/參考電壓輸入端。雙通道模式下,這個管腳作為AIN1。*AIN0:模擬輸入0端。雙通道模式下,模擬輸入電壓范圍:0到V 。*DIN :數據輸入端。
10、寫給AD7887控制寄存器的數據通過這個管腳輸入,在SCLK 時鐘信號的上升沿寫到寄存器中。*DOUT :數據輸出端。AD7887的轉換結果以串行數據流的格式從DOUT 端輸出。在SCLK 時鐘信號的下降沿觸發。數據流以四個0開頭,后面是12位的數據,最大字節優先(MSB 。*SCLK :串行時鐘信號。從AD7887讀數據,或者寫串行數據給AD7887寄存器時都需要這個時鐘。也作為AD7887模數轉換過程的時鐘源。AD7887的控制寄存器是一個8位的只寫寄存器。在SCLK 的上升沿,數據從AD7887的DIN 管腳載入。MSB 表示數據流中的第一位,寄存器的內容加電初始化時都為0。下圖3是寄存
11、器各位的功能。 圖3AD7887寄存器功能*DONTC :Don't Care 。這一位的值沒有意義,是0或1都沒有關系。*ZERO :這一位賦值零才能保證AD7887的正確操作。*REF :參考位。0表示片上參考電壓使能。1表示片上參考電壓禁止。*SIN/DUAL :0表示單通道模式,1表示雙通道模式。*CH :通道選擇位。雙通道模式時,這一位決定哪一個通道將作下一個模數轉換。0表示選擇AIN0,1表示選擇AIN1。 單通道模式下,這一位總為0。*ZERO :為確保AD7887的正確操作,這一位必須為0。*PM1,PM0:電源管理位。表示AD7887的操作模式。大多數情況下,PM1和
12、PM0都為0,AD7887工作在電源管理的0模式,也就是正常工作模式。開發板的CPU 是Intel 的嵌入式處理器StrongARM1110,AD7887連接到SA1110的串口4,串口4工作在SSP (Synchronous Serial Port :同步串口模式,SA1110的LDD3-LDD0四個管腳設置為GPIO 功能。SA1110和AD7887以及觸摸屏的管腳連接為:AD7887和觸摸屏SA1110AD7887和觸摸屏SA1110CS#<-SFRM_C DOUT ->RXD_C DIN <-TXD_C SCLK <-SCLK_C Pen Down INT -&
13、gt;GPIO23Y+<-LDD0Y-<-LDD1X+<-LDD2X-<-LDD3LDD3LDD2LDD1LDD00101禁止觸摸屏檢測電路(電源關閉1101使能觸摸屏檢測電路(電源開,等待筆的中斷1001獲取X 軸坐標0110獲取Y 軸坐標SA1110的通用輸入輸出端口GPIO23必須設置為中斷模式、輸入、下降沿、以接收筆的中斷。獲取觸摸屏信號的控制順序為:(1通過設置LDD3-LDD0為1101,使能觸摸屏檢測電路;(2如果GPIO23收到下降沿觸發的中斷,先獲取X 軸坐標,具體先設置LDD3-LDD0為1001,延遲20微秒后,通過SA1110的串口下命令轉換AD
14、7887的AIN0值;(3然后再設置LDD3-LDD0為0110,延遲20微秒后,通過SA1110串口下命令轉換AD7887的AIN1值,這是Y 軸的坐標。4觸摸屏驅動程序設計觸摸屏作為字符設備向Linux 內核注冊,以設備文件的形式進行讀寫操作。這里分幾個功能模塊介紹觸摸屏驅動程序,主要有:硬件初始化模塊、定時器模塊、坐標數據處理模塊等。4.1init 和exit 函數觸摸屏驅動可以編譯進Linux 內核或者單獨編譯為一個模塊,需要定義設備驅動的init 函數:int _init ad7887_init(void;init 函數主要完成的功能有:(1注冊觸摸屏設備節點:misc_regist
15、er(&ad7887_ts;(2初始化觸摸屏硬件:init_chip(;(3初始化存放觸摸屏坐標數據的緩沖區:init_buf(;(4為觸摸屏申請中斷:request_irq (IRQ_GPIO23,ts_ad7887_interrupt ,SA_INTERRUPT ,“ad7887",dev_id;(5等中斷:waiting_touch(;4.2硬件初始化init_chip (硬件初始化主要有以下六個步驟:(1SA1110的LCD 控制寄存器0的bit0置0,禁止LCD 控制器功能,使LDD7-LDD0作為通用I/O 口。語句:LCCR0&=LCCR0_LEN ;(
16、2SA1110串口4的MCP (Multimedia Communication Port 控制寄存器的bit16置0,禁止串口4的MCP 功能,串口4工作在SSP 模式。語句:Ser4MCCR0&=MCCR0_MCE ;(3設置串口4的SSP 控制寄存器SSCR0和SSCR1,寄存器0如下圖所示:有DSS ,FRF ,SSE ,SCR 四個字段,DSS 表示SSP 傳輸和接收的數據位數,設置為1111,表示16位數據;FRF 表示幀格式,設置為00,表示Motorola SPI 幀格式;SSE 表示同步串口使能,設置為1,表示使能SSP 操作,相應管腳作為SSP 功能管腳;SCR 表
17、示串行時鐘速率,設置為00000111,十進制是7,SA1110片上晶振產生的時鐘頻率為3.6864MHz ,串行位時鐘的計算公式是:計算結果,位時鐘為:230.4KHz 。SSP 控制寄存器SSCR1的各位都采用默認值0,語句為:Ser4SSCR1=0;(4驅動使用4個LCD 管腳LDD3、LDD2、LDD1、LDD0作為通用I/O 端口,控制觸摸屏的X-、X+、Y-、Y+四個輸出端。設置LCD 端口管腳方向寄存器PPDR ,將四個管腳設置為輸出;(5通過PPC 管腳狀態寄存器PPSR 設置LDD3:LDD0的輸出電平;按前面所述的獲取觸摸屏信號的控制順序,首先設置LDD3:LDD0為110
18、1,使能觸摸屏檢測電路;(6設置SA1110的GPIO23中斷方式為下降沿:set_GPI-O_IRQ_edge(GPIO_GPIO23,GPIO_FALLING_EDGE。SA1110的串口、LCD 管腳、中斷等初始化完成后,就可以發命令讀取坐標數據了。4.3定時器中斷觸摸屏驅動中要使用內核定時器。定時器用于調度函數(定時器處理程序在未來某個特定時間執行。在定時器注冊的時間超時后,就執行一次內核定時器注冊的處理函數。系統維護一個定時器雙向鏈接表,這意味著可以加入任意多的定時器。定時器包括它的timeout (超時值(單位是jiffies 和超時時調用的函數。在ad7887_init(函數中,
19、為觸摸屏申請中斷時,引用了一個中斷處理函數ts_ad7887_interrupt(。這個中斷處理函數主要完成三項工作,首先禁止GPIO23端口的觸摸屏中斷;然后設置SA1110767本欄目責任編輯:謝媛媛開發研究與設計技術 電腦知識與技術(上接第763頁點編號和本節點邏輯關系都存放在關系數據庫了,在推理過程的搜索策略中可以采用堆棧的鏈表數據結構。具體知識搜索算法描述如下:圖5正向推理程序流程圖(1根據故障現象,選擇故障分類point *P ,P=root 初始化堆棧InitStack(S;(2進入根節點的下層節點P=P 一>RChild ;(根節點在單分支故障樹只有一個子節點,默認為右子
20、節點(3IF(當前節點是中間節點IF(P 在棧不存在,即P 一>Flag=false該節點入棧Push(S ,P;P 一>Flag=true ;ELSEIF 該節點知識和詢問故障相匹配,轉入(4;ELSE根據判斷節點的詢問內容和已知事實進行對比并作為回答;IF (回答=“是”進入下層左子節點P=P 一>Lchild 轉入(3;IF (回答=“否”進入下層右子節點P=P 一>RChild ,轉入(3;/end of ifELSE IF(當前節點是葉節點,轉入(5;(4該節點出棧,返回該節點編碼,系統成功搜索到相匹配的知識,結束。(5該節點提供的為故障處理措施,此時故障樹搜
21、索完畢,沒有找到相應的匹配知識,查找失敗。在搜索的過程中由于采用了單分支故障樹模式,使知識的搜索變得非常簡單,只需要沿著樹的左右分支對知識和事實進行匹配,直到右節點為葉子節點為止。若查找到相匹配的知識,根據返回的故障編碼根據推理方式查找規則表得到結論碼,從而給出診斷結論。4結束語利用120-1空氣制動機故障診斷專家系統,可為設備維護人員對設備分析和診斷提供輔助決策,從而提高設備維修效率和速度。本文在故障樹分析法基礎上利用二叉樹的轉換理論建立了單分支故障樹的故障模型,在故障診斷知識搜索時只對左右節點進行匹配,從而大大縮小了搜索范圍,節省了內存空間,提高了診斷速度。在知識庫設計上利用數據庫的理論,
22、并結合了故障信息的編碼技術完成了各個表結構的設計,在以后可逐步向庫中添加知識。參考文獻:1王仲生.智能故障診斷與容錯控制M.西安:西北工業大學出版社,2005.2王永慶.人工智能原理與方法M.西安:西安交通大學出版社,1998.3夏寅蓀,吳培元.120型空氣制動機M.北京:中國鐵道出版社,1995.4蔡子興,約翰德爾金,龔濤.高級專家系統:原理設計及應用M.北京:科學出版社,2005.5余金山,林慧.數據庫開發實例入門與提高M.北京:電子工業出版社,2006.的GEDR 和GFER 寄存器,將GPIO23端口設置為下降沿檢測;最后將定時器插入定時器的全局隊列,語句:add_timer(ts_timer;ts_timer 的定義為:static struct timer_list ts_timer =function:ts_timer_proc;ts_timer_proc 就是定時器處理函數,在這個函數中調用函數read_x(和read_y(分別讀取X 坐標和Y 坐標。然
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業設計中的人機工程學應用
- 工業自動化技術智能制造與生產效率提升
- 工業設計與人類健康的關系探討
- 工業設計與產品造型創新
- 工作中的溝通協調技巧培訓
- 工業風格建筑的設計與實踐
- 工作場所的多元溝通方式
- 工程填方區的防護性綠化技術探索與實踐
- 工程機械設計中的材料選擇與仿真
- 工程勞務費用合理計算與評估
- 2025年四川省高考物理試卷真題(含答案)
- 炸雞店的產品創新與口味調研
- 2025年共享辦公空間增值服務運營模式創新與產業鏈創新模式報告
- 電氣控制柜面試題及答案
- 藥房藥品追溯管理制度
- 陜西省銅川市2025年八下英語期末監測試題含答案
- 缺血性卒中腦保護中國專家共識(2025)解讀
- 2025年福建省廈門市中考物理模擬試卷
- 海洋垃圾資源化利用與環境影響評估-洞察闡釋
- IEC60335-1中文版本大全
- 代謝相關脂肪性肝病防治指南2024年版解讀
評論
0/150
提交評論