




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电信专业综合实践设计题目:在LPC2210 开发板的基础上-简易数字示波器设计学校: 班级: 姓名: 学号: 指导老师:201111目 录第1章 设计内容与要求11.1设计内容11.2设计要求11.3系统功能11.4应用分析1第2章 系统总体设计32.1总体框图32.2总体设计分析3第3章 硬件结构73.15V电源电路73.2系统电源电路83.3复位电路103.4JTAG接口电路113.5系统存储器电路113.6TFT液晶接口电路123.7串口接口电路133.8ADC电路143.9按键控制电路153.10主芯片电路14第4章 软件分析144.1软件框图分析144.2任务的划分154.3任务的优先级设计154.4液晶初始化设计164.5定时器设计164.6AD转换设计164.7数据处理174.8触发设计174.9周期设计174.10求最值设计184.11主函数与调用的TASK设计18拓展部分19参考文献20第一章 设计内容与要求1. 1 设计内容: 在LPC2210 开发板的基础上设计一简易数字示波器。1. 2 设计要求: 数字示波器的硬件系统的电路原理图设计 数字示波器的图形界面设计 数字示波器的信号触发、矢量显示、轨迹消隐实现 被测信号的周期、最大/最小值实现1. 3 系统功能: 以LPC2210开发板的液晶屏模拟数字示波器的显示屏,实现被测波形的显示。 1. 4 应用分析:本设计对基于ARM(Advanced RISC Machine)的简易示波器的设计过程进行了介绍。主要对系统的硬件设计部分和软件设计部分进行了分析。硬件设计部分首先给出了系统框图,然后对各个组成模块进行了介绍。并给出了各模块所使用的主要元器件。包括电源部分、放大部分、控制部分、键盘功能及芯片的采集和显示部分。软件设计部分编写了使能部分、AD转换、显示部分、数值计算部分。 第二章 系统的总体设计2. 1 总体框图输入信号放大电路(模拟通道)采样和量化 ADCLCDARM KEY1 2-1 系统框图2. 2 总体设计分析本设计如果选择的是DSP,设计中用到芯片就会增多,而且因为DSP造价高于ARM并且小信号的采集如果应用DSP放大芯片有很多限制,不易选取。而应用ARM则减少了这方面的问题。在嵌入式处理器设计领域,RISC1已经成为处理器结构设计的必然选择。嵌入式微处理器嵌入式系统是以应用为中心,以计算机技术为基础,软硬可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。并且该系统是以提高对象体系智能性、控制力和人机交互能力为目的,通过相互作用和内在指标评定的,嵌入到对象体系中的专用计算机系统。而嵌入式微处理器是嵌入式系统的核心部件,是决定嵌入式系统功能强弱的主要因素,也决定了嵌入式系统的应用范围和开发复杂度。本设计需要解决的问题包括硬件部分和软件部分。硬件部分的设计主要是芯片选择,控件的选择,放大倍数的控制,衰减倍数 的选择。软件部分的设计主要是驱动程序的编译,主函数主要功能的实现,按键控制的选择。第三章 硬件结构3. 1 5V电源电路LPC2200系列ARM7微控制器均要使用两组电(LPC213x,LPC214x除外),I/O口供电电源为3.3V,内核及芯片外设供电电源为1.8V,所以系统设计为3.3V应用系统。首先有CZ1电源接口输入9V直流电源,二极管D1防止电源反接,经过C42,C44滤波,然后通过LM2575将电源稳压5V,再使用LDO芯片(低压差芯片)稳压输出3.3V及1.8V电压。如图所示(1-1),所设计的5V电源电路的稳压芯片使用的是LM2575开关电源芯片。 图3-1 (5V电源电路)3. 2 系统电源电路系统电源电路如图1-2所示,LDO芯片分别采用SPX1117M3-1.8和SPX1117M3-3.3,其特点为输出电流大,输出电压精度高,稳定性好。犹豫LPC2200系列ARM7微控制器具有独立的模拟电源和模拟地引脚,为了降低噪声和出错几率,模拟电源与数字电源应该隔离。这里使用10uH的电感L2L4实现电源隔离(将高频噪声隔离),并且在设计PCB板时采用大面积敷地,以降低噪声。 图3-2(系统电路)3. 3 复位电路由于ARM芯片的告诉、低功耗和的工作电压导致其噪声容限低,对电源的纹波、瞬态响应性能、时钟源的稳定性和电源监控可靠性等诸多方面也提出了更高的要求。如图1-3所示。 图3-3(系统复位电路)3. 4 JTAG接口电路采用RAM公司提出的标准20脚JTAG仿真调试接口,JTAG信号的定义以及与LPC2210的连接如图1-4所示。图中,JTAG接口上的信号nTRST连接到LPC2210芯片的TRST引脚,以达到控制LPC2210内部JTAG接口电路复位的目的(但不控制CPU复位)。 图3-4(JTAG接口电路)3. 5 系统存储器电路SartARM2200j教学实验开发平台上扩展了2MB NOR FLASH(型号为SST39VF160)和8MB PSRAM(芯片型号为MT45W4MW16),电路如图1-5。为了方便程序调试及最终代码的固化应用,使用LPC2210外部存储接口的BANK0和BANK1地址空间,并且可以通过JP10跳线将片选信号CS0和CS1分别分配给SRAM或FLASH。在使用JTAG调试程序时,分配SPRAM为BANK0地址,因为BANK0可以进行异常向量表的重新映射操作。当最终代码固化到FLASH时,分配FLASH为BANK0地址,SRAM为BANK1地址。这是因为BANK0可以用来引导程序运行。若使用BANK0引导程序运行,将JP9短接到OUTSIDE端,使系统复位时BOOT1和BOOT0引脚的电平为0b01(即二进制值01). 图3-5(系统存储器电路)3 . 6 TFT液晶接口电路SmartARM2200教学实验开发平台标配有2.2英寸液晶屏-TF6758液晶模块,其电路原理如图1-6所示。TFT6758液晶模块的工作电压为3.3V,内带白光LED背光灯,可以直接使用8位、16位或18位总线方式与控制器连接(因为液晶模块内部包含了HD66781和HD66783液晶控制驱动器)。为了得到更搞的数据传输速率,设计电路时采用16位总线接口,按照HD66781芯片说明,需要IM3和IM0引脚0电平,16位数据分别为DB17DB10和DB8DB1引脚,为使用的DB0和DB9引脚应接地,电路连接如图1-6所示。因为不使用DMA传输功能,所以将DACK引脚接为高电平。图3-6 (TFT6758液晶模块应用电路)3. 7 串口接口电路由于系统电源是3.3V,所以应使用SP3232E进行RS232电平转换,SP3232E是3V工作电源的RS232转换芯片。如图1-7所示图3-7 (串口接口电路)3. 8 ADC电路PC2114/2124/2119/2129/2194具有4路10位ADC转换器,LPC2210/2212/2214/2290/2292/2294具有8路10位ADC转换器,其参考电压为3.3V(由V3a引脚提供),参考电压的精度会影响ADC的转换结果。SmartARM2200教学实验开发平台提供了两路滞留电压测量电路如图1-8所示,可调电阻W1和W2用于调整ADC的输出电压,可以在VINI和VIN2测试点上用万用表检查当前电压值。R36和R37为I/O口保护电阻,当ADC输入电压调整到3.3V或0V时,而P0.27或P0.28作为GPIO输出0或1,此刻,这两个电阻保证电路不产生短路故障。 图3-8 (ADC电路)3. 9 按键控制电路按键:在SmartARM2200教学实验平台上使用P0.20扩展一个独立按键KEY1,当需要使用此按键时,应将JP2跳线短接。当断开JP2跳线时,P0.20可以通过J5连接器(GPIO输出接口)与用户板连接使用。图3-9 (按键控制电路)3. 10 主芯片电路 LPC2210是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU的微控制器,并带有0/128/256KB嵌入的高速片内Flash存储器,片内128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。由于LPC2210具有较小的64个144脚封装,极低的功耗,多个32位定时器,4路10位ADC或8路10位ADC(64脚和144脚封装)以及多达9个外部中断。 图3-10 (主芯片电路)第四章 软件分析4. 1 软件框图分析 初始化 底层驱动 脉宽信号 发射 求最大 最小值 波形显示 数据处理 数据采集 4. 2 任务的划分对一个嵌入式应用系统进行“任务划分”,是实时操作系统应用软件设计的关键,任务划分是否合理将直接影响软件设计的质量。任务划分原则如下: 以CPU为中心,将与各种输入/输出设备(或端口)相关的功能分别划分为独立的任务。 发现“关键”功能,将其最“关键”部分“剥离”出来,用一个独立任务(或ISR)完成,剩余部分用另一个任务实现,两者之间通过通信机制沟通。 发现“紧迫”功能,将其最“紧迫”部分“剥离”出来,用一个独立的高优先级任务(或ISR)完成,剩余部分用另一个任务实现,两者之间通过通信机制沟通。 对于既“关键”又“紧迫”的功能,按“紧迫”功能处理。 将消耗机时较多的数据处理功能划分出来,封装为低优先级任务。 将关系密切的若干功能组合成为一个任务,达到功能聚合的效果。 将由相同事件触发的若干功能组合成为一个任务,从而免除事件分发机制。 将运行周期相同的功能组合成为一个任务,从而免除时间事件分发机制。 将若干按固定顺序执行的功能组合成为一个任务,从而免除同步接力通信的麻烦。4. 3 任务的优先级设计为不同任务安排不同的优先级,其最终目标是使系统的实时性指标能够得到满足。在实际的产品开发中,应该在项目开始时,仔细思考和推敲。如果任务优先级的设定有误,对以后的开发和调试会带来极大的困扰,会让工程师花很长时间来查错误,而且出现的错误不好排除。所以设计任务的优先级是很重要的。本次实验一共建立了五个任务,其优先级如下: OSTaskCreate (Task0,(void *)0, &Task0Stk128 - 1, 2);/创建Task0任务,优先级为2OSTaskCreate (Task1,(void *)0, &Task1Stk128 - 1, 3);/创建Task1任务,优先级为3OSTaskCreate (Task2,(void *)0, &Task2Stk128 - 1, 4);/创建Task2任务,优先级为4OSTaskCreate (Task3,(void *)0, &Task3Stk128 - 1, 5); /创建Task3任务,优先级为5OSTaskCreate (Task4,(void *)0, &Task4Stk128 - 1, 6);/创建Task4任务,优先级为64. 4 液晶显示初始化设计 GUI_PrtPic(0, 0, 239, 319, gImage_root01);/ 示波器面板(背景)图显示 GUI_Line(224, 268, 224, 315, 0xffff);/Running至Off间6根短白线 GUI_Line(184, 268, 184, 315, 0xffff); GUI_Line(144, 268, 144, 315, 0xffff); GUI_Line(104, 268, 104, 315, 0xffff); GUI_Line( 64, 268, 64, 315, 0xffff); GUI_Line( 24, 268, 24, 315, 0xffff); WaveTrackCnt = 0; GUI_PrtStr(208, 270, Coupling, 0xfee4, 0x0274); / Coupling和 DC 显示 GUI_PrtStr(188, 280, DC , 0x0000, 0xffff); GUI_PrtStr(168, 273, Volt/Div, 0xfee4, 0x0274);/ Volt/Div和 0.42V 显示 GUI_PrtStr(148, 275, 0.42V , 0x0000, 0xffff); GUI_PrtStr(128, 270, Time/Div, 0xfee4, 0x0274); / Time/Div和 60uS 显示 GUI_PrtStr(108, 275, 60uS , 0x0000, 0xffff); GUI_PrtStr( 88, 274, TrigVolt, 0xfee4, 0x0274);/ TrigVolt显示 sprintf(UART0_StrBuff, %1.2fV , CH1TptVal*3.3/255); GUI_PrtStr( 68, 276, UART0_StrBuff, 0x0000, 0xffff); GUI_PrtStr( 48, 280, Invert, 0xfee4, 0x0274);/ Invert和 Off 显示 GUI_PrtStr( 28, 283, Off , 0x0000, 0xffff); 4. 5 定时器设计 PWMPR = 0x00; / 不分频,计数频率为Fpclk PWMMCR = 0x02; / 设置PWMMR0匹配时复位PWMTC PWMMR0 = CYCLE_DATA; / 设置PWM周期 PWMMR6 = DUTY_CYCLE_DATA; / 设置PWM占空比 PWMLER = 0x41; / PWMMR0、PWMMR6锁存 PWMPCR = 0x4000; / 允许PWM6输出,单边PWMPWMTCR = 0x09; / 启动定时器,PWM使能4. 6 AD转换设计ADCR = (1 7) |/ SEL = 0x80 ,选择通道7 (Fpclk / 4500000 - 1) 8) | / CLKDIV = Fpclk / 4500000 - 1 ,即转换时钟为4.5MHz (1 16) |/ BURST = 1 ,软件控制转换操作 (2 17) | / CLKS = 2 ,使用9clock转换, 8位精度 (1 21) | / PDN = 1 , 正常工作模式(非掉电转换模式) (0 22) | / TEST1:0 = 00 ,正常工作模式(非测试模式) (1 24) | / START = 1 ,直接启动ADC转换 (1 27);/ EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换) dat = ADDR; / 读取ADC结果,并清除DONE标志位4. 7 数据处理void OSC_PCM(void)/ 2048个数据采集,每个数据为8位 uint32 i, dat; for(i=0; i8) & 0xFF; / 提取AD转换值 4. 8 触发设计uint8 OSC_LockTrigerPoint(void)/ 触发点锁定 uint32 i; uint32 Avg0, Avg1; CH1Tpt1 = 0; for(i=250; i 2; / 对采样值滤波 Avg1 = (CH1i+7+CH1i+6+CH1i+5+CH1i+4) 2; / 对采样值滤波 if( (Avg1 - Avg0)0 ) / 比较2个采样点,判断是否为上升沿 CH1TptVal = 80;/ 触发点电压为:3.3*80/255=1.04V if(Avg1CH1TptVal) & (Avg0 240) / 已经锁定触发点,可以寻找周期 for(i=CH1Tpt1+8; i 2; Avg1 = (CH1i+7+CH1i+6+CH1i+5+CH1i+4) 2; if( (Avg1 - Avg0)0 ) /CH1TptVal = 128; if(Avg1CH1TptVal) & (Avg0CH1TptVal) / 是否为触发点 CH1Tpt2 = i; i = 0xffff; i+; if(i = 1250) CH1Tpt2 = 250; / 给定一个初始值用于显示 return(0); else CH1Fre = 422880/(CH1Tpt2-CH1Tpt1); return(1); 4. 10 求最值设计void OSC_CH1MaxMin(void)/求(寻找)最大值和最小值 uint32 i; uint32 Max, Min; Max = CH1CH1Tpt1-125; Min = CH1CH1Tpt1-125; for(i=CH1Tpt1-125; iMax) Max = CH1i; if(CH1iMin) Min = CH1i; CH1Max = Max; CH1Min = Min;4. 11 主函数与调用的TASK设计#include config.h#include stdlib.hOS_STKTask0Stk 128;/ Define the Task0 stack 定义用户任务0的堆栈OS_STKTask1Stk 128;/ Define the Task1 stack 定义用户任务1的堆栈OS_STKTask2Stk 128;/ Define the Task2 stack 定义用户任务2的堆栈OS_STKTask3Stk 128;/ Define the Task3 stack 定义用户任务3的堆栈OS_STKTask4Stk 128;/ Define the Task4 stack 定义用户任务4的堆栈void Task0(void *pdata);/ Task0 任务0void Task1(void *pdata);/ Task1 任务1void Task2(void *pdata);/ Task2 任务2void Task3(void *pdata);/ Task3 任务3void Task4(void *pdata);/ Task4 任务4int main (void)OSInit();/操作系统初始化OSTaskCreate (Task0,(void *)0, &Task0Stk128 - 1, 2);/创建Task0任务,优先级为2OSTaskCreate (Task1,(void *)0, &Task1Stk128 - 1, 3);/创建Task1任务,优先级为3OSTaskCreate (Task2,(void *)0, &Task2Stk128 - 1, 4);/创建Task2任务,优先级为4OSTaskCreate (Task3,(void *)0, &Task3Stk128 - 1, 5); /创建Task3任务,优先级为5OSTaskCreate (Task4,(void *)0, &Task4Stk128 - 1, 6);/创建Task4任务,优先级为6OSStart();/启动操作系统return 0;Task0 任务0 /采样1600个数据, 锁定触发点 void Task0(void *pdata) uint32 i;pdata = pdata;/防止编译警告,以下同TargetInit ();/初始化目标板while (1) OS_ENTER_CRITICAL();/进入临界区 for(i=0;i8)&0xFF; /提取AD转换值(8位) OS_EXIT_CRITICAL();/退出临界区 OSC_LockTrigerPoint();/锁定触发点 OSC_FindPeriod();/求频率 OSC_CH1MaxMin();/求最大、最小值 GUI_ClrTrack();/清除旧轨迹(前一次波形) GUI_DispTrack();/显示新轨迹(当前波形)OSTimeDly(50);/延时 Task1 任务1 /调用函数:sprintf,GUI_PrtStr,OSTimeDlyvoid Task1(void *pdata) pdata = pdata; while (1) sprintf(UART0_StrBuff, CH1max = %1.2fV, CH1Max*3.3/256);/显示通道1最大值(1位正数、2位小数) GUI_PrtStr(5, 10, UART0_StrBuff, 0xfee4, 0x0274);/坐标位置5、10,前景黄色,背景蓝色 sprintf(UART0_StrBuff, CH1min = %1.2fV, CH1Min*3.3/256);/显示通道1最小值(1位正数、2位小数) GUI_PrtStr(5, 110, UART0_StrBuff, 0xfee4, 0x0274); sprintf(UART0_StrBuff, CH1Fre = %6d Hz, CH1Fre); /显示通道1频率(6位正数) GUI_PrtStr(5, 210, UART0_StrBuff, 0xfee4, 0x0274); OSTimeDly(100);/延时 Task2 任务2void Task2(void *pdata) pdata = pdata; while (1) GUI_PrtStr(208, 270, Coupling, 0xfee4, 0x0274); /直流耦合 GUI_PrtStr(188, 280, DC , 0x0000, 0xffff);/前景黑色,背景白色 GUI_PrtStr(168, 273, Volt/Div, 0xfee4, 0x0274);/Y轴;0.42V/格 GUI_PrtStr(148, 275, 0.42V , 0x0000, 0xffff); GUI_PrtStr(128, 270, Time/Div, 0xfee4, 0x0274);/X轴;60uS/格 GUI_PrtStr(108, 275, 60uS , 0x0000, 0xffff); GUI_PrtStr( 88, 274, TrigVolt, 0xfee4, 0x0274);/触发电平显示 sprintf(UART0_StrBuff, %1.2fV , CH1TptVal*3.3/255); GUI_PrtStr( 68, 276, UART0_StrBuff, 0x0000, 0xffff); GUI_PrtStr( 48, 280, Invert, 0xfee4, 0x0274);/反向显示关 GUI_PrtStr( 28, 283, Off , 0x0000, 0xffff); OSTimeDly(2000); Task3 任务3 /CH1Tpt1:通道1符合触发条件对应的第一个采样序号,CH1Tpt2:通道1符合触发条件对应的第二个采样序号void Task3(void *pdata) pdata = pdata; while (1) sprintf(UART0_StrBuff, CH1Tpt1 = %6dnr, CH1Tpt1); UART0_SendStr(UART0_StrBuff);/通过串口0,发送CH1Tpt1 sprintf(UART0_StrBuff, CH1Tpt2 = %6dnr, CH1Tpt2); UART0_SendStr(UART0_StrBuff);/通过串口0,发送CH1Tpt2 GUI_PrtStr(226, 268, Running , 0xfee4, 0x0274); /交替显示Running OSTimeDly(200); GUI_PrtStr(226, 268, Running , 0xfee4, 0xa000); OSTimeDly(200); Task4 任务4 /按键控制 void Task4(void *pdata) uint32 pwm;pdata = pdata; while(1) /* 自检信号,可以调节PWM占空比*/ if(IO0PIN&KEY)=0) OSTimeDly(20); if( (IO0PIN&KEY) = 0 ) pwm+; while( (IO0PIN&KEY) = 0 ); if(pwm = 5) pwm = 1; PWMMR6 = DUTY_CYCLE_DATA*pwm;/ 设置PWM占空比 PWMLER = 0x41; / PWMMR0、PWMMR6锁存 PWMTCR = 0x09; / 启动定时器,PWM使能 拓展知识Agilent 1000 系列便携式示波器23 种自动测量所有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025近距离沙石运输合同样本
- 网络安全设备配置与防护题库 (信息安全领域实战项目)
- 幼儿园课件-认识蔬菜
- 肺癌放疗饮食护理
- 人教版小学一年级数学下册期中试题
- 眩晕护理方案及护理常规
- 三角形全等的判定(复习)教学任务分析
- 视网膜毛细血管前小动脉阻塞的临床护理
- 山东省济宁市2025年高考模拟考试地理试题及答案(济宁三模)
- 浙江省宁波市镇海中学2025年5月第二次模拟考试语文试卷+答案
- DL-T1098-2016间隔棒技术条件和试验方法
- 人文英语1-国开机考答案
- JT-T-904-2014交通运输行业信息系统安全等级保护定级指南
- 江苏医疗美容主诊医师
- 2024专升本英语答题卡浙江省
- 2024年济南市槐荫区九年级语文中考三模试卷附答案解析
- 家电售后服务管理办法
- 妇科十味片改善月经不调的临床研究
- 新版康复治疗23-超声波疗法
- 2024年社会工作实务(初级)考试题及答案(含真题、典型题)
- 2023年中考语文非连续性文本阅读练习题汇编(含答案)
评论
0/150
提交评论