基于单片机 USB和通信的简易阅读器设计Word格式文档下载.docx
- 文档编号:22285082
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:17
- 大小:446.46KB
基于单片机 USB和通信的简易阅读器设计Word格式文档下载.docx
《基于单片机 USB和通信的简易阅读器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机 USB和通信的简易阅读器设计Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
3.1主要元件8
3.2S3C2410LCD控制器的电路设计8
3.3S3C2410的LCD控制器寄存器操作和设置9
3.43C2410与LCD的接口电路9
3.4.1PDA的触摸屏设计11
3.4.2对触摸屏电路的设计要求11
3.4.3PDA的键盘电路设计12
第四章系统软件设计15
4.1程序流程图15
4.2分析驱动15
4.3触摸屏设备驱动中数据结构15
4.4触摸屏驱动模块加载和卸载函数17
4.5触摸屏设备驱动的读函数18
4.6触摸屏设备驱动的轮询与异步通知19
第五章调试20
结束语22
致谢23
参考文献24
第一章
1.1课题背景
随着信息家电和通讯设备的普及,作为与用户交互的终端媒介,触摸屏在生活中得到广泛的应用。
如何在系统中集成触摸屏模块以及在嵌入式操作系统中实现其驱动程序,都成为嵌入式系统设计者需要考虑的问题【3】。
嵌入式系统触摸屏的应用越来广泛,诸如以PDA为标志的数码产品逐渐选用LCD触摸屏作为系统的输入设备.触摸屏分为电阻、电容、表面声波、红外线扫描和矢量压力传感等,其中用的最普遍的是四线或五线电阻触摸屏【4】。
然而在日常使用的触摸产品中,或多或少发现有些触摸屏对触摸动作响应不够灵敏,甚者会引起死机,是什么导致这些现象的产生?
换言之,有没有更好触摸控制方式?
围绕这个疑问,本设计在介绍四线电阻式触摸屏工作原理的基础上,详细阐述了嵌入式微处理器(S3C2410)与触摸屏模块之间的硬件接口与驱动实现,并利用S3C2410的等待中断模式和自动X/Y坐标转换模式,实现了X/Y坐标的确定,完成对触摸屏的控制【5】。
1.2课程目的
本课程设计基于Linux操作系统以及EmestIII实验箱,利用触摸屏能正确返回触点坐标值及动作信息,坐标及动作的具体显示包括:
触摸笔动作,触点X坐标值,触点Y坐标值。
1.3课程设计的内容
本次课程设计成功地设计了基于ARM的嵌入式触摸屏。
主要内容有:
(1)Linux系统的正确移植和使用;
(2)根文件系统的正确移植和使用;
(3)驱动程序的编译与装载;
(4)嵌入式系统下应用程序的交叉编译及下载与调试。
第二章方案设计
2.1设计原理
触摸屏系统是一种人机交互设备,其结构如图2.1,将触摸屏安装在LCD显示屏上,配以相应的控制电路对触摸屏和LCD进行控制,用户通过触摸操作就可以实现同触摸屏系统相连接的设备进行信息交互。
设计采用四线电阻式触摸屏,包含两层透平、均匀导电的ITO层,分别作为X电极和Y电极,它们之间由细微绝缘点隔开。
X电极和Y电极的正负端由导电条分别从两端引出,且X电极和Y电极导电条的位置相互垂直,引出端X-、X+、Y-、Y+共4条线【6】。
图2.1四线电阻式触摸屏结构图
当有物体接触触摸屏表面并施以一定的压力时,上层的ITO导电层发生形变与下层ITO发生接触,形成可等效为图2.2的分压电路。
图2.2电阻触屏分压电路图
控制器通过下述方法即可确定触摸点位置:
(1)在X+电极施加驱动电压,X-电极接地,Y+作为引出端测量得到接触点的电压,触点电压与驱动电压之比等于触点X坐标与屏宽度之比,得到X坐标。
(2)在Y+电极施加驱动电压,Y-电极接地,X+作为引出端测量得到接触点的电压,触点电压与驱动电压之比等于触点Y坐标与屏高度之比,得到Y坐标。
因此,计算触摸点的坐标首先需要对触摸屏的引脚电平进行切换控制,使其处于合适的状态。
然后通过ADC转换采集到的接触点电压值,进行相应的计算。
触摸屏接口工作模式有以下几种:
(1)普通转换模式
普通转换模式(AUTO_PST=0,XY_PST=0)是用作一般目的下的ADC转换。
这个模式可以通过设置ADCCON和ADCTSC来进行对AD转换的初始化;
而后读取ADCDAT0(ADC数据寄存器0)的XPDATA域(普通ADC转换)的值来完成转换。
(2)分离的X/Y轴坐标转换模式:
X轴坐标转换和Y轴坐标转换。
X轴坐标转换(AUTO_PST=0且XY_PST=1)将X轴坐标转换数值写入到ADCDAT0寄存器的XPDATA域。
转换后,触摸屏接口将产生中断源(INT_ADC)到中断控制器。
Y轴坐标转换(AUTO_PST=0且XY_PST=2)将X轴坐标转换数值写入到ADCDAT1寄存器的YPDATA域。
(3)自动(连续)X/Y轴坐标转换模式。
自动(连续)X/Y轴坐标转换模式(AUTO_PST=1且XY_PST=0)以下面的步骤工作:
触摸屏控制器将自动地切换X轴坐标和Y轴坐标并读取两个坐标轴方向上的坐标。
触摸屏控制器自动将测量得到的X轴数据写入到ADCDAT0寄存器的XPDATA域,然后将测量到的Y轴数据到ADCDAT1的YPDATA域。
自动(连续)转换之后,触摸屏控制器产生中断源(INT_ADC)到中断控制器。
(4)等待中断模式
当触摸屏控制器处于等待中断模式下时,它实际上是在等待触摸笔的点击。
在触摸笔点击到触摸屏上时,控制器产生中断信号(INC_TC)。
中断产生后,就可以通过设置适当的转换模式(分离的X/Y轴坐标转换模式或自动X/Y轴坐标转换模式)来读取X和Y的位置。
(5)静态(Standby)模式
当ADCCON寄存器的STDBM位被设为1时,Standby模式被激活。
在该模式下,A/D转换操作停止,ADCDAT0寄存器的XPDATA域和ADCDAT1寄存器的YPDATA(正常ADC)域保持着先前转换所得的值【7】。
2.2总体设计方案
本文设计一个在ARM嵌入式平台上实现LCD12864嵌套多级菜单的电路,采用飞利浦公司的LPC2132为主控芯片,显示模块采用蓝屏、带字库的12864液晶,采用键盘扫描作为输入控制,本设计框图如图2.3所示。
图2.3
第三章硬件设计
3.1主要元件
S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,32位微控制器。
该处理器拥有:
独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer,I/O口,RTC,8路10位ADC,TouchScreen接口,IIC-BUS接口,IIS-BUS接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。
S3C2410处理器最高可运行在203MHz【9】。
3.2S3C2410LCD控制器的电路设计
3.2.1S3C2410的LCD控制器
S3C2410的LCD控制器用来传输图像数据并产生相应的控制信号,该控制器由REGBANK(控制寄存器组)、LCDCDMA(专用DMA)、VIDPCS(视频信号处理单元)、LPC3600和TIMEGEN(时序信号产生单元)组成
其中:
REGBANK包含17个可编程寄存器和几个256×
16的调色板存储器,用来配置LCD控制器,并设置相应的参数;
LCDCDMA提供了视频信号的快速传输通道,自动通过系统总线从系统帧缓存中取出视频数据,并传输到视频信号处理单元;
VIDPCS将专用DMA中取出的信号进行整形并提高驱动能力等处理后,输出到外部数据端口VD[23:
0];
TIMEGEN和LPC3600产生LCD屏所需要的控制时序
S3C2410LCD控制器可以产生用于控制TFT-LCD的时序信号,主要包括VCLK(像点时钟)、VDEN(数据有效信号)、VSYNC(垂直同步信号)、HSYNC(水平同步信号)、LEND(行结束信号)及LCD_PWREN(液晶屏使能信号)
VCLK信号是LCD控制器和LCD驱动器的像素时钟信号,LCD控制器在VCLK信号的上升沿处将数据送出,在VCLK信号的下降沿处被LCD控制器采样;
VSYNC信号是垂直同步信号(也称帧同步信号),用来指示新的一帧图像的开始;
HSYNC信号是水平同步信号(或行同步信号),用来给出新的一行扫描信号的开始;
VDEN信号是数据使能信号;
LEND信号是行扫描结束信号,LCD驱动器在每扫描一行像素后给出该信号;
LCD_PWREN信号用来控制LCD控制器的开或关,以便降低功耗,它需要LCD控制器硬件设计的支持
3.3S3C2410的LCD控制器寄存器操作和设置
S3C2410的LCD控制器内部设有较多的寄存器,其中与时序信号高度相关的寄存器位于寄存器组中的LCDCON1/2/3/4/5
本系统设计的LCD驱动器需要LCD控制器给出VCLK、VDEN、LCD_PWREN和VD[23:
0]信号
VCLK信号依赖于LCDCON1寄存器中CLKVAL和S3C2410的HCLK的取值,具体公式为:
VCLK(Hz)=HCLK/[(CLKVAL+1)×
2]
VSYNC和HSYNC的产生依赖于LCDCON2/3寄存器及HOZVAL和LINEVAL的配置,其中:
HOZVAL=水平像素数-1
LINEVAL=垂直显示尺寸-1
帧频率VSYNC与LCDCON1/2/3/4寄存器中的VSPW、VBPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL有关
3.43C2410与LCD的接口电路
S3C2410支持TFT/STN型的LCD,但是不能直接与LCD相连,需要接口板驱动,而本系统所用台湾建美电子股份有限公司的LCD集成了驱动电路,使得设计更为方便稳定,该LCD应用了最新的QVGA技术,分辨率是240×
320像素的液晶输出方式,使得显示的像素更高、更清晰
该LCD采用4线电阻触摸屏,4线电阻模拟量技术的2层透明金属层工作时每层均增加恒定电压:
一个竖直方向YD、YU,一个水平方向XR、XL,总共需4根电缆
其特点是:
高解析度,高速传输反应,表面硬度处理,减少擦伤、刮伤及防化学处理,具有光面及雾面处理,一次校正,稳定性高,永不漂移通过
JEMITEK的LCD通过50引脚的插座与S3C2410接口电路连接,如图3.1所示
图3-1
3.4.1PDA的触摸屏设计
在PDA中,实现PDA与人的交互非常重要,在普通PC机上人与机器的交互基本上都是通过键盘或鼠标,但在PDA中,为系统配备一个键盘或鼠标显然带来很多不便
因此,现在绝大部分PDA都配备有触摸屏
触摸屏是透明的,一般情况下都是与LCD粘在一起,当用户在触摸屏上点击时,系统可以得到点击的位置,将该位置坐标换算到LCD坐标,就可以实现用户与机器的交互
触摸屏的结构如图3.2所示
图3-2
当用户点击触屏时,顶层和底层通过中间的导通层连接,如果想测X方向的坐标,则在X+和X-两极加上电压,从Y+或Y-取出电压,根据取出的电压可以得到用户点击的X方向的坐标
当测Y方向的坐标时实现方式一样
触摸屏电路接口看上去很简单,但如果不加注意,会带来很多问题,例如采样不准、速度上不来,往往这些又是无法容忍的,因为触摸屏是产品与用户交互的界面,直接影响到产品的形象
3.4.2对触摸屏电路的设计要求
a)触摸屏控制器电路模拟部分供电建议单独选用一个LDO来提供;
b)触摸屏控制器电路要进行地分割,即模拟地和数字地分开,采用单点接地;
c)布线时触摸屏控制器电路的模拟部分一定要独占一部分空间,不要与其他电路及信号混合到一起,特别要远离强电磁和电场辐射源,布线的路径要清晰;
d)触摸屏接口要有滤波措施,布线时注意器件的布局,要符合滤波器件的布局原则
图3-3为触摸屏的参考设计电路
图3-3
3.4.3PDA的键盘电路设计
PDA键盘采用4×
5矩阵式键盘扫描方式连接,采用软件去抖,节省成本,根据需求共有下列按键:
数字键0~9,*,#,BACK,SELECT,OK,四向键,Power键
键盘电路如图4所示
除了Power键,其他按键(共16键加四向键)按矩阵式键盘来实现
键盘单独定制为键盘FPCB(柔性印制电路板),目前的设计中采用的是5行行输入和4行列输入,共20个键
Power键和挂机键复用,采用KEYON资源,利用长按和短按方法区分实现;
其余19个键利用键盘矩阵扫描方式实现;
键盘FPCB与主板的连接,采用20板对板连接器
根据对键盘FPCB上器件的高度限制(不超过0.5mm),键盘背光灯和限流电阻均采用薄膜封装
把限流电路放置在键盘FPCB上,主要是避免背光灯不均匀性,影响视觉效果
键盘背光信号采用PWM(脉宽调制)背光信号,4个背光灯共用一组背光信号,由于每个背光灯的标准额定电流为5mA,选用限流电阻值68Ω
每组背光信号驱动电流为30mA,4个背光灯需20mA,在背光信号驱动能力之内
在电路设计过程中,由于键盘与人体接触比较平凡,而且人体经常携带电压很高的静电,特别是在干燥的冬天,而静电常常会使整个系统死机甚至还有可能击穿芯片,所以在设计中按键的两端必须并联静电放针电路,防止因静电损害设备
第四章系统软件设计
4.1程序流程图
程序流程图如图4.3所示。
图4.3程序流程图
4.2分析驱动
触摸屏驱动在/kernel/drivers/char/s3c2410-ts.c文件中。
4.3触摸屏设备驱动中数据结构
(1)触摸屏的file_operations
staticstructfile_operationss3c2410_fops={
owner:
THIS_MODULE,
open:
s3c2410_ts_open,
read:
s3c2410_ts_read,
release:
s3c2410_ts_release,
#ifdefUSE_ASYNC
fasync:
s3c2410_ts_fasync,//异步通知
#endif
poll:
s3c2410_ts_poll,//轮询
};
2)触摸屏设备结构体的成员与按键设备结构体的成员类似,也包含一个缓冲区,同时包括自旋锁、等待队列和fasync_struct指针。
typedefstruct{
unsignedintpenStatus;
/*PEN_UP,PEN_DOWN,PEN_SAMPLE
TS_RETbuf[MAX_TS_BUF];
/*protectagainstoverrun(环形缓冲区)*/
unsignedinthead,tail;
/*headandtailforqueuedevents(环形缓冲区的头尾)*/
wait_queue_head_twq;
//*等待队列数据结构
spinlock_tlock;
//*自旋锁
structfasync_struct*aq;
#ifdefCONFIG_PM
structpm_dev*pm_dev;
//友善之臂专有的,我后面的代码删除了这段
}TS_DEV;
(3)触摸屏结构体中包含的TS_RET值的类型定义,包含X、Y坐标和状态(PEN_DOWN、PEN_UP)等信息,这个信息会在用户读取触摸信息时复制到用户空间。
unsignedshortpressure;
//*压力,这里可定义为笔按下,笔抬起,笔拖曳
unsignedshortx;
//*横坐标的采样值
unsignedshorty;
//*纵坐标的采样值
unsignedshortpad;
//*填充位
}TS_RET;
(4)在触摸屏设备驱动中,将实现open()、release()、read()、fasync()和poll()函数,因此,其文件操作结构体定义。
触摸屏驱动文件操作结构体:
staticstructfile_operationss3c2410_fops={}
4.4触摸屏驱动模块加载和卸载函数
(1)在触摸屏设备驱动的模块加载函数中,要完成申请设备号、添加cdev、申请中断、设置触摸屏控制引脚(YPON、YMON、XPON、XMON)等多项工作,
触摸屏设备驱动的模块加载函数:
staticint__inits3c2410_ts_init(void)
触摸屏设备驱动模块卸载函数:
staticvoid__exits3c2410_ts_exit(void)
(2)可知触摸屏驱动中会产生两类中断,一类是触点中断(INT-TC),一类是X/Y位置转换中断(INT-ADC)。
在前一类中断发生后,若之前处于PEN_UP状态,则应该启动X/Y位置转换。
另外,将抬起中断也放在INT-TC处理程序中,它会调用tsEvent()完成等待队列和信号的释放。
触摸屏设备驱动的触点/抬起中断处理程序:
staticvoids3c2410_isr_tc(intirq,void*dev_id,structpt_regs*reg)
当X/Y位置转换中断发生后,应读取X、Y的坐标值,填入缓冲区,触摸屏设备驱动X/Y位置转换中断处理程序:
staticvoids3c2410_isr_adc(intirq,void*dev_id,structpt_regs*reg)
触摸屏设备驱动中获得X、Y坐标:
staticinlinevoids3c2410_get_XY(void)
(3)tsEvent最终为tsEvent_raw(),这个函数很关键,当处于PEN_DOWN状态时调用该函数,它会完成缓冲区的填充、等待队列的唤醒以及异步通知信号的释放;
否则(处于PEN_UP状态),将缓冲区头清0,也唤醒等待队列并释放信号,
触摸屏设备驱动的tsEvent_raw()函数:
staticvoidtsEvent_raw(void)
(4)在包含了对拖动轨迹支持的情况下,定时器会被启用,周期为10ms,在每次定时器处理函数被引发时,调用start_ts_adc()开始X/Y位置转换过程,触摸屏设备驱动的定时器处理函数:
staticvoidts_timer_handler(unsignedlongdata)
(5)在触摸屏设备驱动的打开函数中,应初始化缓冲区、penStatus和定期器、等待队列及tsEvent时间处理函数指针,触摸屏设备驱动的打开函数:
staticints3c2410_ts_open(structinode*inode,structfile*filp)
(6)触摸屏设备驱动的释放函数非常简单,删除为用于拖动轨迹所使用的定时器即可,触摸屏设备驱动的释放函数:
staticints3c2410_ts_release(structinode*inode,structfile*filp)
4.5触摸屏设备驱动的读函数
触摸屏设备驱动的读函数实现缓冲区中信息向用户空间的复制,当缓冲区有内容时,直接复制;
否则,如果用户阻塞访问触摸屏,则进程在等待队列上睡眠,否则,立即返回-EAGAIN,触摸屏设备驱动的读函数:
staticssize_ts3c2410_ts_read(structfile*filp,char*buffer,size_tcount,loff_t*ppos)
4.6触摸屏设备驱动的轮询与异步通知
在触摸屏设备驱动中,通过s3c2410_ts_poll()函数实现了轮询接口,这个函数的实现非常简单。
它将等待队列添加到poll_table,当缓冲区有数据时,返回资源可读取标志,否则返回0,触摸屏设备驱动的poll()函数:
staticunsignedints3c2410_ts_poll(structfile*filp,structpoll_table_struct*wait)
而为了实现触摸屏设备驱动对应用程序的异步通知,设备驱动中要实现s3c2410_ts_fasync()函数,触摸屏设备驱动的fasync()函数:
staticints3c2410_ts_fasync(i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于单片机 USB和通信的简易阅读器设计 基于 单片机 USB 通信 简易 阅读器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)