91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux驅(qū)動(dòng)開發(fā)-編寫FT5X06觸摸屏驅(qū)動(dòng)

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 這篇文章介紹在Linux下如何編寫FT5X06系列芯片驅(qū)動(dòng),完成觸摸屏的驅(qū)動(dòng)開發(fā), FT5X06是一個(gè)系列,當(dāng)前使用的具體型號(hào)是FT5206,它是一個(gè)電容屏的觸摸芯片,內(nèi)置了8位的單片機(jī)(8051內(nèi)核),完成了坐標(biāo)換算等很多處理,在通過IIC,SPI方式傳遞給外部單片機(jī)。

1. 前言

這篇文章介紹在Linux下如何編寫FT5X06系列芯片驅(qū)動(dòng),完成觸摸屏的驅(qū)動(dòng)開發(fā), FT5X06是一個(gè)系列,當(dāng)前使用的具體型號(hào)是FT5206,它是一個(gè)電容屏的觸摸芯片,內(nèi)置了8位的單片機(jī)(8051內(nèi)核),完成了坐標(biāo)換算等很多處理,在通過IIC,SPI方式傳遞給外部單片機(jī)。

image-20220118132721456

所說起觸摸屏大家都不會(huì)陌生,現(xiàn)在手機(jī)、手表、家電、很多地方都支持觸摸了。最開始的觸摸屏都是電阻屏,在諾基亞時(shí)代的時(shí)候,使用的觸摸屏都是電阻屏,后來Android興起的時(shí)候,手機(jī)都向電容屏發(fā)展了。電阻屏需要自己去校準(zhǔn),電阻屏的手機(jī)上都有這個(gè)功能,發(fā)現(xiàn)觸摸不靈敏之后,打開校準(zhǔn)選項(xiàng),根據(jù)屏幕上十字圖標(biāo)指引,按順序點(diǎn)一下,完成坐標(biāo)校準(zhǔn),電阻屏的屏幕還是軟材質(zhì),必須要手指去戳才可以完成控制,而且只能支持單點(diǎn)觸控?,F(xiàn)在電容屏就很方便了,只需要手指去觸摸屏即可完成操作,比電阻屏方便很多,還支持多點(diǎn)觸控,當(dāng)初Android手機(jī)剛興起的時(shí)候,大街小巷的體驗(yàn)店,廣告都是切水果游戲,切水果這個(gè)游戲就充分體驗(yàn)了多點(diǎn)觸摸的效果,可以多個(gè)手指去切水果,當(dāng)初這個(gè)游戲還是火爆的。

當(dāng)前文章介紹的FT5206就是一顆電容屏的驅(qū)動(dòng)芯片,最高支持2點(diǎn)觸控,可以通過獲取兩個(gè)坐標(biāo)點(diǎn),這個(gè)系列的芯片最高支持10點(diǎn)觸控。

當(dāng)前使用的屏幕型號(hào)是S702,這個(gè)屏幕是友善之臂生產(chǎn)的LCD屏,S702這款屏幕采用的觸摸芯片就是FT5206,引出了IIC接口,支持筆中斷,官方的內(nèi)核里也提供了例子驅(qū)動(dòng)可以參考。

開發(fā)板與觸摸芯片的連線示例:

image-20220118134314453

屏幕的實(shí)物圖詳情看下圖的介紹:

image-20220118133946228

2. FT5206寄存器介紹

FT5206支持通過IIC和SPI接口與外部主機(jī)通信,當(dāng)前使用的屏幕硬件上只是引出了IIC接口,下面就介紹下IIC接口的時(shí)序,設(shè)備地址,還有FT5206的寄存器。

IIC傳輸時(shí)序:

image-20220118135118906

讀寫時(shí)序流程:

image-20220118135237716

字段的解釋:

image-20220118135300623

下面的截圖是介紹FT5206內(nèi)部的寄存器地址,一些關(guān)鍵的地方我做了翻譯:

image-20220118135549700image-20220118135610826

從圖上可以看出,基本上后面的寄存器地址都是重復(fù)的功能,只是坐標(biāo)點(diǎn)不一樣了,其中的TOUCH2,TOUCH3…這些都是存放觸摸屏的坐標(biāo)點(diǎn)的值。當(dāng)前的FT5206只是支持2點(diǎn)觸控,所有就只能讀取兩個(gè)寄存器坐標(biāo)的值。在前面第一個(gè)寄存器TD_STATUS里的低4位,存放了當(dāng)前同時(shí)按下的點(diǎn)數(shù)量,可以將兩個(gè)手指按在屏幕上測(cè)試讀取的值。 這些寄存器里讀取的坐標(biāo)值就是已經(jīng)轉(zhuǎn)換過后的值,也就是屏幕坐標(biāo),不需要再進(jìn)行二次轉(zhuǎn)換校準(zhǔn),非常方便。

