环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 > 工業控制產品 > 自動化控制 > 工業觸摸屏

類型分類:
科普知識
數據分類:
工業觸摸屏

基于TQ2440開發板的Linux觸摸屏驅動研究

發布日期:2022-10-09 點擊率:75

    嵌入式技術在工業和日常生活中變得越來越普及,觸摸屏作為交互終端已經逐漸取代鍵盤成為嵌入式系統的輸入設備。使用TQ2440開發板,通過對嵌入式Linux內核中觸摸屏驅動的研究,編寫和移植了觸摸屏的驅動程序,校準之后觸摸屏可以正常使用。

    隨著信息查詢技術的發展,觸摸屏因具有堅固耐用、反應速度快、節省空間、易于交流等優點,而得到了廣泛應用[1]。觸摸屏作為一種新興的電腦輸入設備,是目前最簡單、方便的一種人機交互設備。

1 硬件簡介

1.1 TQ2440開發板簡介

    天嵌公司生產的TQ2440開發板,微處理器采用Samsung S3C2440AL,板載64 MB SDRAM、256 MB Nand Flash、2 MB Nor Flash,板載5線異步串行口(UART0)、100 Mb/s DM9000網卡、USB HOST接口、USB Device接口和一個SD卡接口,集成了4線電阻式觸摸屏接口和JTAG接口等,音頻接口采用芯片UDA1341,立體聲音頻輸出,可錄音。

1.2 S3C2440處理器簡介

    S3C2440是由三星公司推出的16/32 bit RISC微處理器,最高主頻可達533 MHz,為手持設備和一般類型應用提供了低價格、低功耗、高性能小型微控制器的解決方案。處理器內部集成SDRAM控制器、LCD控制器、4通道DMA、3通道UART、I2C總線、I2S總線、SD接口、PWMtimer、觸摸屏接口、8通道10 bit A/D控制器和camera接口等,很便于一般開發。

1.3 觸摸屏

    按照觸摸屏的工作原理和傳輸信息的介質一般可分為4種,分別為電阻式、紅外線式、電容感應式以及表面聲波式。本次設計采用的是東華3.5英寸觸摸屏,為4線電阻式觸摸屏。具體參數為:型號: WXCAT35-TG3#001F;尺寸:103 mm×83 mm;顯示面積:70.08 mm(H)×52.56 mm(V);顯示顏色:16.7兆色分辨率;對比度:300:1;亮度:320 cd/m2;電源:5 V電壓供電。

    電阻式觸摸屏利用壓力感應進行控制,由觸摸檢測部件和觸摸屏控制器組成。觸摸檢測部件安裝在顯示器屏幕前面,用于檢測用戶觸摸位置,并將觸摸位置信息送到觸摸屏控制器;觸摸屏控制器的主要作用是從觸摸點檢測裝置上接收觸摸信息,并將它轉換成觸點坐標,再送給CPU,它同時能接收來自CPU的命令并加以執行。觸摸屏的屏體部分是一塊與顯示器表面非常配合的多層復合薄膜,由一層玻璃或有機玻璃作為基層,表面涂有一層透明的導電層氧化銦(OTI),上面再覆蓋有一層外表面硬化處理、光滑防刮的塑料層,它的內表面也涂有一層OTI,在兩層導電層之間有許多細小(小于1/1 000)的透明隔離點把它們隔開絕緣。當手指接觸屏幕時,兩層OTI導電層將出現一個接觸點,因其中一面導電層接通Y軸方向的5 V均勻電壓場,使得偵測層的電壓由零變為非零,控制器偵測到這個接通數據后,進行 A/D轉換,并將得到的電壓值與5 V相比較,即可得出觸摸點的Y軸坐標。同理可得出X軸的坐標。

    S3C2440的觸摸屏接口包括觸摸觸點控制邏輯和有中斷產生邏輯的ADC接口邏輯,可以控制或選擇觸摸屏觸點用于XY坐標的轉換。觸摸屏接口為了完成相應的工作,具有4種工作模式[2]:

(1)正常轉換模式:此模式與通用的AD轉換模式相似,可以在ADCCON(ADC控制寄存器)中設置,在ADCDAT0(ADC數據寄存器0)中完成數據讀寫。

(2)X/Y坐標各自轉換:觸摸屏控制器支持兩種轉換模式,X/Y坐標各自轉換與X/Y坐標自動轉換。各自轉換是在X模式下,將X坐標寫入ADCDAT0后產生中斷;在Y模式下,將Y坐標寫入ADCDAT1后產生中斷。

(3)X/Y坐標自動轉換:在此模式下,觸摸屏控制器先后轉換觸摸點的X坐標與Y坐標。當X坐標與Y坐標都轉換完成時,中斷控制器產生中斷。

