ARM嵌入式系统课程设计_图文.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录1系统设计任务与要求-2-1.1设计要求-2-1.2设计作用和目的-2-1.3课程设计应完成的任务-2-2设计方案-3-2.1信号产生部分-3-2.2对幅度进行调整-4-2.3对频率进行调整-4-2.4滤波电路-5-3硬件设计-6-3.1系统框图-6-3.2各功能模块-6-3.2.1波形产生电路-6-3.2.2键盘模块-6-3.2.3滤波器设计-6-3.2.4显示模块-6-3.3各个功能块的实现原理及分析-7-3.3.1正弦波的产生-7-3.3.2三角波的产生-7-3.3.3方波的产生-7-3.3.4幅度的控制-8-3.3.5频率的控制-8-3.3.6滤波器设计-8-3.3.7键盘模块-8-4软件设计-9-4.1方框图-9-4.2程序清单-9-4.3测试结果图-14-5心得体会-16-参考文献-17-1系统设计任务与要求1.1设计要求利用ARM芯片设计信号发生器,包括Sin、方波、三角波形实现1.2设计作用和目的1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。2、了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。3、通过软硬件设计实现利用ARM芯片完成信号发生器功能。1.3课程设计应完成的任务1查阅相关文献资料,熟悉所选ARM芯片;2总体设计方案规划信号源的产生,用不同按钮选择不同信号源;3系统硬件设计,熟悉DA转换原理及过程及硬件接口实现及信号函数显示,注意频率及幅度;4系统软件设计,包括DA转换及显示的软件实现,用C语言编程;5设计心得体会及总结。2设计方案2.1信号产生部分方案一:使用集成函数发生器芯片ICL8038。芯片ICL8038能输出方波、三角波、正弦波和锯齿波四种不同的波形,将他作为信号发生器。它是电压控制频率的集成芯片,失真度很低。可输入不同的外部电压来实现不同的频率输出。为了达到数控的目的,可用高精度DAC来输出电压以控制正弦波的频率。方案二:锁相环频率合成器(PLL)[2]锁相环频率合成器(PLL)是常用的频率合成方法。锁相环由参考信号源、鉴相器、低通滤波器、压控振荡器几个部分组成。通过鉴相器获得输出的信号FO与输入信号Fi的相位差,经低通滤波器转换为相应的控制电压,控制VCO输出的信号频率,只有当输出信号与输入信号的频率于相位完全相等时,锁相环才达到稳定。如果在环路中加上分频系数可程控的分频器,即可获得频率程控的信号。由于输出信号的频率稳定度取决于参考振荡器信号fi,参考信号fi由晶振分频得到,晶振的稳定度相当高,因而该方案能获得频率稳定的信号。一般来说PLL的频率输出范围相当大,足以实现1kHz-10MHZ的正弦输出。如果fi=100Hz只要分频系数足够精细(能够以1步进),频率100Hz步进就可以实现。方案三:直接数字频率合成(DDS)[3]DDS是一种纯数字化方法。它现将所需正弦波一个周期的离散样点的幅值数字量存入ROM中,然后按一定的地址间隔(相位增量)读出,并经DA转换器形成模拟正弦信号,再经低通滤波器得到质量较好的信号。方案四:基于计算的数字频率合成[4]利用函数将波形的点数保存在芯片的RAM中,根据所要的波形的频率计算出它的周期,经计算得到在定时器定时时间固定的前提下产生一个完整的波形所需要的输出的点数,这样数据指针可以根据点数的数量来进行移动,得到频率准确、切换快速的信号。方案一(VOC)不能实现稳定频率信号的输出并且难于数字控制。并且电容、电阻参数随温度等其他因素的影响,频率稳定度以及电路的稳定度都较低,实现也较复杂,不予采纳。虽然ICL8038可很好的实现频率输出的控制,但查看ICL8038的设计资料[4]可知其频率输出范围为0.01Hz~300kHz,不能达到题目的要求,故不予选用。PLL方案和DDS方案都能实现1kHz~10MHz的稳定的信号输出,且能达到100Hz频率步进,但是PLL的动态特性却很差,在频率改变时,环路从不稳定到稳定的过程有时间延迟。相比较而言,DDS的频率输出范围一般低于PLL,且杂散也大于PLL方案,但DDS信号源具有输出频率稳定度高、精度更高、分辨率更高且易于程控等优点,且频率改变不存在失调过程,尽管有杂散干扰,只需在输出级加滤波器仍可以得到质量很好的波形。而方案四集中了上述三个方案的各个优点,因此采用方案四来实现波形信号的产生。2.2对幅度进行调整方案一:用高速模拟乘法器实现采用AD835高速模拟乘法器,来实现模拟调制。模拟乘法器AD835的-3dB截止频率为250MHz,能够满足题目的要求。但是AD835的差分输入范围仅为±1V,因此必须对输入信号进行预处理,这样在增加硬件的同时,又加大了设计的难度。方案二:采用高速的D/A转换器在LPC2138中集成着一个高速的D/A转换器[5],我们可以直接在软件中设置一个幅度的参数来改变输出波形的幅度大小。综上所述,采用方案(二)虽然增加了软件的难度,延迟了波形的输出时间,但是可以不用外加硬件拓展,节省了成本。2.3对频率进行调整方案一:通过在存储芯片ROM中保存不同频率信号的信号发生点数,在频率切换时调用ROM中所存储的不同点数模块来实现频率的切换。方案二:在存储芯片RAM中保存由软件实时产生的波形点数,通过所取的点数的不同来决定发生的波形的频率。由于设计中的信号要进行不断的改变,因此波形的数据不能存储在ROM中,应该存储RAM中,因此采用方案二的设计方法。2.4滤波电路方案一:利用运放芯片TL082构成的有源二阶巴尔沃基滤波器[6],它的频率范围可以达到1MHZ,远远高于我们所要的达到的最高频率,而且可以同时提高输出电压的稳定性即带载能力。方案二:采用硬件构建的模拟滤波器,通常这种滤波电路主要采用无源元件R,L和C组成的低通滤波电路[6]。其优点是具有不用电感,体积小,重量轻等优点;缺点是其集成运放的带宽有限,电路的工作频率有限难以做得很高。由于所设计的信号源的频率相对来说不是很高,采用RC滤波器已经可以很好的完成设计的要求。因此采用方案二。3硬件设计3.1系统框图根据前述方案,得到以下系统方框图,如图3-1所示,包括键盘、芯片LPC2138、D/A转换、滤波器、示波器、串口RS432、上位机。图3-1系统方框图3.2各功能模块3.2.1波形产生电路通过软件将波形数据存储到RAM当中去,再把这些数据输送到D/A转换器进行转换得到模拟波形。3.2.2键盘模块用LPC2138开发板上自身带有的键盘得到键值,通过中断服务程序将键盘信息传给控制芯片。3.2.3滤波器设计直接采用RC过程的简单的滤波电路,此方法设计简单,又完全满足设计要求。3.2.4显示模块波形直接在示波器上显示,波形的中间调试参数在上位机EasyARM2131上显示,这样节省了外部显示模块的扩展,使得硬件电路更加的简便。3.3各个功能块的实现原理及分析3.3.1正弦波的产生本设计中信号的产生直接用LPC2138芯片上集成的D/A转换器和软件的结合来生成。波形的信号数据采用了函数计算的方法来取得:Y=sin(N[7](3-1)其中,N表示所要取得的点数的多少。在设计中我选择N=1024,即一个完整的基本的正弦信号有1024个数据信号点组成。将数据存储到控制芯片LPC2138的RAM当中,根据所要的频率来取得信号数据的多少,点数多少的计算如下:N=T/2t[7](3-2)其中,N表示点数,T表示所要产生的波形信号的周期,t表示定时器的时间长短.从RAM中取得点数的间隔为:M=1023/N[8](3-3)其中M表示在RAM中的表格取得点数的间隔.根据不同的间隔的大小决定产生一个完整的波形信号所要的数据多少不同.设计中要求信号的最高产生的频率为50KHZ,根据奈奎斯特定理,采样的频率最少要为所要信号的频率的两倍,但是为了更好的保证信号的完整输出,我们至少要让它采样10个点才能输出完整波形,就要求采样的频率为他的10倍即500KHZ,采样时间的大小为2us,这刚好满足了LPC2138控制芯片上的集成D/A转换器最高转换时间为1us的限制。3.3.2三角波的产生在设计中,三角波的产生就直接利用定时器定时时间的长短来控制信号数据的输出,信号数据从一个较低(或高)的位置开始按照一定的规律步进[9],当其达到一个高度时再按照相同的步进下降到原来的数据大小,如此反复的输出就构成了三角波模拟信号的输出。3.3.3方波的产生在设计中,方波的产生由大小不同的两个信号数据交替输出形成,每个信号数据输出的时间长短根据所要点信号频率来决定。3.3.4幅度的控制在设计中,为了能使波形在示波器中显示,这样就要设定好波形的幅度,在设计时我们把波形的幅度控制在1024之内,才能很好的显示波形。同时为了改变幅度的大小,我们设置了一个参数直接与所取得的信号数据相乘,这就改变了信号数据的大小,也就使得D/A转换时的数据大小产生变化,从而体现在输出的信号波形在幅度上发生改变。3.3.5频率的控制在输出的信号数据的时间间隔一定时,当产生一个完整波形时所需要的点数发生变化时信号的周期就发生变化,这样它的频率就相应的变化。因此,在设计中,通过固定定时器的定时长短,改变波形数据的点数多少就改变了信号的频率。3.3.6滤波器设计由于我所设计的信号源的输出频率还不是很高,所以可以用简单的低通滤波器就可以完成滤波的功能,因此我选择使用RC低通滤波器。参数为:R=100欧姆,C=0.1UF。具体结构如下:R图3-23.3.7键盘模块键盘是直接与ARM(LPC2138)芯片的P0口P0.16—P0.21连接,通过ARM芯片对P0.16—P0.21输入数据,0表示有效,1表示无效[11]。键1用来选择输出波形,键2用来选择所要改变的参数,键3和键4用来加/减键3所选的参数4软件设计4.1方框图由设计方案进行进一步的软件设计,首先得到流程图如图4-1所示,主要包括:初始化、键盘扫描、PC机显示波形等部分。N正弦波PC机显示波形方波键盘扫描Y三角波判断是否有键按下?开始图4-14.2程序清单由硬件设计及主程序流程图,经过C语言编程,在ADS环境下运行,完成了信号源发生器的软件设计部分,实现了设计的内容。部分主要程序清单如下:1、初始化串口0voidUART0_Init(void{uint16Fdiv;U0LCR=0x83;//DLAB=1,可设置波特率Fdiv=(Fpclk/16/UART_BPS;//设置波特率U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;}2、向串口发送字节数据voidUART0_SendByte(uint8data{//data=18;U0THR=data;//发送数据while((U0LSR&0x40==0;//等待数据发送完毕}3、向PC机发送显示字符。voidPC_DispChar(uint8x,uint8y,uint8chr,uint8color{UART0_SendByte(0xff;//起始字符UART0_SendByte(x;//发送字符显示坐标(x,y)UART0_SendByte(y;UART0_SendByte(chr;//发送显示字符UART0_SendByte(color;}4、向上位机发送字符串。voidISendStr(uint8x,uint8y,uint8color,char*str{while(1{if(*str=='\0'break;//结束字符PC_DispChar(x++,y,*str++,color;//发送显示数据if(x=80{x=0;y++;}}}5、定时器0中断服务程序。void__irqIRQ_Timer0(void{pinsave=(IO0PIN&pinvalue;if(pinsave!=pinvalue{while(delay++==2{delay=0;if(pinsave==(IO0PIN&pinvalueswitch(pinsave{case0x003e0

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功