ARM嵌入式系统课程设计_图文_第1页
ARM嵌入式系统课程设计_图文_第2页
ARM嵌入式系统课程设计_图文_第3页
ARM嵌入式系统课程设计_图文_第4页
ARM嵌入式系统课程设计_图文_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录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 - - 6 - - 6 - - 6 - - 6 -3.3 各个功能块的实现原理及分析 - 7 - - 7 - - 7 - - 7 - - 8 - - 8 - - 8 - - 8 -4 软件设计 - 9 -4.1 方框图 - 9

2、-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、规划 信号源的产生,用不同按钮选择不同信号源;3 系统硬件设计,熟悉DA转换原理及过程及硬件接口实现及信号函数显示,注意频率及幅度;4 系统软件设计,包括DA转换及显示的软件实现,用C语言编程;5 设计心得体会及总结。2 设计方案2.1 信号产生部分方案一:使用集成函数发生器芯片ICL8038。芯片ICL8038能输出方波、三角波、正弦波和锯齿波四种不同的波形,将他作为信号发生器。它是电压控制频率的集成芯片,失真度很低。可输入不同的外部电压来实现不同的频率输出。为了达到数控的目的,可用高精度DAC来输出电压以控制正弦波的频率。方案二:锁相环频率合成器(PLL)2锁相环频率合成器(PLL)是常用

4、的频率合成方法。锁相环由参考信号源、鉴相器、低通滤波器、压控振荡器几个部分组成。通过鉴相器获得输出的信号FO与输入信号Fi的相位差,经低通滤波器转换为相应的控制电压,控制VCO输出的信号频率,只有当输出信号与输入信号的频率于相位完全相等时,锁相环才达到稳定。如果在环路中加上分频系数可程控的分频器,即可获得频率程控的信号。由于输出信号的频率稳定度取决于参考振荡器信号fi ,参考信号fi 由晶振分频得到,晶振的稳定度相当高,因而该方案能获得频率稳定的信号。一般来说PLL的频率输出范围相当大,足以实现1kHz10MHZ的正弦输出。如果fi100Hz只要分频系数足够精细(能够以1步进),频率100Hz

5、步进就可以实现。方案三:直接数字频率合成(DDS)3DDS是一种纯数字化方法。它现将所需正弦波一个周期的离散样点的幅值数字量存入ROM中,然后按一定的地址间隔(相位增量)读出,并经DA转换器形成模拟正弦信号,再经低通滤波器得到质量较好的信号。方案四: 基于计算的数字频率合成4利用函数将波形的点数保存在芯片的RAM中,根据所要的波形的频率计算出它的周期,经计算得到在定时器定时时间固定的前提下产生一个完整的波形所需要的输出的点数,这样数据指针可以根据点数的数量来进行移动,得到频率准确、切换快速的信号。方案一(VOC)不能实现稳定频率信号的输出并且难于数字控制。并且电容、电阻参数随温度等其他因素的影

6、响,频率稳定度以及电路的稳定度都较低,实现也较复杂,不予采纳。虽然ICL8038可很好的实现频率输出的控制,但查看ICL8038的设计资料4可知其频率输出范围为0.01Hz300kHz,不能达到题目的要求,故不予选用。PLL方案和DDS方案都能实现1kHz10MHz的稳定的信号输出,且能达到100Hz频率步进,但是PLL的动态特性却很差,在频率改变时,环路从不稳定到稳定的过程有时间延迟。相比较而言,DDS的频率输出范围一般低于PLL,且杂散也大于PLL方案,但DDS信号源具有输出频率稳定度高、精度更高、分辨率更高且易于程控等优点,且频率改变不存在失调过程,尽管有杂散干扰,只需在输出级加滤波器仍

7、可以得到质量很好的波形。而方案四集中了上述三个方案的各个优点,因此采用方案四来实现波形信号的产生。2.2 对幅度进行调整方案一:用高速模拟乘法器实现采用AD835高速模拟乘法器,来实现模拟调制。模拟乘法器AD835的3dB截止频率为250MHz,能够满足题目的要求。但是AD835的差分输入范围仅为±1V,因此必须对输入信号进行预处理,这样在增加硬件的同时,又加大了设计的难度。方案二:采用高速的D/A转换器在LPC2138中集成着一个高速的D/A转换器5,我们可以直接在软件中设置一个幅度的参数来改变输出波形的幅度大小。综上所述,采用方案(二)虽然增加了软件的难度,延迟了波形的输出时间,