3. 編寫觸摸屏驅(qū)動(dòng)

Linux下編寫標(biāo)準(zhǔn)的觸摸屏驅(qū)動(dòng)需要使用到輸入子系統(tǒng),當(dāng)前文章的重點(diǎn)是讀取觸摸屏的坐標(biāo),所以示例代碼里不會(huì)加輸入子系統(tǒng)的代碼,只是在驅(qū)動(dòng)層完成觸摸屏筆中斷響應(yīng),觸摸屏的坐標(biāo)點(diǎn)獲取并打印。

驅(qū)動(dòng)代碼里涉及的技術(shù)點(diǎn)有: IIC子系統(tǒng)、工作隊(duì)列、內(nèi)核中斷等知識(shí)點(diǎn)。

這是開發(fā)板LCD屏幕的硬件原理圖:

image-20220118140556674

3.1 設(shè)備端代碼(FT5206)

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define DEVICE_NAME "FT5X06_DEV"

static struct i2c_adapter *iic_adapter;
static struct i2c_client *iic_client;
static struct i2c_board_info  iic_info;

static int __init iic_dev_init(void)
{
	/*1. 根據(jù)總線編號(hào)獲取IIC適配器結(jié)構(gòu)體*/
	iic_adapter=i2c_get_adapter(1);
	/*2. 填充板級(jí)信息*/
	iic_info.addr=0x38;
	iic_info.irq=gpio_to_irq(EXYNOS4_GPX1(6));
	strcpy(iic_info.type,DEVICE_NAME);
	
	/*3. 注冊(cè)IIC設(shè)備端*/
	iic_client=i2c_new_device(iic_adapter,&iic_info);
	
    printk("IIC設(shè)備端驅(qū)動(dòng)安裝成功.\n");
    return 0;
}
static void __exit iic_dev_exit(void)
{
	/*1. 完成設(shè)備端注銷*/
	i2c_unregister_device(iic_client);
	
    printk("IIC設(shè)備端驅(qū)動(dòng)卸載成功.\n");
}

/*驅(qū)動(dòng)的入口:insmod xxx.ko*/
module_init(iic_dev_init);
/*驅(qū)動(dòng)的出口: rmmod xxx.ko*/
module_exit(iic_dev_exit);
/*模塊的許可證*/
MODULE_LICENSE("GPL");
/*模塊的作者*/
MODULE_AUTHOR("wbyq");

3.2 驅(qū)動(dòng)端代碼

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

static struct work_struct touch_work;
static struct i2c_client *touch_client;

/*工作函數(shù)*/
void tiny4412_touch_work_func(struct work_struct *work)
{
	u8 touch_buff[7];
	u16 x,y;
	/*1. 讀取坐標(biāo)數(shù)據(jù)*/
	i2c_smbus_read_i2c_block_data(touch_client,0,7,touch_buff);
	/*2. 打印數(shù)據(jù)*/
	x=(touch_buff[3]&0xF)<<8|touch_buff[4];
	y=(touch_buff[5]&0xF)<<8|touch_buff[6];
	printk("x=%d,y=%d,p=%d\n",x,y,touch_buff[2]&0xF);
}

/*
中斷的服務(wù)函數(shù)
*/
irqreturn_t tiny4412_touch_irq_handler(int irq, void *dev)
{
	/*調(diào)度工作: 將工作加入到工作隊(duì)列*/
	schedule_work(&touch_work);	
	return IRQ_HANDLED;
}

static int iic_probe(struct i2c_client *client, const struct i2c_device_id *dev_id)
{
	printk("設(shè)備地址:0x%X\n",client->addr);
	printk("設(shè)備名稱:%s\n",client->name);

	touch_client=client;
		
	/*1. 初始化工作隊(duì)列*/
	INIT_WORK(&touch_work,tiny4412_touch_work_func);
	
	/*2. 注冊(cè)中斷*/
	request_irq(client->irq,tiny4412_touch_irq_handler,IRQF_TRIGGER_RISING|IRQF_TRIGGER_FALLING,client->name,NULL);

	return 0;
}

static int iic_remove(struct i2c_client *client)
{
	/*1. 注銷中斷*/
	free_irq(client->irq,NULL);
	
	return 0;
}

static  struct i2c_device_id iic_dev_id[]=
{
	{"FT5X06_DEV",0},
	{}
};

static struct i2c_driver iic_driver=
{
	.probe=iic_probe,
	.remove=iic_remove,
	.driver=
		{
			.name="iic_driver"
		},
	.id_table=iic_dev_id
};

static int __init iic_drv_init(void)
{
	/*1. 注冊(cè)IIC驅(qū)動(dòng)端*/
	i2c_add_driver(&iic_driver);
    printk("驅(qū)動(dòng)安裝成功.\n");
    return 0;
}