(4)等待中斷模式:當觸摸筆按下時,觸摸屏產生中斷(INT_TC)。等待中斷模式必須將寄存器rADCTSC設置為0xd3;在觸摸屏控制器產生中斷以后,必須將此模式清除。

如果GCLK是50 MHz且預分頻器的分頻值設置為49 MHz,10 bit的轉換時間按下式計算:
A/D轉換頻率=50 MHz/(49+1)MHz=1 MHz

轉換時間=1/(1 MHz/5個周期)=1/200 kHz="5" ?滋s,可見轉換時間很短。


2 觸摸屏驅動程序

2.1 建立嵌入式Linux系統開發環境

    建立此開發環境的步驟為:

(1)在Windows XP SP3系統下安裝虛擬機vmware5.5.3,在虛擬機里安裝Redhat9.0系統。在Redhat9.0系統下編譯開發板所需的鏡像和文件,使用虛擬機工具實現了Windows和Redhat的文件共享,在Windows系統下可以直接下載鏡像和文件到開發板上。

(2)使用Windows XP SP3自帶的超級終端,并使用串口線連接PC和開發板。這樣就可以在PC上對開發板進行相關的操作。

(3)本次實驗開發板使用的是Linux2.6.30.4內核,而Redhat9.0系統是2.4.20.8內核,所以需要下載適合開發板的編譯器。下載最新版本的支持EABI技術的交叉編譯器(本次實驗使用的是EABI_4.3.3_2009版本),復制到Redhat9.0系統目錄/opt/EABI_4.3.3_2009/下,打開系統文件/etc/profile(可在終端使用命令vim /etc/profile),添加相應語句(本次實驗使用vim命令打開profile文件,在第20行添加語句pathmunge/opt/EABI_4.3.3_2009/4.3.3/bin)讓編譯器生效,這樣就可以在PC上交叉編譯開發板所需要的文件。至此開發環境已經建立。

2.2 Linux內核的移植

    本次實驗使用的boatload是天嵌公司自己開發的u-boot,用J-TAG燒寫方式寫入NOR Flash,然后便可以使用u-boot自帶的USB下載(需要在Windows下安裝USB下載驅動程序)功能下載開發板上需要的Linux內核鏡像了,這樣方便而且高效。下載Linux2.6.30.4內核源代碼,復制到Redhat9.0系統目錄/opt下,并解壓。在目錄/opt/linux2.6.30.4/目錄下便可以進行修改和編譯開發板上需要的內核鏡像。在移植觸摸屏驅動之前,需要移植板載256 MB NAND Flash的驅動、yaffs文件系統,這樣便完善了串口驅動程序,最后移植LCD屏的驅動。

2.3 觸摸屏驅動程序

    Linux系統將存儲器和外設分為字符設備、塊設備、網絡設備三大類。觸摸屏屬于字符設備,以串行順序依次進行訪問。在Linux系統中,以文件名的形式在/dev目錄下建立觸摸屏設備文件, 應用程序可以通過系統調用函數open()打開此文件,建立起與設備的連接,然后通過函數read()、write()、release()、ioctl()等常規的文件操作對目標設備進行操作。Linux為了把所有的設備當作文件系統進行管理,為所有的文件及設備文件定義了統一的操作函數接口file_operations,每個文件都通過指向file_operations結構的指針字段與它自己的函數集相關聯。file_operations中成員為一系列指向各操作函數的指針,這些操作函數主要負責系統調用的實現,不同類型的設備文件系統有不同類型的file_operations結構[4]。觸摸屏的 file_operations 結構定義為:

static struct file_operation s3c2410_fops=
{
  owner: THIS_MODULE,
  open: s3c2410_ts_open,//打開
  read: s3c2410_ts_read,//讀坐標
  release:
s3c2410_ts_release,
  #ifdef USE_ASYNC
Fasync:s3c2410_ts_fasync,//fasync()函數
  #endif
  poll:s3c2410_ts_poll,//輪詢
}

結構中s3c2410_ts_open函數為file_operations中函數指針open所指向的函數,即打開觸摸屏設備時 open操作即為調用s3c2410_ts_open函數,完成觸摸屏初始狀態參數的設置、消息隊列初始化等。read所指向s3c2410_ts_

read函數主要是向消息隊列提供觸摸屏坐標采集數據,以供應用程序調用。s3c2410_ts_poll為查詢設備的可讀寫狀態,s3c2410_ts_release則在釋放設備時調用。

在觸摸屏驅動程序中定義了一組宏,用于控制觸摸屏和ADC進入不同的工作模式,如等待中斷、X/Y位置轉換等。定義了觸摸屏結構體TS_DEV包含一個緩沖區、自旋鎖、等待隊列和fasync_struct指針,結構為:

