欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第八章ADC和触摸屏接口与应用课件.ppt

    • 资源ID:1474204       资源大小:2.01MB        全文页数:70页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第八章ADC和触摸屏接口与应用课件.ppt

    第8章 ADC和触摸屏接口与应用,2,嵌入式系统中的信号测量一般都会用到ADC,ADC测量作为嵌入式系统开发设计中不可缺少的一个部分存在于各种测量装置中。在ARM Cortex-A8中,触摸屏接口也要用到相应的ADC口来进行相应的工作,因此,对于嵌入式开发人员而言,ADC的学习是很重要的。ADC工作原理。触摸屏结构和工作原理。触摸屏控制实例。,本章内容:,8.1 ADC工作原理,ADC是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。A/D转换器的类型有逐位比较型、积分型、计数型、并行比较型、电压-频率型,应主要根据使用场合的具体要求,安装转换速度、精度、价格、功能和接口条件等因素来决定选择何种类型。常用的AD转换器有以下两种。,1. 双积分的AD转换器双积分式也称为二重积分式,其实质是测量和比较连个积分的时间,一个是对模拟输入电压积分的时间,此时间往往是固定的;另一个是以充电后的电压为初值,对参考电压反向积分,积分电容被放电至零所需的时间。模拟输入电压与参考电压之比,等于上述两个时间之比。,双积分的AD转换器,由于双积分型AD转换是测量输入电压在T0时间内的平均值,所以对常态干扰有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。双积分型的AD转换器电路简单,抗干扰能力强,精度高,这是突出的优点。但转换速度比较慢,常用的AD转换芯片的转换时间为毫秒级。因此适用于模拟信号变换缓慢,采样速率要求较低,而对精度要求较高,或现场干扰较严重的场合,例如,在数字电压表中长被采用。,2. 逐次逼近型的AD转换器逐次逼近型的AD转换器,其应用比积分型更为广泛,主要有逐次逼近寄存器SAR、DA转换器、比较器,以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR寄存器中的数字量经DA转换后得到电压与待转换模拟电压进行比较。比较时,先用SAR的最高位开始,逐次确定各位的数码影视“1”还是“0”,其工作过程如下:转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高位为“1”,其余位为0,此试探值经DA转换成Vc,然后将Vc与模拟输入电压Vx比较,如果VxVc,说明SAR最高位的“1”应予保留;如果VxV c,说明SAR该位应予清零。然后对SAR次高位置1,依上述方法进行DA转换和比较。如此重复上述过程,直至确定SAR寄存器的最低位为止。过程结束后,状态线改变状态,表名已完成一次转换。,最后,逐次逼近寄存器SAR中的内容就是与输入模拟量相对应的二进制数字量。显然AD转换器的位数N决定于SAR的位数和DA的位数,转换结果能否准确逼近模拟信号,主要取决于SAR和DA的位数。位数越多,越能准确逼近模拟量,但转换所需的时间也越长。逐次逼近型AD转换器特点:转换速度较快,在1-100us以内;分辨率可以达18位,特别适用于工业控制系统。转换时间固定,不随输入信号的变化而变化;抗干扰能力相对积分型的差。,8.2 触摸屏结构和工作原理,触摸屏作为一种最新的计算机输入设备,是目前最简单、方便、自然的一种人机交互方式。触摸屏应用领域非常广阔,主要是公共信息的查询,如电信局、税务局、银行、电力等部门的业务查询;城市街头的信息查询;此外也常用于领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。现在,触摸屏已经走入家庭。随着城市向信息化方向发展和电脑网络在国民生活中的渗透,信息查询都已用触摸屏实现,即显示内容可触摸的形式出现。,8.2.1 触摸屏的工作原理,按照触摸屏的工作原理和传输信息的介质,分为四类:分别为电阻式、电容式、红外线式和表面声波式。1. 电阻式触摸屏 电阻式触摸屏是利用压力感应进行控制,其主要部分是一块玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发送变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触器并计算出(X,Y)的位置。,2. 电容式触摸屏电容式触摸屏是利用人体的电流感应进行工作的。电容式触摸屏是一块四层复合玻璃屏,玻璃层的内表面和夹层个涂油一层ITO,最外层是一薄层矽土玻璃保护层,夹层ITO涂层作为工作面,四个角上引出四个电极,内层ITO为屏蔽层以保证良好的工作环境。电容触摸屏的透光率和清晰度优于四线电阻屏,当然还不能和表面声波屏与五线电阻屏相比。电容屏反光严重,而且触摸屏对各波长光的折光率 不均匀,存在色彩失真的问题,由于光线在各层间的反射,还造成图像字符的模糊。,电容屏更主要的缺点是漂移,当环境温度、湿度改变时,环境电场发生改变时,都会引起电容屏的漂移,造成触摸点判断不准确。例如,开机后显示器温度上升会造成漂移,用户触摸屏幕的同时另一只手或身体一侧靠近显示器会漂移;电容触摸屏附近较大的物体搬移后会漂移,触摸时如果有人围过来观看也会引起漂移。电容屏的漂移原因属于技术上的先天不足,环境电势面虽然与电容触摸屏离得很远,却比手指头面积大得多,它们会直接影响触摸位置的测定。,3. 红外线式触摸屏红外线式触摸屏是利用X、Y方向上密布的红外线矩阵来检测并定位用户的触摸。红外线式触摸屏在显示器的前面安装一个电路板外框,电路板在屏幕四边排布红外线发射管和红外接收管,一一对应形成横竖两条红外线,因而可以判断出触摸点在屏幕的位置。任何触摸物理都可改变触电上的红外线而实现触摸屏操作。,早期观念上,红外线式触摸屏存在分辨率低、触摸方式受限制和易受环境干扰而误动作等技术上的局限,因而一度淡出过市场。此外第二代红外屏部分解决了抗光干扰的问题,第三代和第四代在提升分辨率和稳定性能上也有所改进,但都没有在关键指标或综合性能上有质的飞跃。但是,了解触摸屏技术的人都知道,红外线式触摸屏不受电流、电压和静电干扰,适宜恶劣的环境条件,红外技术是触摸屏产品最终的发展趋势。采用声学和其他材料学技术的触摸屏都有其难以逾越的屏障,如单一传感器的受损、老化,触摸界面怕受污染、破坏性使用,维护繁琐等问题。红外触摸屏只要真正实现了高稳定性能和高分辨率,必将替代其他技术产品而成为触摸屏市场主流。,4. 表面声波式触摸屏表面声波触摸屏的触摸屏部分可以是一块平面、球面或是柱面的玻璃平板,安装在CRT、LED、LCD或者等离子显示器屏幕的前面。玻璃屏的左上角和右下角各固定了竖直和水平方向的超声波发射换能器,右上角则固定了两个相应的超声波接收换能器。环境屏的四个周边则刻有45度角由疏到密间隔非常精密的反射条纹。表面触摸屏的工作原理如图所示。,以右下角的X轴发射换能器为例,发射换能器把控制器通过触摸屏电缆送来的电信号转化为声波能量向左方表面传递,然后由玻璃板下边的一组精密反射条纹把声波能量反射成向上的均匀面传递,声波能量经过屏体表面,再由上边的反射条纹聚成向右的线传播给X轴的接收换能器,接收换能器将返回的表面声波能量变为电信号。当发射换能器发射一个窄脉冲后,声波能量历经不同途径到达接收换能器,走最右边的最早到达,走最左边的最晚到达,早到达的和晚到达的这些声波能量加成一个较宽的波形信号,不难看出,接收信号集合了所有在X轴方向历经长短不同路径回归的声波能量,它们在Y轴走过的路程是相同的。但在X轴上,最远的比最近的多走了两倍X轴最大距离。因此这个波形信号的时间轴反映各原始波形叠加前的位置,也就是X轴坐标。,表面式波式触摸屏的优点是清晰度较高,透光率好;高度耐久,抗刮伤性良好(相对与电阻、电容等有表面度膜);反应灵敏;不受温度、湿度等环境因素影响;分辨率高,寿命长;透光率高(92%),能保持清晰透亮的图像质量;没有漂移,只需安装时一次校正;有第三轴(即重力轴)响应,目前在公共场所使用较多。,8.3 S5PV210 中的触摸屏接口,S5PV210的CMOS魔术转换器可以接收10个通道的模拟信号输入,并将它们转换为10位或12位的二进制数据。在5MHZ的AD转换时钟下,最大的转换速率可达到1MSPS(每秒采样的次数)。ADC支持低功耗模式。S5PV210的触摸屏接口可以控制输入引脚(XP、XM、YP和YM)来获得外部触摸屏设备上的X、Y位置。触摸屏接口包括三个主要模块,及触摸屏控制逻辑、ADC接口逻辑和中断生成逻辑;有两套触摸屏接口,共享一个ADC。,S5PV210的ADC和触摸屏接口具有以下特征。分辨率:10位/12位(可选)微分非线性误差:1LSB(最大)积分非线性误差:4.0LSB(最大)。最大:1MSPS转换率。低功耗。3.3V电源电压。模拟输入范围为0-3.3V。芯片采样和保持功能。正常模式转换。单独的X、Y位置转换模式。自动的X、Y位置转换模式。等待中的模式。IDLE、DiDLED、STOP和DSTOP模式唤醒源。两个触摸屏接口。,图 S5PV210的ADC和触摸屏接口结构,8.3.1 ADC工作模式,(1)普通转换模式。用于一般的AD转换,不用于触摸屏。(2)分离的X、Y坐标转换模式。分两步进行X、Y坐标转换,其转换结果分别存于TSDATXn和TSDATYn中,并且均会产生INT_ADC中断请求。(3)连续X、Y坐标转换模式。X坐标转换结束后自动启动Y坐标转换,其转换结果分别存于TSDATXn中和TSDATYn中,并且会产生INT_ADC中断请求。(4)等待中断转换模式。在该模式下,转换器等待使用者按压触摸屏,一旦触摸屏被按压,则产生INT_ADC触摸屏中断请求。,8.3.2 触摸屏接口模式,当PCLK频率为66MHZ和预分频器值为65,总共12位转换时间如下:AD转换器频率=66 MHz/(65+1)=1 MHz转换时间=1/(1 MHz/5 cycles)=1/200 kHz=5 us注意,这里的AD转换器设计在最大5MHz时钟下工作,所以转换率最高达到1 MSPS。触摸屏接口模式可以分为正常转换模式,分离X、Y坐标转换模式,自动(连续)X、Y坐标转换模式,等待中断模式和备用模式五种。,1. 普通转换模式在普通转换模式下,AIN0-AIN9的操作是相同的。初始化时,设置ADC控制寄存器TSADCCON0和触摸屏控制寄存器TSCONn ,把所有的开关和下拉电阻关闭。转换后的数据可以从ADC转换数据X寄存器中读出。注意:在普通转换模式下,TSADCCON1是不用的,2. 分离的X、Y坐标转换模式这种模式包含两种状态,即X坐标测量状态和Y坐标测量状态。X坐标测量状态。X坐标测量状态操作步骤:TSCONn的值设为0 x69.TSADCCONn设为开始转换。X坐标转换完成后产生中断请求。从TSDATXn中读出转换后的X坐标。Y坐标转换操作步骤与X坐标类似,不同的是,TSCONn的值应设为0 x9a。,3. 连续X、Y坐标转换模式将TSCONn的值设为0 x5c启动该模式,X坐标转换结束后自动启动Y坐标转换,其转换结果分别存于TSDATXn和TSDATYn中,并且会产生INT_ADC中断请求。4. 等待中断转换模式当笔尖落下时触摸屏控制器产生中断(INT_TC)信号。TSCON7:0的值应设为0 xd3,此时,下拉电阻激活,XP禁用,XM激活。触摸屏控制器产生中断信号后,必须清除等待中断模式。,5. 备用模式当TSADCCON0的TSSEL位为0、STANDBY位为1时,备用模式激活。在此模式下,AD转换操作停止,TSDATXn和TSDATYn寄存器保留先前的转换数据。进行编程时注意:(1)AD转换的数据可以通过中断或查询的方式来访问。(2)提供另外的开启AD转换的方法。(3)如果在IDLE、DIDLE、STOP和DSTOP模式下使用INT_PEN中断作为唤醒源,TSCONn的XY_PST位应该设为等待终端模式,即11。,8.4 硬件连接,触摸屏硬件连接如图:,触摸屏与CPU连接的引脚功能:触摸屏工作原理:测量X坐标时,从XP输出地电压给X+端,从XM输出的地电压给X-端;从YP输入按压点电压。测量Y坐标时,从YP输出低电压给Y+端,从YM输出的地电压给Y-端;从输入按压点电压。,8.5 ADC及触摸屏接口特殊寄存器,以下讲解以TS0为例,TS1的设置与TS0类似,详细可参看S5pv210数据手册。1. ADC控制寄存器TSADCCON0ADC控制寄存器TSADCCON0是可以进行读写的寄存器,地址为0 xE170_0000,复位值为0 x0000_3FC4.在这个寄存器中,可以设置选择接入的触摸屏(0/1),还可以设定转换值的位数(10/12位)。注意(1)当等待触摸屏中断时,XP_SEN位应该置1且PULL_UP 位应该置0.(2)仅在自动连续X、Y坐标转换中,AUTO_PST位应该设置为1.,ADC及触摸屏接口特殊寄存器,1. ADC控制寄存器TSADCCON0 ADC控制寄存器TSADCCON0是可以进行读写的寄存器,地址为0 xE170_0000,复位值为0 x0000_3FC4.在这个寄存器中,我们可以设置选择接入的触摸屏(0/1),还可以设定转换值的位数(10/12位)。ADCCON寄存器的位定义详情如下图所示。,2 ADC触摸屏控制寄存器TSCON0ADC触摸屏控制寄存器ADCTSC是可以进行读写的寄存器,地址为0 xE170_0004,复位值为0 x0000_0058.TSCON0寄存器的位定义详情查看S5PV210的数据手册。注意:(1)当等待触摸屏中断时,XP_SEN位应该置1且PULL_UP为应该置0.(2)仅在自动连续X、Y坐标转换中,AUTO_PST位应该置1.,3. ADC延时寄存器TSDLY0ADC开始延时寄存器ADCDLY是可以进行读写的寄存器,地址为0 xE170_0008,复位值为0 x0000_00FF.ADCDLY寄存器的位定义详情可参看数据手册。注意:在ADC转换前,触摸屏使用晶振时钟,在AD转换中使用PCLK(最大66MHZ)。,4. ADC转换数据X寄存器TSDATX0和ADC转换数据Y寄存器TSDATY0这两个寄存器是只读寄存器,地址分别是0 xE170_000C和0 xE170_0010,复位值不确定。,5. 模拟输入通道选择寄存器ADCMUXADCMUX是可以进行读写的寄存器,地址为0 xE170_001C,复位值为0 x0000_0000。注意:(1)当触摸屏不使用时,触摸屏接口(AIN2-AIN9)可以作为ADC模拟输入端口使用。(2)TSADC被设为分离X、Y坐标转换模式和连续X、Y坐标转换模式时,SEL_MUX的值是无效的。,8.6 触摸屏控制实例,AD转换器的使用基本上还是通过配置寄存器来实现的,就实现方式而言,可以选择轮询或者中断的方式。在轮询方式下,程序配置完寄存器后,需要不断地查询AD转换的状态寄存器以确定转换是否完成,然后将转换得到的数据进行输出显示。这种方式效率十分低,但是对于低速采集系统(温度、直流电压测量系统)来说这样做不仅简单,而且也能达到要求。在中断模式下,当采集使能位使能后,一旦转换完成系统就会进入中断模式,这时就可以获取转换数据。当采集一定频率的模拟信号时可以考虑使用这种方式。,下面来看看配置相关寄存器实现上述功能。首先,完成寄存器的宏定义,程序代码如下,主要是ADC和触摸屏控制中的相关寄存器的地址的宏定义,以便在程序设计过程中对其的访问。/第三组矢量中断选择寄存器 快中断或普通中断模式 默认普通中断#define VIC2INTSELECT *(volatile unsigned int *)0 xF220000C)#define VIC3INTSELECT *(volatile unsigned int *)0 xF230000C),/第三组矢量中断使能寄存器 8、9位为ADC触摸屏中断#define VIC2INTENCLEAR *(volatile unsigned int *)0 xF2200014)#define VIC3INTENCLEAR *(volatile unsigned int *)0 xF2300014)#define VIC2INTENABLE *(volatile unsigned int *)0 xF2200010)#define VIC3INTENABLE *(volatile unsigned int *)0 xF2300010)#define VIC3VECTADDR0 *(volatile unsigned int *)0 xF2300100)#define VIC3VECTADDR1 *(volatile unsigned int *)0 xF2300104)#define VIC3VECTADDR2 *(volatile unsigned int *)0 xF2300108)#define VIC3VECTADDR3 *(volatile unsigned int *)0 xF230010C)#define VIC3VECTADDR4 *(volatile unsigned int *)0 xF2300110)#define VIC3VECTADDR5 *(volatile unsigned int *)0 xF2300114)#define VIC3VECTADDR6 *(volatile unsigned int *)0 xF2300118)#define VIC3VECTADDR7 *(volatile unsigned int *)0 xF230011C)#define VIC3VECTADDR8 *(volatile unsigned int *)0 xF2300120)#define VIC3VECTADDR9 *(volatile unsigned int *)0 xF2300124)#define VIC3VECTADDR10 *(volatile unsigned int *)0 xF2300128),#define VIC3VECTADDR3 *(volatile unsigned int *)0 xF230010C)#define VIC3VECTADDR4 *(volatile unsigned int *)0 xF2300110)#define VIC3VECTADDR5 *(volatile unsigned int *)0 xF2300114)#define VIC3VECTADDR6 *(volatile unsigned int *)0 xF2300118)#define VIC2ADDRESS *(volatile unsigned int *)0 xF2200F00)#define VIC3ADDRESS *(volatile unsigned int *)0 xF2300F00),/UART相关寄存器#define GPA0CON *(volatile unsigned int *)0 xE0200000)#define ULCON0 *(volatile unsigned int *)0 xE2900000)#define UCON0 *(volatile unsigned int *)0 xE2900004)#define GFCON0 *(volatile unsigned int *)0 xE29000008)#define UTRSTAT0 *(volatile unsigned int *) 0 xE2900010)#define UTXH0 *(volatile unsigned int *)0 x 0 xE2900020)#define URXH0 *(volatile unsigned int *)0 x 0 xE2900024)#define UBRDIV0 *(volatile unsigned int *) 0 xE2900028)#define UDIVSLOT0 *(volatile unsigned int *)0 xE290002C),/ADC相关寄存器#define TSADCCON0 *(volatile unsigned int *)0 xE1700000)#define TSADCCON1 *(volatile unsigned int *)0 xE1701000)#define TSCON1 *(volatile unsigned int *)0 xE1701004)#define TSDLY1 *(volatile unsigned int *)0 xE1701008)#define TSDATX1 *(volatile unsigned int *)0 xE170100C)#define TSDATY1 *(volatile unsigned int *)0 xE1701010)#define TSPENSTAT1 *(volatile unsigned int *)0 xE1701014)#define CLRINTADC1 *(volatile unsigned int *)0 xE1701018)#define CLRINTPEN1 *(volatile unsigned int *)0 xE1701020),触摸屏实验的主流代码如下:,extern void key_isr(void) /设置为外部可用标记,提供给.s文件使用/UART0初始化void uart_init( )/配置GPA0_0 为UART_0_RXD/配置GPA0_1 为UART_0_TXD GPA0CON ,void uart_send_byte(unsigned char byte) while(!(UTRSTAT0 /接收一字节数据,void uart_send_string( char *str) char *p =str; while (*p) uart_send_byte(*p+);void uart_send_num( unsigned int sum) char unit, tens, bunds, thund; unit = 0 + num%10;tens = 0 + num/10%10;hunds= 0 + num/100%10;thund= 0 + num/1000%10;Uart_send_byte(thund);Uart_send_byte(hunds);Uart_send_byte(tens);Uart_send_byte(unit);,Void adc_init() TSADCCON0 |=1 17; TSADCCON1=114 | 196 | 02; TSDLY1 =0XFFFF;TSCON1=0 xd3;Uart_send_string(“rinitadc finshn”); Void irq_int() VIC2INTENCLEAR |=0 x39;VIC3INTENCLEAR |=0 x39;VIC2INTSELECT |=(0 x39);VIC3INTSELECT |=(0 x39);VIC3INTENABLE |= 0 x39; ,Void key_handle( ) uart_send_string(“test key_handle”); VIC2ADDRESS =0; /清中断向量寄存器 VIC3ADDRESS =0;VIC3VECTADDR0 =0 xffffffff;VIC3VECTADDR1 =0 xffffffff;TSCON1=oxdc; /x/y设置为自动转换TSADCCON1 |=1;while(TSADCCON1 ,Int main() uart_init(); adc_init(); irq_init(); VIC3VECTADDR8 = (int)key_isr; VIC3VECTADDR9 = (int)key_isr; while(1); return 0;,我们可以看到,这里调用了Test_AdcTs()函数,其具体代码如下:Void Test_AdcTs(void) rADCDLY=50000; rADCCON=(114)+(ADCPRS6); Uart_printf(“nTouch Screen testn”);rADCTSC=0 xd3;pISR_ADC=(int) AdcTsAuto;rINTMSK=BIT_ADC;rINTSUBMSK=(BIT_SUB_TC);Uart_Printf(“nPress any key to quit!n”);Uart_Getch();rINTSUBMSK|=BIT_SUB_TC;rINTMSK|=BIT_ADC;Uart_Printf(“Touch Screen is Finished!n”);,Start.S文件代码如下:.global _start.global key_isr_start: ldr sp, =0 x40000000 ldr r0, =0 xE2700000 mov r1, #0 str r1, r0 msr r0, cpsr bic r0, r0, #0 x00000080 msr cpsr, r0 bl main,halt: b halt key_isr:;计算返回地址:PC的值等于当前执行的地址+8,当CPU正要执行某条指令(还未执行)时,;被中断,这时这条刚要执行的指令的地址刚好为PC-4. sub lr, lr, #4 stmfd sp!, r0-r12, lr bl key_handle;恢复现场 ldmfd sp!, r0-r12, pc. ;表示把spsr恢复到cpsr,8.7 滑动变阻器滑动实例,本小节通过滑动变阻器和ADC的实例来进一步学习ADC的使用。由电路图可以看到,ADC从该电路获取模拟数据的通道是ADCIN1,因此实现滑动变阻器的控制功能就是设置ADC的控制寄存器的SEL_MUX位为通道ADCIN1。,首先编写一个start.S文件,对程序的入口进行定义。.global _start 声明一个全局的标号 .global key_isr _start: 设置栈,以调用c函数 ldr sp, =0 x40000000 bl uart_init bl adc_init 开总中断 mrs r0, cpsr 读取cpsr寄存器中的值到r0 bic r0, r0, #0 x00000080 清除第7位,IRQ中断禁止位,写0使能IRQ msr cpsr, r0 ; 把修改好的r0的值重新协会cpsr bl main ; 跳转到C函数去执行 halt: b halt,为了更好的观察AD转换的效果,可使用UART通信将转换结果输出到终端上。程序如下:#define GPA0CON *(volatile unsigned int *)0 xE0200000) #define ULCON0 *(volatile unsigned int *)0 xE2900000) #define UCON0 *(volatile unsigned int *)0 xE2900004) #define UFCON0 *(volatile unsigned int *)0 xE2900008) #define UTRSTAT0 *(volatile unsigned int *)0 xE2900010) #define UTXH0 *(volatile unsigned int *)0 xE2900020) #define URXH0 *(volatile unsigned int *)0 xE2900024) #define UBRDIV0 *(volatile unsigned int *)0 xE2900028) #define UDIVSLOT0 *(volatile unsigned int *)0 xE290002C),/* * UART0初始化 */ void uart_init() /* * 配置GPA0_0为UART_0_RXD * 配置GPA0_1为UART_0_TXD */ GPA0CON ,/* * 波特率计算:115200bps * PCLK = 66MHz * DIV_VAL = (66000000/(115200 x 16)-1 = 35.8 - 1 = 34.8 * UBRDIV0 = 34 (DIV_VAL的整数部分) * (num of 1s in UDIVSLOTn)/16 = 0.8 (DIV_VAL的小数部分) * (num of 1s in UDIVSLOTn) = 12 * UDIVSLOT0 = 0 xDDDD (在数据手册上880页查表) */ UBRDIV0 = 34;/波特率分度值 UDIVSLOT0 = 0 xDDDD; void uart_send_byte(unsigned char byte) while (!(UTRSTAT0 /* 发送一字节数据 */ ,unsigned char uart_recv_byte() while (!(UTRSTAT0 ,void uart_send_num(unsigned int num)/发送数字char unit,tens,hunds,thund;unit = 0 + num%10;tens = 0 + num/10%10;hunds =0 + num/100%10;thund =0 + num/1000%10;uart_send_byte(thund);uart_send_byte(hunds);uart_send_byte(tens);uart_send_byte(unit);,最后是AD转换的实现,以及调试的主程序。寄存器宏定义的代码如下所示:/ADC相关寄存器#define TSADCCON0 (*(volatile unsigned int *)0 xE1700000)#define TSDATX0 (*(volatile unsigned int *)0 xE170000C)#define ADCMUX(*(volatile unsigned int *)0 xE170001C)void uart_send_byte(unsigned char byte); unsigned char uart_recv_byte(); void uart_send_string(char *str);void uart_send_num(unsigned int num);void adc_init()/初始化ADCTSADCCON0 = 114 | 496 | 23 | 02;ADCMUX = 0 x1;TSADCCON0 |= 0 x1;,void adc(void)while(TSADCCON0 ,void main(void)uart_send_byte(n);uart_send_byte(n);while(1)adc( );adc_init( );delay(30);,Makefile文件: adc.bin: start.o clock.o uart.o main.o arm-linux-ld -Ttext 0 x20000000 -o adc.elf $arm-linux-objcopy -O binary adc.elf $arm-linux-objdump -D adc.elf adc.dis %.o : %.carm-linux-gcc -c $ -o $%.o:%.Sarm-linux-gcc -c $ -o $clean:rm *.o *.elf *.bin *.dis,测试滑动变阻器的运行结果:将程序烧写到开发板并启动运行后,当转动滑动比租期的旋钮时,效果如下所示:# starting application at 0 x20000000R=0616R=0612R=0615R=0607R=0606R=0602R=0611R=0603,本章小结,本章主要介绍了嵌入式系统中最常用的一种信号接口ADC的使用,并且详细讲述了触摸屏的工作原理、硬件和软件设计等。要掌握ADC和触摸屏接口设计与应用并非像想象的那么难,建议多查看硬件资料的数据手册,并亲自动手完成程序的设计和调试工作。,

    注意事项

    本文(第八章ADC和触摸屏接口与应用课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开