chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux驅動開發(fā)-編寫FT5X06觸摸屏驅動

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

掃碼添加小助手

加入工程師交流群

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

1. 前言

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

image-20220118132721456

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

當前文章介紹的FT5206就是一顆電容屏的驅動芯片,最高支持2點觸控,可以通過獲取兩個坐標點,這個系列的芯片最高支持10點觸控。

當前使用的屏幕型號是S702,這個屏幕是友善之臂生產的LCD屏,S702這款屏幕采用的觸摸芯片就是FT5206,引出了IIC接口,支持筆中斷,官方的內核里也提供了例子驅動可以參考。

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

image-20220118134314453

屏幕的實物圖詳情看下圖的介紹:

image-20220118133946228

2. FT5206寄存器介紹

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

IIC傳輸時序:

image-20220118135118906

讀寫時序流程:

image-20220118135237716

字段的解釋:

image-20220118135300623

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

image-20220118135549700image-20220118135610826

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

3. 編寫觸摸屏驅動

Linux下編寫標準的觸摸屏驅動需要使用到輸入子系統(tǒng),當前文章的重點是讀取觸摸屏的坐標,所以示例代碼里不會加輸入子系統(tǒng)的代碼,只是在驅動層完成觸摸屏筆中斷響應,觸摸屏的坐標點獲取并打印。

驅動代碼里涉及的技術點有: IIC子系統(tǒng)、工作隊列、內核中斷等知識點。

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

image-20220118140556674

3.1 設備端代碼(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. 根據總線編號獲取IIC適配器結構體*/
	iic_adapter=i2c_get_adapter(1);
	/*2. 填充板級信息*/
	iic_info.addr=0x38;
	iic_info.irq=gpio_to_irq(EXYNOS4_GPX1(6));
	strcpy(iic_info.type,DEVICE_NAME);
	
	/*3. 注冊IIC設備端*/
	iic_client=i2c_new_device(iic_adapter,&iic_info);
	
    printk("IIC設備端驅動安裝成功.\n");
    return 0;
}
static void __exit iic_dev_exit(void)
{
	/*1. 完成設備端注銷*/
	i2c_unregister_device(iic_client);
	
    printk("IIC設備端驅動卸載成功.\n");
}

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

3.2 驅動端代碼