8、但是可以不用外加硬件拓展,节省了成本。 2.3 对频率进行调整方案一:通过在存储芯片ROM中保存不同频率信号的信号发生点数,在频率切换时调用ROM中所存储的不同点数模块来实现频率的切换。方案二:在存储芯片RAM中保存由软件实时产生的波形点数,通过所取的点数的不同来决定发生的波形的频率。由于设计中的信号要进行不断的改变,因此波形的数据不能存储在ROM中,应该存储RAM中,因此采用方案二的设计方法。2.4 滤波电路方案一:利用运放芯片TL082构成的有源二阶巴尔沃基滤波器6,它的频率范围可以达到1MHZ,远远高于我们所要的达到的最高频率,而且可以同时提高输出电压的稳定性即带载能力。方案二:采用硬件

9、构建的模拟滤波器,通常这种滤波电路主要采用无源元件R,L和C组成的低通滤波电路6。其优点是具有不用电感,体积小,重量轻等优点;缺点是其集成运放的带宽有限,电路的工作频率有限难以做得很高。由于所设计的信号源的频率相对来说不是很高,采用RC滤波器已经可以很好的完成设计的要求。因此采用方案二。3 硬件设计3.1系统框图根据前述方案,得到以下系统方框图,如图3-1所示,包括键盘、芯片LPC2138、D/A转换、滤波器、示波器、串口RS432、上位机。图3-1 系统方框图3.2 各功能模块通过软件将波形数据存储到RAM当中去,再把这些数据输送到D/A转换器进行转换得到模拟波形。用LPC2138开发板上自

