您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于ARM9的AD接口驱动程序的设计报告
沈阳理工大学课程设计专用纸目录第一章引言......................................................-1-第二章设计目的..................................................-2-第三章设计原理..................................................-3-第四章关键技术..................................................-4-4.1ARM9处理器..................................................-4-4.2嵌入式C语言开发技术.........................................-4-4.3ADS开发环境.................................................-5-4.4基于ARM9的硬件..............................................-6-第五章程序流程..................................................-7-5.1初始化和结束程序.............................................-7-5.2服务于I/O请求的函数.........................................-7-5.3中断服务程序.................................................-9-第六章主要源代码...............................................-10-6.1定义与A/D转换相关的寄存器..................................-10-6.2对A/D转换器进行初始化......................................-10-6.3获取A/D的转换值............................................-10-6.4主函数......................................................-11-6.5子函数......................................................-15-第七章结论.....................................................-23-第八章心得体会.................................................-24-参考文献........................................................-25-沈阳理工大学课程设计专用纸-1-第一章引言由于Linux系统是开源系统,其内核和各种开发工具都可以从网络上轻易获取,使其在嵌入式系统的开发中得到了越来越广泛的应用。但Linux系统本身并没有对种类繁多的硬件设备都提供现成的驱动程序,特别是由于工程应用中的灵活性,其驱动程序更是难以统一,这时就需开发一套适合于自己产品的设备驱动,使得Linux设备驱动程序的开发在整个嵌入式系统开发工作中占有很重要的地位。而基于ARM架构的中高档的嵌入式系统应用已经非常广泛,本文针对现在非常流行的一款三星公司生产的ARM9嵌入式微处理器S3C2440,在Linux操作系统下实现了多路AD转换的驱动,通过该驱动程序实例,介绍在Linux系统下驱动程序编写的一般方法,包括驱动程序和测试程序的编写。1硬件设备硬件系统核心部分采样的是韩国三星公司设计的基于ARM9的嵌入式微处理器S3C2440。S3C2440配合SDRAM、FLASH、USB、网口和串口等就构成了基本的ARM嵌入式硬件平台。本文针对现在非常流行的一款三星公司生产的ARM9嵌入式微处理器S3C2410,在Linux操作系统下实现了多路AD转换的驱动,通过该驱动程序实例,介绍在Linux系统下驱动程序编写的一般方法,包括驱动程序和测试程序的编写。沈阳理工大学课程设计专用纸-2-第二章设计目的通过课程设计,熟悉基于ARM微处理器的嵌入式系统开发的过程,掌握嵌入式系统开发的A/D接口原理,掌握S3C2410的AD相关寄存器的配置及编程应用方法,锻炼实践动手能力和团队协作能力。学习模拟输入输出接口的原理,掌握接口程序实现的基本方法,掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用。沈阳理工大学课程设计专用纸-3-第三章设计原理A/D转换器是模拟信号和CPU之间联系的接口,它是将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。按照转换速度、精度、功能以及接口等因素,常用的A/D转换器有以下两种:(1)双积分型的A/D转换器双积分型也称为二重积分式,其实质是测量和比较两个积分的时间,一个是对模拟信号电压的积分时间T,此时间常是固定的,另一个是以充电后的电压为初值,对参考电源Vn的反向积分,积分电容被放电至零,所需的时间Ti。模拟输入电压Vi与参考电压Vref之比,等于上述两个时间之比。由于Vref、T时间固定,而放电时间Ti可以测出,因而可以计算出模拟输入电压的大小。(2)逐次逼近型的A/D转换器逐次逼近型也称为逐位比较式,它的应用比积分型更为广泛,通常主要有逐次逼近寄存器SAR、D/A转换器、比较器以及时序和逻辑控制等部分组成。通过逐次把设定的SAR寄存器中的数字量经D/A转换后得到电压Vc与待转换模拟电压V0进行比较。比较时,先丛SAR的最高位开始,逐次确定各位的数码应为‘1’还是‘0’,而得到最终的转换值。其工作原理为:转换前,先将SAR寄存器各位清零,转换开始时,控制逻辑电路先设定SAR寄存器的最高位为‘1’,其余各位为‘0’,此值经D/A转换器转换成电压Vc,然后将Vc与输入模拟电压Vx进行比较。如果Vx大于等于Vc,说明输入的模拟电压高于比较的电压,SAR最高位的‘1’应保留;如果Vx小于Vc,说明SAR的最高位应清除。然后在SAR的次高位置‘1’,依上述方法进行D/A转换和比较。如此反复上述过程,直至确定出SAR寄存器的最低位为止,此过程结束后,状态线改变状态,表明已完成一次转换。最后,逐次逼近寄存器SAR中的数值就是输入模拟电压的对应数字量。位数越多,越能准确逼近模拟量,但转换所需的时间也越长。沈阳理工大学课程设计专用纸-4-第四章关键技术4.1ARM9处理器新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。ARM9系列包括三种处理器:ARM926EJ-S、ARM946E-S和ARM968E-S。(1)ARM968E-S面积最小、包含DSP增强功能的ARM9处理器,针对低功耗、数据密集型、嵌入式实时应用。面积最小、功耗最低的ARM9处理器是众多实时类型应用的理想之选。通过可轻松从标准接口集成的紧密耦合内存,该处理器可高效工作。(2)ARM946E-S具有MPU的DSP增强型高速缓存处理器,针对运行RTOS的实时应用。一种具有可选高速缓存接口以及完整的内存保护单元的实时处理器。对于大部分代码位于主存储器的应用,该处理器非常有用,它按需加载到高速缓存中,同时关键的异常处理代码和数据仍本地保留在紧密耦合内存中。(3)ARM926EJ-S具有Java加速、DSP扩展和MMU的应用处理器,针对基于操作系统的应用。ARM926EJ-S处理器为入门级处理器,可支持完全版操作系统,其中包括Linux、WindowsCE和Symbian。因此,此处理器是众多需要完整图形用户界面的应用的理想之选[1]。4.2嵌入式C语言开发技术由于现在越来越多的产品都采用嵌入式开发,所完成的计算和控制工作也日趋复杂,而嵌入式系统是一种资源十分有限的系统(这主要表现在程序存储器资源的不足上),因此在程序设计时如何使用好这些有限的资源就显得十分重要。用C语言变成虽然具有许多的优点,但是生成的代码相对较长,若编程技术不好,沈阳理工大学课程设计专用纸-5-生成的代码有可能比汇编语言生成的代码长几倍,因而对编程者来说,应该注意到嵌入式C语言和一般意义上的标准C语言的区别,对程序进行适当的优化。嵌入式C语言编程不同于一般的C语言编程的一个显著特点,就是要和程序存储器资源结合起来。虽然其提供的数据类型十分丰富,但其中只有bit和char等数据类型是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短;而其他的数据类型如整形、浮点型等数据要有一定的内部程序或内部函数的支持,用该类数据类型的语句生成的代码则相对教程。4.3ADS开发环境1.运行ADS1.2集成开发环境(CodeWarriorforARMDeveloperSuite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARMExecutableImage是ARM的通用模板。选中它即可生成ARM的执行文件。同时,还要在,Projectname栏中输入项目的名称,以及在Location中输入其存放的位置。按确定保存项目。2.在新建的工程中,选择Debug版本,使用Edit|DebugSettings菜单对Debug版本进行参数设置。3.点击DebugSetting按钮,选中TargetSetting项,在Post-linker栏中选中ARMfromELF项。按OK确定。这是为生成可执行的代码的初始开关。4.点击ARMAssembler,在ArchitectureorProcesser栏中选ARM920T。这是要编译的CPU核。5.点击ARMCCompliler,在ArchitectureorProcesser栏中选ARM920T。这是要编译的CPU核。6.点击ARMlinker,在outpur栏中设定程序的代码段地址,以及数据使用的地址。ROBase栏中填写程序代码存放的起始地址,RWBase栏中填写程序数据存放的起始地址。该地址是属于SDRAM的地址。在options栏中,Imageentrypoint要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0x30000000—0x33ffffff中选值,这是64MSDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字节对齐的地址(ARM状态)。通常入口点Imageentrypoint为0x30000000,ro_base也为0x30000000。在Layout栏中,沈阳理工大学课程设计专用纸-6-在Placeatbeginningofimage框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。7.在DebugSetting对话框中点击左栏的ARMfromELF项,在Outputfilename栏中设置输出文件名*.bin,前缀名可以自己取,在Outputformat栏中选择Plainbinary,这是设置要下载到flash中的二进制文件。8.到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410ARM.mcp等,然后,在ADS1.2软件安装的目录下的Stationary目
本文标题:基于ARM9的AD接口驱动程序的设计报告
链接地址:https://www.777doc.com/doc-2568223 .html