#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. 讀取坐標數(shù)據*/
	i2c_smbus_read_i2c_block_data(touch_client,0,7,touch_buff);
	/*2. 打印數(shù)據*/
	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);
}

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

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

	touch_client=client;
		
	/*1. 初始化工作隊列*/
	INIT_WORK(&touch_work,tiny4412_touch_work_func);
	
	/*2. 注冊中斷*/
	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. 注冊IIC驅動端*/
	i2c_add_driver(&iic_driver);
    printk("驅動安裝成功.\n");
    return 0;
}

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

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

    關注

    42

    文章

    2417

    瀏覽量

    120096
  • 驅動
    +關注

    關注

    12

    文章

    1924

    瀏覽量

    87880
  • ft5x06
    +關注

    關注

    0

    文章

    2

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    6通道、高效率白光LED驅動器,帶有觸摸屏驅動器電源 skyworksinc

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

    工業(yè)智能網關能夠采集PLC觸摸屏

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

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

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

    ESP32驅動ST7789觸摸屏開發(fā)指南:LVGL主題設置與示波器面板

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

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

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

    案例解說PLC、觸摸屏及變頻器綜合應用

    《案例解說PLC、觸摸屏及變頻器綜合應用》一書詳細闡述了PLC(可編程邏輯控制器)、觸摸屏及變頻器的綜合應用。以下是對該書的案例解說以及PLC、觸摸屏及變頻器綜合應用的一些介紹: 一、書籍介紹
    的頭像 發(fā)表于 02-19 09:43 ?1194次閱讀

    Maxtouch觸摸屏:多場景觸控解決方案

    Maxtouch觸摸屏方案以其卓越的性能和高度適應性,為汽車、工業(yè)和消費類電子設備提供全面的觸摸屏解決方案。憑借專用觸摸屏芯片和高效開發(fā)工具,它滿足多種應用場景的需求,具有強抗干擾能力
    的頭像 發(fā)表于 02-11 09:25 ?1442次閱讀
    Maxtouch<b class='flag-5'>觸摸屏</b>:多場景觸控解決方案

    迅為RK3568開發(fā)驅動指南Linux中通用SPI設備驅動

    迅為RK3568開發(fā)驅動指南Linux中通用SPI設備驅動
    的頭像 發(fā)表于 01-23 11:02 ?3251次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>驅動</b>指南<b class='flag-5'>Linux</b>中通用SPI設備<b class='flag-5'>驅動</b>

    4線電阻式觸摸屏是如何工作的

    4線電阻式觸摸屏是一種常見的觸控技術,廣泛應用于各種工業(yè)和消費電子產品中。這類觸摸屏的工作原理是基于壓力感應:當屏幕表面受到觸摸時,頂層(通常是一層透明的導電涂層)會與底層接觸,從而形成電路連接
    的頭像 發(fā)表于 01-17 17:14 ?3005次閱讀
    4線電阻式<b class='flag-5'>觸摸屏</b>是如何工作的

    觸摸屏與傳統(tǒng)顯示器比較

    隨著科技的飛速發(fā)展,顯示技術也在不斷進步。觸摸屏和傳統(tǒng)顯示器作為兩種主流的顯示技術,它們各自有著獨特的優(yōu)勢和應用場景。 1. 技術原理 觸摸屏技術: 觸摸屏技術允許用戶通過直接觸摸屏
    的頭像 發(fā)表于 01-06 17:02 ?1575次閱讀

    廣州大彩講堂:安卓/linux觸摸屏四路CVBS輸入實現(xiàn)同時顯示!

    廣州大彩串口安卓/linux觸摸屏四路CVBS輸入實現(xiàn)同時顯示!
    的頭像 發(fā)表于 12-25 16:49 ?967次閱讀
    廣州大彩講堂:安卓/<b class='flag-5'>linux</b><b class='flag-5'>觸摸屏</b>四路CVBS輸入實現(xiàn)同時顯示!

    開發(fā)觸摸屏驅動板需要考慮哪些因素

    驅動板是現(xiàn)代電子設備中不可或缺的一部分,它負責將用戶的觸摸操作轉化為設備可以理解的信號。觸摸屏驅動板需要通過多個關鍵步驟來實現(xiàn)其功能,以
    的頭像 發(fā)表于 10-29 14:05 ?2388次閱讀

    linux內核中通用HID觸摸驅動

    linux內核中,為HID觸摸面板實現(xiàn)了一個通用的驅動程序,位于/drivers/hid/hid-multitouch.c文件中。hid觸摸驅動
    的頭像 發(fā)表于 10-29 10:55 ?3120次閱讀
    <b class='flag-5'>linux</b>內核中通用HID<b class='flag-5'>觸摸</b><b class='flag-5'>驅動</b>

    TSC2101觸摸屏、電池和音頻WinCE驅動程序

    電子發(fā)燒友網站提供《TSC2101觸摸屏、電池和音頻WinCE驅動程序.pdf》資料免費下載
    發(fā)表于 10-23 10:13 ?0次下載
    TSC2101<b class='flag-5'>觸摸屏</b>、電池和音頻WinCE<b class='flag-5'>驅動</b>程序

    觸摸屏驅動板無法燒寫程序的相關原因

    每次聽到別人說是什么原因導致觸摸屏驅動板無法燒寫程序,就很想去討論一下。今天就跟大家聊聊到底是什么原因導致的。
    的頭像 發(fā)表于 10-21 11:19 ?1099次閱讀