触摸屏控制芯片ADS7843中文资料[1]

2022年-2023年建筑工程管理行业文档 齐鲁斌创作网址:QQ: 21414861如侵犯您的利益和著作权请发信到 【langmanbuluo@】我们将收到信两个工作日内删除!!触摸屏控制芯片ADS7843中文资料 ADS7843是一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片供电电压2.7~5 V,参考电压VREF为1 V~+VCC,转换电压的输入范围为0~ VREF,最高转换速率为125 kHzADS7843引脚图及引脚功能说明了:ADS7843的引脚配置如图3所示表1为引脚功能说明,图4为典型应用 aDS7843引脚说明 ADS7843典型应用电路 2.2 ADS7843的内部结构及参考电压模式选择 ADS7843之所以能实现对触摸屏的控制,是因为其内部结构很容易实现电极电压的切换,并能进行快速A/D转换图5所示为其内部结构,A2~A0和SER/为控制寄存器中的控制位,用来进行开关切换和参考电压的选择 ADS7843支持两种参考电压输入模式:一种是参考电压固定为VREF,另一种采取差动模式,参考电压来自驱动电极这两种模式分别如图6(a)、(b)所示。
采用图6(b)的差动模式可以消除开关导通压降带来的影响表2和表3为两种参考电压输入模式所对应的内部开关状况 2.3 ADS7843的控制字及数据传输格式 ADS7843的控制字如表4所列,其中S为数据传输起始标志位,该位必为"1"A2~A0进行通道选择(见表2和3) MODE用来选择A/D转换的精度,"1"选择8位,"0"选择12位 SER/选择参考电压的输入模式(见表2和3)PD1、PD0选择省电模式: "00"省电模式允许,在两次A/D转换之间掉电,且中断允许; "01"同"00",只是不允许中断; "10"保留; "11"禁止省电模式 为了完成一次电极电压切换和A/D转换,需要先通过串口往ADS7843发送控制字,转换完成后再通过串口读出电压转换值标准的一次转换需要24个时钟周期,如图7所示由于串口支持双向同时进行传送,并且在一次读数与下一次发控制字之间可以重叠,所以转换速率可以提高到每次16个时钟周期,如图8所示如果条件允许,CPU可以产生15个CLK的话(比如FPGAs和ASICs),转换速率还可以提高到每次15个时钟周期,如图9所示 2.4 A/D转换时序的程序设计 ADS7843的典型应用如图4所示。
假设μP接口与51单片机的P1.3~P1.7相连,现以一次转换需24个时钟周期为例,介绍A/D转换时序的程序设计 ; A/D 接口控制线 DCLK BIT P1.3 CS BIT P1.4 DIN BIT P1.5 BUSY BIT P1.6 DOUT BIT P1.7 ; A/D 通道选择命令字和工作寄存器 CHX EQU 094H ;通道X+的选择控制字 CHY EQU 0D4H;通道Y+的选择控制字 CH3 EQU 0A4H CH4 EQU 0E4H AD_CH EQU 35H ;通道选择寄存器 AD_RESULTH EQU 36H ;存放12 bit A/D值 AD_RESULTL EQU 37H ; 存放通道CHX+的A/D值 CHXAdResultH EQU 38H CHXAdResultL EQU 39H ; 存放通道CHY+的A/D值 CHYAdResultH EQU 3AH CHYAdResultL EQU 3BH ; 采集通道CHX+的程序段(CHXAD) CHXAD: MOV AD_CH,#CHX LCALL AD_RUN MOV CHXAdResultH,AD_RESULTH MOV CHXAdResultL,AD_RESULTL RET ; 采集通道CHY+的程序段(CHYAD) CHYAD: MOV AD_CH,#CHY LCALL AD_RUN MOV CHYAdResultH,AD_RESULTH MOV CHYAdResultL,AD_RESULTL RET ; A/D转换子程序(AD_RUN) ; 输入: AD_CH-模式和通道选择命令字 ; 输出: AD_RESULTH,L ;12 bit的A/D转换值 ; 使用: R2 ;辅助工作寄存器 AD_RUN: CLR CS ; 芯片允许 CLR DCLK MOV R2,#8 ;先写8 bit命令字 MOV A,AD_CH AD_LOOP: MOV C, ACC.7 MOV DIN,C ;时钟上升沿锁存DIN SETB DCLK ;开始发送命令字 CLR DCLK ;时钟脉冲,一共24个 RL A DJNZ R2,AD_LOOP NOP NOP NOP NOP ADW0: JNB BUSY,AD_WAIT ;等待转换完成 SJMP ADW1 AD_WAIT: LCALL WATCHDOG NOP SJMP ADW0 CLR DIN ADW1: MOV R2,#12 ;开始读取12bit结果 SETB DCLK CLR DCLK AD_READ: SETB DCLK CLR DCLK ;用时钟的下降沿读取 MOV A,AD_RESULTL MOV C,DOUT RLC A MOV AD_RESULTL,A MOV A,AD_RESULTH RLC A MOV AD_RESULTH,A DJNZ R2,AD_READ MOV R2,#4 ;最后是没用的4个时钟 IGNORE: SETB DCLK CLR DCLK DJNZ R2,IGNORE SETB CS ;禁止芯片 ANL AD_RESULTH,#0FH ;屏蔽高4 bit RET 2.5 A/D转换结果的数据格式 ADS7843转换结果为二进制格式。
需要说明的是,在进行公式计算时,参考电压在两种输入模式中是不一样的而且,如果选取8位的转换精度,1LSB=VREF/256,一次转换完成时间可以提前4个时钟周期,此时串口时钟速率也可以提高一倍本文来自: DZ3W.COM 原文网址:繁體中文 English 首页 走进龙人 服务项目 成功案例 技术支持与下载 新闻中心 联系我们下载首页 最新资讯 推荐资料 PCB技术 PCB软件 IC芯片解密 SMT技术 电路板维修 嵌入式开发 下载分类 每天更新窗体顶端软件文章 窗体底端热门搜索: PCB抄板 芯片解密 样机制作 抄板软件 嵌入式 IC资料 PCB设计网站首页 > 技术支持与下载 > 最新技术资料[嵌入式技术] > 正文推荐技术资料类别嵌入式技术 PCB抄板软件 基础知识 制造工艺 PCB板极设计 IC资料 PCB抄板 常用软件下载基于S3C2410的ADS7843触摸屏驱动程序设计 来源:Internet 发布者:站长 时间:2009-4-30 阅读:1308次触摸屏介绍 随着多媒体信息查询的与日俱增,人们越来越多地谈到触摸屏,因为触摸屏不仅适用于中国多媒体信息查询的国情,而且触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。
利用这种技术,我们用户只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直截了当,这种技术大大方便了那些不懂电脑操作的用户一、触摸屏的工作原理 为了操作上的方便,人们用触摸屏来代替鼠标或键盘工作时,我们必须首先用手指或其它物体触摸安装在显示器前端的触摸屏,然后系统根据手指触摸的图标或菜单位置来定位选择信息输入触摸屏由触摸检测部件和触摸屏控制器组成;触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受后送触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行 二、触摸屏的主要类型 从技术原理来区别触摸屏,可分为五个基本种类:矢量压力传感技术触摸屏、电阻技术触摸屏、电容技术触摸屏、红外线技术触摸屏、表面声波技术触摸屏本文主要介绍在三星S3C2410X微处理器的硬件平台上进行基于嵌入式Linux的触摸屏驱动程序设计1.硬件设计 SPI接口是Motorola推出的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏">触摸屏接口的ARM920T内核芯片,ADS7843为Burr-Brown生产的一款性能优异的触摸屏">触摸屏控制器。
本文采用SPI接口的触摸屏">触摸屏控制器ADS7843外接四线电阻式触摸屏">触摸屏,这种方式最显著的特点是响应速度更快、灵敏度更高,微处理器与触摸屏">触摸屏控制器间的通讯时间大大减少,提高了微处理器的效率ADS7843与S3C2410的硬件连接如图1所示,鉴于ADS7843差分工作模式的优点,在硬件电路中将其配置为差分模式图1触摸屏输入系统示意图2.嵌入式Linux系统下的驱动程序 设备驱动程序是Linux内核的重要组成部分,控制了操作系统和硬件设备之间的交互Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,成为设备文件应用程序可以打开、关闭、读写这些设备文件,对设备的操作就像操作普通的数据文件一样简便为开发便利、提高效率,本设计采用可安装模块方式开发调试触摸屏驱动程序 设备驱动在加载时首先需要调用入口函数init_module(),该函数完成设备驱动的初始化工作其中最重要的工作就是向内核注册该设备,对于字符设备调用register_chrdev()完成注册,对于块设备需要调用register_blkdev()完成注册注册成功后,该设备获得了系统分配的主设备号、自定义的次设备号,并建立起与文件系统的关联。
字符设备驱动程序向Linux内核注册登记时,在字符设备向量表chrdevs中增加一个device_struct数据结构条目,这个设备的主设备标识符用作这个向量表的索引向量表中的每一个条目,即一个device_struct数据结构包括两个元素:一个登记的设备驱动程序的名称的指针和一个指向一组文件操作的指针这块文件操作本身位于这个设备的字符设备驱动程序中,每一个都处理特定的文件操作,比如打开、读写和关闭所谓登记,就是将由模块提供的file_operations结构指针填入device_struct数据结构数组的某个表项登记以后,位于上层的模块(内核)可以“看见”这个模块了但是,应用程序却还不能“看见”它,因而还不能通过系统调用它要使应用程序能“看见”这个模块或者它所驱动的设备,就要在文件系统中为其创建一个代表它的节点通过系统调用mknod()创建代表此项设备的文件节点——设备入口点,就可使一项设备在系统中可见,成为应用程序可以访问的设备另外,设备驱动在卸载时需要回收相应的资源,令设备的相应寄存器值复位并从系统中注销该设备 Linux操作系统通过系统调用和硬件中断完成从用户空间到内核空间的控制转移。
设备驱动模块的功能就是扩展内核的功能,主要完成两部分任务:一个是系统调用,另一个是处理中断图2是一个设备驱动模块动态挂接、卸载和系统调用的全过程系统调用部分则是对设备的操作过程,比如open,read,write,ioctl等操作,设备驱动程序所提供的这组入口点由几个结构向系统进行说明,分别是file_operations数据结构、inode数据结构和file 数据结构内核内部通过file结构识别设备,通过file_operations数据结构提供文件系统的入口点函数,也就是访问设备驱动的函数,结构中的每一个成员都对应着一个系统调用在嵌入式系统的开发中,我们一般仅仅实现其中几个接口函数:read、write、open、ioctl及release就可以完成应用系统需要的功能写驱动程序的任务之一就是完成file_operations中的函数指针3.触摸屏驱动程序设计 触摸屏驱动程序中重要数据结构typedef struct { unsigned short pressure; unsigned short x; unsigned short y; unsigned short pad;} TS_RET; typedef struct { unsigned int PenStatus; TS_RET buf[MAX_TS_BUF]; unsigned int head, tail; wait_queue_head_t wq; spinlock_t lock; } TS_DEV; static struct file_operations s3c2410_fops = { owner: THIS_MODULE, open: s3c2410_ts_open, read: s3c2410_ts_read, release: s3c2410_ts_release,poll: s3c2410_ts_poll, }; 在程序中有三个重要的数据结构:用于表示笔触点数据信息的结构TS_RET,表示ADS7843中有关触摸屏控制器信息的结构TS_DEV,以及驱动程序与应用程序的接口file_operations结构的s3c2410_fops。
TS_RET结构体中的信息就是驱动程序提供给上层应用程序使用的信息,用来存储触摸屏的返回值上层应用程序通过读接口,从底层驱动中读取信息,并根据得到的值进行其他方面的操作TS_DEV结构用于记录触摸屏运行的各种状态,PenStatus包括PEN_UP、PEN_DOWN和PEN_FLEETINGbuf[MAX_TS_BUF]是用来存放数据信息的事件队列,head、tail分别指向事件队列的头和尾程序中的笔事件队列是一个环形结构,当有事件加入时,队列头加一,当有事件被取走时,队列尾加一,当头尾位置指针一致时读取笔事件的信息,进程会被安排进入睡眠wq等待队列,包含一个锁变量和一个正在睡眠进程链表当有好几个进程都在等待某件事时,Linux会把这些进程记录到这个等待队列它的作用是当没有笔触事件发生时,阻塞上层的读操作,直到有笔触事件发生lock使用自旋锁,自旋锁是基于共享变量来工作的,函数可以通过给某个变量设置一个特殊值来获得锁而其他需要锁的函数则会循环查询锁是否可用MAX_TS_BUF的值为16,即在没有被读取之前,系统缓冲区中最多可以存放16个笔触数据信息 s3c2410_fops就是内核对驱动的调用接口,完成了将驱动函数映射为标准接口。
上面的这种特殊表示方法不是标准C的语法,而是GNU编译器的一种特殊扩展,它使用名字进行结构字段的初始化,它的好处体现在结构清晰,易于理解,并且避免了结构发生变化带来的许多问题init_module函数 这是模块的入口函数在函数内部通过s3c2410_ts_init( )实现模块的初始化工作在本设计中设备与系统之间以中断方式进行数据交换整个触摸屏">触摸屏的驱动程序处理比较复杂,而且耗时较长,因而触摸屏">触摸屏驱动程序不可能在中断服务程序中完成在Linux操作系统中一般把中断处理切为两个部分或两半中断处理程序是上半部——接收到一个中断,它就立即开始执行,但只做有严格时限的工作,例如对接收的中断进行应答或复位硬件这些工作都是在所有中断被禁止的情况下完成的,能够被允许稍后完成的工作会推迟到下半部去在Linux中下半部的实现有多种机制按触摸屏">触摸屏时,从ADS7843输出的数值有一个抖动过程,即从ADS7846输出的数值有一个不稳定时期,这个过程大约为10ms所以中断处理程序的下半部处理函数采用内核定时器机制,使下半部在中断发生50ms后再作处理这样有效地避开了ADS7843输出值的不稳定时期,使中断服务程序和中断处理任务串行化,达到了处理时间较长的触摸屏">触摸屏事件的目的。
驱动程序通过request_irq函数注册并激活一个中断处理程序,以便处理中断图2 设备驱动在内核中的挂接、卸载和系统调用过程 int reguest_irq(unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long irq_flags, const char *dev_name, void *dev_id)参数irq表示所要申请的中断号;handler为向系统登记的中断处理子程序,中断产生时由系统来调用;dev_name为设备名;dev_id为申请时告诉系统的设备标识符;irq_flags是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是中断处理程序是快速处理程序还是慢速处理程序 本设计中触摸屏">触摸屏控制器ADS7843的中断输出通过外部中断5接在中断控制器上,当触摸屏">触摸屏上有触摸事件发生时,会引发中断号为IRQ_EINT5的中断服务程序s3c2410_isr_tc()图3所示为该中断处理程序的流程图图3触摸屏硬件中断处理程序流程图 在s3c2410_isr_tc()中设定了定时器的定时时间为50ms,并立即激活。
因此有触摸屏">触摸屏硬件中断的情况下50ms后就会引发定时中断,中断服务程序为ts_timer_handler(),这个程序实现了触摸屏">触摸屏中断的下半部,即在过了抖动时间之后如果触摸屏">触摸屏确实有有效事件发生则采集触摸屏">触摸屏坐标,并将定时器的时间重新设为100ms并重新激活,这样做的目的是如果触摸笔是拖动的情况,以后每100ms采集一次坐标值,并存入缓冲区,如果不是拖动在采集一次坐标值之后,在第二次进入ts_timer_handler()时,查询管脚的状态值,则变为高电平,就将触摸屏">触摸屏状态tsdev.PenStatus设为PEN_UP,并释放定时器,为下次触摸屏">触摸屏事件做好准备,定时中断服务程序流程图如图4所示图4 定时中断服务程序流程图 在s3c2410_ts_init()中的另一个重要任务是执行接口函数s3c2410_ts_open(),在这个函数中初始化缓冲区的头尾指针、触摸屏状态变量及触摸屏事件等待队列module_exit() 该函数调用s3c2410_ts_exit(),主要任务是撤销驱动程序向内核的登记以及释放申请的中断资源接口函数s3c2410_ts_read( ) 这个函数实现的任务是将事件队列从设备缓存中读到用户空间的数据缓存中。
实现的过程主要是通过一个循环,只有在事件队列的头、尾指针不重合时,才能成功的从tsdev.tail指向的队列尾部读取到一组触摸信息数据,并退出循环否则调用读取函数的进程就要进入睡眠坐标读取函数s3c2410_get_XY() 在定时器中断处理程序中,当查询到与相连的EINT5/GPF5为低电平时,即表示有有效事件,应该调用s3c2410_get_XY()函数采集笔触信息ADS7843有多种转换时序,时序规定了芯片与设备及CPU间是如何配合工作的设计中采用16个时钟周期启动一次转换的坐标转换方式ADS7843的操作时序如图5所示坐标的读取是通过多次采集取平均值的方法,循环过程中的每一步都在8个时钟周期内完成,数据的处理严格按照时序进行,Y坐标的采集与X坐标类似结束语: 触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备触摸屏在我国的应用范围非常广阔,主要是公共信息的查询;如电信局、税务局、银行、电力等部门的业务查询;城市街头的信息查询;此外应用于领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。
将来,触摸屏还要走入家庭打印本页 | 关闭窗口 | 收藏本文热门下载推荐Cadence OrCAD 10.5 单片机反编译工具 POWERPCB2005 SP2 完全版 Genesis 2000软件下载 相关文章推荐· ·基板或层压后的多层.. · ·印制板制造过程基板.. · ·印制线路板切片的设.. · ·PCB抄板信号隔离.. · ·PCB板设计制作术.. · ·PCB板设计制作术.. · ·PCB文件PROT.. · ·高速PCB设计(二.. · ·Allegro中元.. · ·PCB抄板之PCB.. · ·高速PCB设计指南.. · ·PCB与电子产品设.. · ·pcb抄板技术:p.. · ·PCB抄板专家详解.. 网站地图联系龙人法律声明友情链接版权所有@广东龙人计算机系统工程有限公司 主要服务:PCB抄板|芯片解密 粤ICP备08012900号 。