10、身带有的键盘得到键值,通过中断服务程序将键盘信息传给控制芯片。直接采用RC过程的简单的滤波电路,此方法设计简单,又完全满足设计要求。 波形直接在示波器上显示,波形的中间调试参数在上位机EasyARM2131上显示,这样节省了外部显示模块的扩展,使得硬件电路更加的简便。3.3 各个功能块的实现原理及分析本设计中信号的产生直接用LPC2138芯片上集成的D/A转换器和软件的结合来生成。波形的信号数据采用了函数计算的方法来取得:Y=sin(N7 (3-1)其中,N表示所要取得的点数的多少。在设计中我选择N=1024,即一个完整的基本的正弦信号有1024个数据信号点组成。将数据存储到控制芯片LPC21

11、38的RAM当中,根据所要的频率来取得信号数据的多少,点数多少的计算如下:N=T/2t7 (3-2)其中,N表示点数,T表示所要产生的波形信号的周期,t表示定时器的时间长短.从RAM中 取得点数的间隔为:M=1023/N8 (3-3)其中M表示在RAM中的表格取得点数的间隔.根据不同的间隔的大小决定产生一个完整的波形信号所要的数据多少不同.设计中要求信号的最高产生的频率为50KHZ, 根据奈奎斯特定理,采样的频率最少要为所要信号的频率的两倍,但是为了更好的保证信号的完整输出,我们至少要让它采样10个点才能输出完整波形,就要求采样的频率为他的10倍即500KHZ,采样时间的大小为2us,这刚好满

12、足了LPC2138控制芯片上的集成D/A转换器最高转换时间为1us的限制。在设计中,三角波的产生就直接利用定时器定时时间的长短来控制信号数据的输出,信号数据从一个较低(或高)的位置开始按照一定的规律步进9,当其达到一个高度时再按照相同的步进下降到原来的数据大小,如此反复的输出就构成了三角波模拟信号的输出。在设计中,方波的产生由大小不同的两个信号数据交替输出形成,每个信号数据输出的时间长短根据所要点信号频率来决定。在设计中,为了能使波形在示波器中显示,这样就要设定好波形的幅度,在设计时我们把波形的幅度控制在1024之内,才能很好的显示波形。同时为了改变幅度的大小,我们设置了一个参数直接与所取得的

13、信号数据相乘,这就改变了信号数据的大小,也就使得D/A转换时的数据大小产生变化,从而体现在输出的信号波形在幅度上发生改变。在输出的信号数据的时间间隔一定时,当产生一个完整波形时所需要的点数发生变化时信号的周期就发生变化,这样它的频率就相应的变化。因此,在设计中, 通过固定定时器的定时长短,改变波形数据的点数多少就改变了信号的频率。由于我所设计的信号源的输出频率还不是很高,所以可以用简单的低通滤波器就可以完成滤波的功能,因此我选择使用RC低通滤波器。参数为:R=100欧姆,C=0.1UF。具体结构如下:R图3-2 键盘是直接与ARM(LPC2138)芯片的P0口P0.16P0.21连接,通过AR

14、M芯片对P0.16P0.21输入数据,0表示有效,1表示无效11。键1用来选择输出波形,键2用来选择所要改变的参数,键3和键4用来加/减键3所选的参数4 软件设计4.1 方框图由设计方案进行进一步的软件设计,首先得到流程图如图4-1所示,主要包括:初始化、键盘扫描、PC机显示波形等部分。N正弦波PC机显示波形方波键盘扫描Y三角波判断是否有键按下?开始图4-14.2程序清单由硬件设计及主程序流程图,经过C语言编程,在ADS环境下运行,完成了信号源发生器的软件设计部分,实现了设计的内容。部分主要程序清单如下:1、初始化串口0void UART0_Init (voiduint16 Fdiv;U0LC

15、R = 0x83; / DLAB = 1,可设置波特率Fdiv = (Fpclk / 16 / UART_BPS; /设置波特率U0DLM = Fdiv / 256;U0DLL = Fdiv % 256;U0LCR = 0x03;2、向串口发送字节数据void UART0_SendByte (uint8 data / data=18;U0THR = data; /发送数据while (U0LSR & 0x40 = 0; / 等待数据发送完毕3、向PC机发送显示字符。void PC_DispChar (uint8 x, uint8 y, uint8 chr, uint8 colorUAR

16、T0_SendByte(0xff; / 起始字符UART0_SendByte(x; /发送字符显示坐标(x,y)UART0_SendByte(y;UART0_SendByte(chr; /发送显示字符UART0_SendByte(color;4、向上位机发送字符串。void ISendStr (uint8 x, uint8 y, uint8 color, char *strwhile (1if (*str = '0' break; / 结束字符PC_DispChar(x+, y, *str+, color; /发送显示数据if (x >= 80x = 0;y+;5、定时器

17、0中断服务程序。void _irq IRQ_Timer0(voidpinsave=(IO0PIN&pinvalue;if(pinsave!=pinvalue while(delay+=2 delay=0;if(pinsave = (IO0PIN&pinvalueswitch(pinsavecase 0x003e0000: bo=bo+1;if(bo>4bo=1; break; case 0x003d0000:canshu+=1;if(canshu>2canshu=1;break;case 0x003b0000:switch(canshucase 1:if(hight

18、<26hight=hight+1;break;case 2:if(fc<100fc=fc+2;break;break; case 0x00370000:switch(canshucase 1:if(hight<26hight=hight-1;break;case 2:if(fc<100fc=fc-2;break;break; T0IR=0x01;VICVectAddr=0x00;6、定时器1捕获中断服务程序void _irq IRQ_Timer1(voidswitch(bo case 1:sin_wave(; break;case 2:trip_wave(;break;

19、case 3:fang_wave(; break;default:break;T1IR=0x01;VICVectAddr=0x00;7、主程序int main (void char str30;const double T = (2 * 3.1415926/1024; /把一个周期分成2048份 for(i=0;i<1024;i+ tablei = 512*(1+sin(T*i;PINSEL0 = 0x00000000; / 设置管脚连接GPIO,管脚功能选折寄存器全部为0时选为GPIO功能PINSEL1=(2<<18;PINSEL2=PINSEL2&(0x08;DA

20、CR=(0<<16; /最大定时1US,电流700UA IRQEnable(;T0TC=0;T0PR=0;T0MCR=0x03;T0MR0=Fpclk/2;T0TCR = 0x03; / 启动并复位T0TCT0TCR=0x01;T1TC=0;T1PR=0;T1MCR=0x03;T1MR0=Fpclk/205000*(fc/100; /把一秒分成2048份,再根据要求的频率来进行设置tT1TCR = 0x03; / 启动并复位T1TCT1TCR=0x01;VICIntSelect=0x00;VICVectCntl0=0x20|0x04;VICVectAddr0=(uint32IRQ_

21、Timer0;VICVectCntl1 = 0x20 | 0x05; / 设置定时器1中断通道分配最高优先级 VICVectAddr1 = (uint32IRQ_Timer1; VICIntEnable =(1<<0x04|(1 << 0x05; while (1 sprintf(str, "%4d mv", hight;ISendStr(0,8,0x30,str;sprintf(str, "%4d hz", fc;ISendStr(0,10,0x30,str;return 0;4.3 测试结果图由以上硬件、软件设计,经实验调试得

22、到测试结果,如图4-2、4-3、4-4所示,分别为三角波、正弦波、方波。图4-3三角波(频率=200HZ 幅度=2.4V)图4-4正弦波(频率=40HZ 幅度=100MV)图4-5 方波(频率=1000HZ 幅度=2V)5心得体会两个周的嵌入式课程设计基于ARM的信号源发生器设计就要结束了,虽然课程设计的时间比较短,但我却收获了很多值得总结和值得我铭记于心的知识和认识。开始课程设计的时候,由于我们学的都是一些嵌入式方面的理论知识,牵涉到实际的我们几乎一无所知,所以我们组的成员都不知道该怎么入手,我们通过请教老师,以及上网查询等通道,终于顺利的完成数据采样系统的各方面设计。这样一个过程使我的理论知识得到了试验和应用,使我的理论知识得到了进一步的提高。通过这次ARM课程设计,我对整个嵌入式程序的设计有了一个比较深的理解,特别是有关ARM的信号源发生器这块,比如数字信号的产生、调节和D/A转换的原理等。还有就是增强了自身的动手能力,把以前书本上讲的或

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论