typedef struct
{
  unsigned int penStatus;
  TS_RET buf[MAX_TS_BUF];
  unsigned int head,tail;
  wait_queue_head_t wq;
   spinlock_t lock;
  #ifdef USE_ASYNC
struct fasync_struct *aq;
#endif
  struct cdev cdev;
}TS_DEV;


觸摸屏結構體中的TS_RET包含屏幕的X、Y坐標和觸摸狀態信息(PEN_DOWN、PEN_UP),這個信息會在用戶讀取觸摸屏信息時復制到用戶空間,結構為:

typedef struct
{
  unsigned short pressure;
  unsigned short x;//X坐標
  unsigned shorty;//Y坐標
  unsigned short pad;
}TS_RET;

觸摸屏工作時會產生兩類中斷:一類是觸點中斷(INT_TC),一類是X/Y位置轉換中斷(INT_ADC)。使用函數s3c2410_isr_tc用來處理觸摸屏的觸點/抬起中斷,在觸點中斷發生后,若之前處于PEN_UP狀態,則應該啟動X/Y位置轉換;當處于PEN_DOWN狀態時,則調用函數tsEvent完成緩沖區的填充、等待隊列的喚醒和異步通知信號的釋放。使用函數s3c2410_isr_adc來處理X/Y位置轉換中斷,當X/Y位置轉換中斷發生后,讀取X、Y的坐標值,填入緩沖區。在函數s3c2410_isr_adc中通過調用函數s3c2410_get_XY來獲取X、Y坐標的。最后由函數s3c2410_ts_poll實現輪詢接口,將等待隊列添加到結構體poll_table中,當緩沖區有數據時,返回資源可讀取標志,否則返回0。函數s3c2410_ts_fasync完成觸摸屏對應用程序的異步通知。在程序的最后,由函數__init s3c2410_ts_init和__exit s3c2410_ts_exit完成從內核中加載和卸載觸摸屏驅動程序,加載函數__init s3c2410_ts_init還需要完成申請設備號、添加cdev、申請中斷、設置觸摸屏控制引腳等多項工作,卸載函數_exit s3c2410_ts_exit完成釋放設備號、刪除cdev、釋放中斷等工作[3]。

2.4 實驗操作過程

    將編寫好的觸摸屏驅動ts.c文件拷貝到內核源碼目錄“drivers/input/touchsreen/”下,并修改同目錄下的“Kconfig”和“Makefile”文件。在內核配置單中添加觸摸屏編譯配置選項,修改Kconfig文件的第468行,添加如下內容:

config TOUCHSCREEN
tristate "TouchScreen input driver"
depends on ARCH_S3C2410 && INPUT &&
INPUT_TOUCHSCREEN
help
Say Y here if you have the TouchScreen.
and depends on ADC
If unsure, say N.
To compile this driver as a module, choose M here: the
module will be calLED ts.
  在目錄的Makefile文件中添加觸摸屏的編譯條目,添加內容如下:
  obj-$(CONFIG_TOUCHSCREEN) += ts.o
  內核配置單的選擇:
Device Drivers --->
Input device support --->
  [*]   Touchscreens --->
 

配置完畢后,保存配置單,然后編譯內核,再將編譯好的鏡像下載到開發板中運行。

2.5 觸摸屏的校準

    TQ2440出廠時使用的是Linux2.6.25.8內核,觸摸屏已經完成校準,但本次實驗重新使用了最新的Linux2.6.30.4內核,所以需要重新校準。移植好內核之后,下載了天嵌公司已經做好的QT圖形界面到開發板,并重啟開發板,校準時只需要將觸摸筆點中十字架的中心,然后進行5點校準,完畢后觸摸屏就可以正常使用。如圖1所示。

 

圖1 校準時觸摸屏顯示圖
圖1 校準時觸摸屏顯示圖
 

    觸摸屏因其使用方便、快捷,而得到廣泛應用。Linux系統因其源代碼公開、成本低廉、裁減性好、高效、靈活等特點,在嵌入式領域得到了很好的發展和應用。本文介紹了觸摸屏的工作原理,對嵌入式Linux系統內核源碼的觸摸屏驅動做了深入探討,編譯和下載Linux內核到開發板上運行,并且移植了QT圖形界面,觸摸屏校準之后,使用情況良好。


下一篇: PLC、DCS、FCS三大控

上一篇: 基于光學原理的多點觸

主站蜘蛛池模板: 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 酒万铺-酒水招商-酒水代理| 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 南京泽朗生物科技有限公司| 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 智能终端_RTU_dcm_北斗星空自动化科技 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 乙炔气体报警装置|固定式氯化氢检测仪|河南驰诚电气百科 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 宜兴紫砂壶知识分享 - 宜兴壶人| TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 沈阳楼承板_彩钢板_压型钢板厂家-辽宁中盛绿建钢品股份有限公司 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 电动葫芦-河北悍象起重机械有限公司 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 |