s3c2410触摸屏在linux下的驱动分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[转载]s3c2410触摸屏在linux下的驱动分析 (2010-12-08 22:32) 分类: TouchScreen 原文地址:/xuangouyuweihu/chumopingjis 触摸屏驱动在/kernel/drivers/char/s3c2410-ts.c 文件中。 该驱动总要有以下重要数据结构: ?1.触摸屏的file_operations static 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)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档