网站大量收购独家精品文档,联系QQ:2885784924

Linux设备驱动—触摸屏驱动.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux设备驱动工程师之路——触摸屏驱动s3c2410_ts.c分析Linux设备驱动工程师之路——触摸屏驱动s3c2410_ts.c分析 K-Style 转载请注明来自于衡阳师范学院08电2? K-Style ?/ayangke,QQ:843308498 邮箱:yangkeemail@ ? 一、触摸屏硬件知识 ? 1.模块原理图 S3C2440有8路的ADC通道其中触摸屏控制器接口XP,XM,YP,YM与四路ADC通道复用四个IO引脚。从原理图看出8路ADC只有一个A/D转换器,通过一个8选1开关MUX来选通哪一路A/D通道进行转换。触摸屏控制会产生两个中断,一个触摸屏中断INT_ADC,一个ADC_转换完成中断INT_ADC。ADC需要时钟才能工作,因为它需要设置采样率。 再复习一下ARM裸机实验时触摸屏寄存器操作流程 流程: ???????? 初始化 ???????? 1设置采样延时和分频值ADCDLY ADCCON ???????? 2中断相关设置 ???????? 3设置触摸屏AD转换为等待中断模式 ADCTSC ???????? 中断服务函数 ???????? 4清相关挂起寄存器 ???????? 5设置转换模式,一般为连续x,y转换 6 启动转换 ????????? 7 转换完成后读取x y坐标ADCDAT0ADCDAT1 ????????? 8 设置触摸屏AD转换为等待中断模式,设置等待弹起中断ADCTSC 9 弹起中断发生后,设置触摸屏转换为等待中断模式,等待下一次触笔按下rADCTSC ???????? 程序 二、触摸屏驱动程序 ? 1.模块初始化 [html]?view plaincopy static?int?__init?s3c2410ts_init(void)?? {?? ????struct?input_dev?*input_dev;?? ?? ????//获取时钟?? ????adc_clock?=?clk_get(NULL,?adc);?? ????if?(!adc_clock)?{?? ????????printk(KERN_ERR?failed?to?get?adc?clock?source\n);?? ????????return?-ENOENT;?? ????}?? ????clk_enable(adc_clock);?? ????//使能时钟?? ????//需要时钟的是因为触摸屏要用到ADC转换,而完成ADC转换则需要时钟(采用时间)?? ?? ????//映射ADC的IO内存?? ????base_addr=ioremap(S3C2410_PA_ADC,0x20);?? ????if?(base_addr?==?NULL)?{?? ????????printk(KERN_ERR?Failed?to?remap?register?block\n);?? ????????return?-ENOMEM;?? ????}?? ?? ????//初始化触摸屏的IO引脚?? ????/*?Configure?GPIOs?*/?? ????s3c2410_ts_connect();?? ?? ????//设置预分频值?? ????iowrite32(S3C2410_ADCCON_PRSCEN?|?S3C2410_ADCCON_PRSCVL(0xFF),\?? ?????????????base_addr+S3C2410_ADCCON);?? ????iowrite32(0xffff,??base_addr+S3C2410_ADCDLY);//设置采用延时?? ????iowrite32(WAIT4INT(0),?base_addr+S3C2410_ADCTSC);?? //设置触摸屏控制器为等待按下中断?? ?? ????/*?Initialise?input?stuff?*/?? ????//申请一个input设备?? ????input_dev?=?input_allocate_device();?? ?? ????if?(!input_dev)?{?? ????????printk(KERN_ERR?Unable?to?allocate?the?input?device?!!\n);?? ????????return?-ENOMEM;?? ????}?? ?? ????dev?=?input_dev;?? ?????? ????//设置可被支持的事件为同步、按键、绝对坐标事件?? dev-evbit[0]?=?BIT(EV_SYN)?|?BIT(EV_KEY)?|?BIT(EV_ABS);?? //设置按键时间类型为触摸屏?? ????dev-keybit[BITS_TO_LONGS(

文档评论(0)

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

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

1亿VIP精品文档

相关文档