- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[转载]s3c2410触摸屏在linux下的驱动分析 (2010-12-08 22:32)
分类: TouchScreen
原文地址:/xuangouyuweihu/chumopingjis
触摸屏驱动在/kernel/drivers/char/s3c2410-ts.c 文件中。 该驱动总要有以下重要数据结构:?1.触摸屏的file_operationsstatic struct file_operations s3c2410_fops={??? owner: THIS_MODULE,??? open: s3c2410_ts_open,??? read: s3c2410_ts_read, ??? release: s3c2410_ts_release,#ifdef USE_ASYNC??? fasync: s3c2410_ts_fasync,#endif??? poll: s3c2410_ts_poll,};?2.全局变量TS_DEV结构体,用来保存触摸屏的相关参数、等待处理的消息队列、当前采样数据、上一次采样数据等信息typedef struct {??? unsigned int penStatus;??? TS_RET buf[MAX_TS_BUF];??? unsigned int head, tail;??? wait_queue_head_t wq; ?wait_down_int(); 99touch触摸屏资讯网
???? 函数request_irq 是Linux 系统中驱动程序注册中断的方法。irq 为所要申请的硬件中断号,handler 为系统所注册的中断处理子程序,irq_flags 为申请时的选项,devname 为指向设备名称的字符指针,dev_id 为申请时告诉系统的设备标识。若中断申请成功则返回0,失败则返回负值。ret = request_irq(IRQ_ADC_DONE, s3c2410_isr_adc, SA_INTERRUPT,?????????? DEVICE_NAME, s3c2410_isr_adc);??? 调用该函数来进行A/D转换的中断注册,所要申请的硬件中断号为IRQ_ADC_DONE(62),在arch/irq s.h中定义;系统所注册的中断处理子程序为s3c2410_isr_adc 函数;申请中断选项为SA_INTERRUPT,表示中断处理程序是快速处理程序,即快速处理程序运行时,所有中断都被屏蔽;设备名称定义为DEVICE_NAME,即s3c2410-ts;而设备标识仍然用中断处理子程序代替。
ret = request_irq(IRQ_TC, s3c2410_isr_tc, SA_INTERRUPT,????????? DEVICE_NAME, s3c2410_isr_tc);??? 接着继续调用该函数来进行触摸屏触摸的中断注册,所要申请的硬件中断号为IRQ_TC(61);系统所注册的中断处理子程序为s3c2410_isr_tc 函数;申请中断选项为SA_INTERRUPT,表示中断处理程序是快速处理程序,即快速处理程序运行时,所有中断都被屏蔽;设备名称定义为DEVICE_NAME,即s3c2410-ts;而设备标识仍然用中断处理子程序代替。
wait_down_int();??? 调用该宏函数来设置触摸屏为等待中断模式【笔按下产生中断】,具体定义如下:#define wait_down_int() { ADCTSC = DOWN_INT | XP_PULL_UP_EN | \??? XP_AIN | XM_HIZ | YP_AIN | YM_GND | \??? XP_PST(WAIT_INT_MODE); }??? 用该宏函数来设置ADC 触摸屏控制寄存器,参考S3C2410 芯片datasheet 中关于触摸屏的章节,具体设置参数如下:DOWN_INT = 18 * 0? 该位保留且应该设为0 【笔按下或笔抬起中断信号控制位,设为0 表示笔按下产生中断信号】XP_PULL_UP_EN = 13 * 0? 上拉开关使能,设为0 表示XP 引脚上拉使能XP_AIN = 14 * 1? 选择nXPON 引脚输出值,设为1 表示nXPON 引脚输出1,则XP 引脚连接AIN[7] 引脚XM_HIZ = 15 * 0? 选择XMON 引脚输出值,设为0 表示XMON 引脚输出0,则XM 引脚为高阻态YP_AIN = 16 * 1? 选择nYPON 引脚输出值,设为1 表示nYPON 引脚输出1,则YP 引脚连接AIN[5] 引脚
99touch触摸屏
YM_GND = 17 * 1? 选择Y
文档评论(0)