static void __exit iic_drv_exit(void)
{
	/*2. 注銷IIC驅(qū)動(dòng)端*/
	i2c_del_driver(&iic_driver);
    printk("驅(qū)動(dòng)卸載成功.\n");
}

/*驅(qū)動(dòng)的入口:insmod xxx.ko*/
module_init(iic_drv_init);
/*驅(qū)動(dòng)的出口: rmmod xxx.ko*/
module_exit(iic_drv_exit);
/*模塊的許可證*/
MODULE_LICENSE("GPL");
/*模塊的作者*/
MODULE_AUTHOR("wbyq");
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 觸摸屏
    +關(guān)注

    關(guān)注

    42

    文章

    2460

    瀏覽量

    122033
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1957

    瀏覽量

    88566
  • ft5x06
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5069
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    觸拓科技商超導(dǎo)覽觸摸屏數(shù)字標(biāo)牌廣告#導(dǎo)覽 #觸摸屏 #觸拓

    觸摸屏
    深圳市觸拓科技有限公司
    發(fā)布于 :2025年12月25日 17:24:28

    Linux驅(qū)動(dòng)開發(fā)的必備知識(shí)

    、內(nèi)核模塊編程: 掌握內(nèi)核模塊的編寫、編譯、加載和卸載方法。 了解內(nèi)核模塊的初始化和清理函數(shù)的編寫。 5、設(shè)備驅(qū)動(dòng)框架: 熟悉字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備等
    發(fā)表于 12-04 07:58

    【免費(fèi)送書】成為硬核Linux開發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)》

    Linux系統(tǒng)的設(shè)備驅(qū)動(dòng)開發(fā),一直給人門檻較高的印象,主要因內(nèi)核機(jī)制抽象、需深度理解硬件原理、開發(fā)調(diào)試難度大所致。2021年,一本講解驅(qū)動(dòng)
    的頭像 發(fā)表于 11-18 08:06 ?1455次閱讀
    【免費(fèi)送書】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)</b>者:《<b class='flag-5'>Linux</b> 設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>(第 2 版)》

    應(yīng)用 I 觸摸屏靜電浪涌防護(hù)方案

    一、應(yīng)用背景觸摸屏(又稱觸控或、觸控面板)是一種可接收觸頭輸入信號(hào)的感應(yīng)式液晶顯示裝置。用戶通過手指與屏幕直接觸碰,就可與計(jì)算機(jī)等設(shè)備進(jìn)行交互。觸摸屏被廣泛運(yùn)用在各個(gè)行業(yè),其中較為常見的就是手機(jī)
    的頭像 發(fā)表于 11-03 13:37 ?666次閱讀
    應(yīng)用 I <b class='flag-5'>觸摸屏</b>靜電浪涌防護(hù)方案

    OBOO鷗柏觸摸屏:國(guó)產(chǎn)化“芯”力量,驅(qū)動(dòng)軌道交通數(shù)字孿生高效交互

    OBOO鷗柏觸摸屏:國(guó)產(chǎn)化芯片賦能,軌道交通數(shù)字孿生“智”變新仿真引擎近日,OBOO鷗柏觸摸屏一體機(jī)憑借其數(shù)字孿生仿真技術(shù)與軌道交通場(chǎng)景的深度融合,成為商顯行業(yè)焦點(diǎn)。鷗柏觸摸屏該系列工業(yè)顯示一體機(jī)
    的頭像 發(fā)表于 09-21 12:25 ?621次閱讀
    OBOO鷗柏<b class='flag-5'>觸摸屏</b>:國(guó)產(chǎn)化“芯”力量,<b class='flag-5'>驅(qū)動(dòng)</b>軌道交通數(shù)字孿生高效交互

    如何做電子產(chǎn)品的觸摸屏點(diǎn)擊耐劃壽命測(cè)試

    電子產(chǎn)品的觸摸屏點(diǎn)擊耐劃壽命測(cè)試是評(píng)估觸摸屏耐用性的關(guān)鍵環(huán)節(jié),直接關(guān)系到產(chǎn)品的使用壽命和用戶體驗(yàn)。
    的頭像 發(fā)表于 08-15 10:35 ?2260次閱讀
    如何做電子產(chǎn)品的<b class='flag-5'>觸摸屏</b>點(diǎn)擊耐劃壽命測(cè)試

    6通道、高效率白光LED驅(qū)動(dòng)器,帶有觸摸屏驅(qū)動(dòng)器電源 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()6通道、高效率白光LED驅(qū)動(dòng)器,帶有觸摸屏驅(qū)動(dòng)器電源相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有6通道、高效率白光LED驅(qū)動(dòng)器,帶有觸摸屏
    發(fā)表于 07-23 18:33
    6通道、高效率白光LED<b class='flag-5'>驅(qū)動(dòng)</b>器,帶有<b class='flag-5'>觸摸屏</b><b class='flag-5'>驅(qū)動(dòng)</b>器電源 skyworksinc

    智能設(shè)備觸摸屏的功能性測(cè)試

    多功能觸摸屏測(cè)試系統(tǒng)WH-1121-W憑借其強(qiáng)大的性能和廣泛的適用性,在多個(gè)行業(yè)中都發(fā)揮著重要作用。在 3C 電子行業(yè),智能手機(jī)、平板電腦、筆記本電腦等產(chǎn)品的觸摸屏測(cè)試都離不開它,通過精準(zhǔn)測(cè)試確保
    的頭像 發(fā)表于 07-17 09:27 ?4782次閱讀
    智能設(shè)備<b class='flag-5'>觸摸屏</b>的功能性測(cè)試

    工業(yè)智能網(wǎng)關(guān):PLC觸摸屏數(shù)據(jù)采集場(chǎng)景覆蓋指南

    針對(duì)"能否采集PLC觸摸屏數(shù)據(jù)"問題,本文通過功能模塊化拆解,結(jié)合真實(shí)應(yīng)用場(chǎng)景,解析工業(yè)智能網(wǎng)關(guān)在PLC觸摸屏數(shù)據(jù)采集中的技術(shù)實(shí)現(xiàn)與商業(yè)價(jià)值。
    的頭像 發(fā)表于 07-16 10:36 ?1282次閱讀
    工業(yè)智能網(wǎng)關(guān):PLC<b class='flag-5'>觸摸屏</b>數(shù)據(jù)采集場(chǎng)景覆蓋指南

    聚徽分享——解決工控觸摸屏觸摸不靈敏問題的實(shí)用技巧

    在工業(yè)自動(dòng)化場(chǎng)景中,工控觸摸屏作為人機(jī)交互的核心設(shè)備,其靈敏度直接影響生產(chǎn)效率與操作準(zhǔn)確性。當(dāng)觸摸屏出現(xiàn)觸摸不靈敏的情況時(shí),及時(shí)排查并解決問題至關(guān)重要。以下是一些實(shí)用的解決技巧。 清潔屏幕表面 日常
    的頭像 發(fā)表于 06-26 17:26 ?1501次閱讀

    工業(yè)智能網(wǎng)關(guān)能夠采集PLC觸摸屏

    工業(yè)智能網(wǎng)關(guān)能夠采集PLC觸摸屏的數(shù)據(jù)。工業(yè)智能網(wǎng)關(guān)作為連接工業(yè)場(chǎng)景本地設(shè)備(如PLC、傳感器、觸摸屏等)與遠(yuǎn)端業(yè)務(wù)系統(tǒng)的網(wǎng)絡(luò)通信設(shè)備,具備數(shù)據(jù)采集、協(xié)議解析、邊緣計(jì)算等功能,可實(shí)現(xiàn)對(duì)PLC觸摸屏
    的頭像 發(fā)表于 06-25 14:30 ?922次閱讀
    工業(yè)智能網(wǎng)關(guān)能夠采集PLC<b class='flag-5'>觸摸屏</b>嗎

    昆侖通態(tài)物聯(lián)網(wǎng)觸摸屏配置教程

    昆侖通態(tài)物聯(lián)網(wǎng)觸摸屏配置教程
    發(fā)表于 06-09 14:59 ?0次下載

    ESP32驅(qū)動(dòng)ST7789觸摸屏開發(fā)指南:LVGL主題設(shè)置與示波器面板

    本文介紹如何使用ESP32微控制器驅(qū)動(dòng)ST7789 TFT液晶和XPT2046觸摸芯片,通過LVGL圖形庫(kù)實(shí)現(xiàn)主題切換功能,并開發(fā)一個(gè)實(shí)用的觸摸屏
    的頭像 發(fā)表于 04-28 18:07 ?3594次閱讀
    ESP32<b class='flag-5'>驅(qū)動(dòng)</b>ST7789<b class='flag-5'>觸摸屏</b><b class='flag-5'>開發(fā)</b>指南:LVGL主題設(shè)置與示波器面板

    觸摸屏的防水方案該如何選擇?#觸摸屏 #工作原理大揭秘 #人工智能

    觸摸屏
    jf_95705721
    發(fā)布于 :2025年04月14日 13:59:29

    工業(yè)觸摸屏在調(diào)色機(jī)械設(shè)備中的應(yīng)用

    工業(yè)觸摸屏,又稱工業(yè)顯示器,是一種應(yīng)用在工業(yè)控制過程或設(shè)備的顯示器,是人機(jī)互動(dòng)的終端展示。以下是對(duì)工業(yè)觸摸屏在調(diào)色機(jī)械設(shè)備中應(yīng)用的詳細(xì)分析:
    的頭像 發(fā)表于 03-13 17:23 ?1153次閱讀