<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于TQ2440和Linux的觸摸屏的驅動(dòng)研究

基于TQ2440和Linux的觸摸屏的驅動(dòng)研究

作者: 時(shí)間:2012-03-16 來(lái)源:網(wǎng)絡(luò ) 收藏

結構中s3c2410_ts_open函數為file_operations中函數指針open所指向的函數,即打開(kāi)設備時(shí) open操作即為調用s3c2410_ts_open函數,完成初始狀態(tài)參數的設置、消息隊列初始化等。read所指向s3c2410_ts_

read函數主要是向消息隊列提供坐標采集數據,以供應用程序調用。s3c2410_ts_poll為查詢(xún)設備的可讀寫(xiě)狀態(tài),s3c2410_ts_release則在釋放設備時(shí)調用。

在觸摸屏程序中定義了一組宏,用于控制觸摸屏和ADC進(jìn)入不同的工作模式,如等待中斷、X/Y位置轉換等。定義了觸摸屏結構體TS_DEV包含一個(gè)緩沖區、自旋鎖、等待隊列和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坐標和觸摸狀態(tài)信息(PEN_DOWN、PEN_UP),這個(gè)信息會(huì )在用戶(hù)讀取觸摸屏信息時(shí)復制到用戶(hù)空間,結構為:
typedef struct
{
unsigned short pressure;
unsigned short x;//X坐標
unsigned shorty;//Y坐標
unsigned short pad;
}TS_RET;

觸摸屏工作時(shí)會(huì )產(chǎn)生兩類(lèi)中斷:一類(lèi)是觸點(diǎn)中斷(INT_TC),一類(lèi)是X/Y位置轉換中斷(INT_ADC)。使用函數s3c2410_isr_tc用來(lái)處理觸摸屏的觸點(diǎn)/抬起中斷,在觸點(diǎn)中斷發(fā)生后,若之前處于PEN_UP狀態(tài),則應該啟動(dòng)X(jué)/Y位置轉換;當處于PEN_DOWN狀態(tài)時(shí),則調用函數tsEvent完成緩沖區的填充、等待隊列的喚醒和異步通知信號的釋放。使用函數s3c2410_isr_adc來(lái)處理X/Y位置轉換中斷,當X/Y位置轉換中斷發(fā)生后,讀取X、Y的坐標值,填入緩沖區。在函數s3c2410_isr_adc中通過(guò)調用函數s3c2410_get_XY來(lái)獲取X、Y坐標的。最后由函數s3c2410_ts_poll實(shí)現輪詢(xún)接口,將等待隊列添加到結構體poll_table中,當緩沖區有數據時(shí),返回資源可讀取標志,否則返回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 實(shí)驗操作過(guò)程

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>