收藏 分销(赏)

西安邮电大学嵌入式板级电路装配课程设计实验报告.docx

上传人:w****g 文档编号:7199324 上传时间:2024-12-27 格式:DOCX 页数:37 大小:4.52MB
下载 相关 举报
西安邮电大学嵌入式板级电路装配课程设计实验报告.docx_第1页
第1页 / 共37页
西安邮电大学嵌入式板级电路装配课程设计实验报告.docx_第2页
第2页 / 共37页
西安邮电大学嵌入式板级电路装配课程设计实验报告.docx_第3页
第3页 / 共37页
西安邮电大学嵌入式板级电路装配课程设计实验报告.docx_第4页
第4页 / 共37页
西安邮电大学嵌入式板级电路装配课程设计实验报告.docx_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、西安邮电大学嵌入式板级电路装配课程设计实验报告资料仅供参考 西 安 邮 电 大 学 (计算机学院) 嵌入式系统板级电路装配 课程设计实验报告专业名称: 计算机科学与技术班 级: 计科1405 学 号: XXXXXXX姓 名: XXX指导教师: XXX实验日期: 12月11日12月22日第一周:开发板硬件装配一、 开发板硬件结构开发板由PACK板和底板构成,PACK板板载一枚LCP2132芯片,该芯片是NXP公司(飞利浦创立)设计的一款基于ARM7TDMI-S的高性能32位RISC微控制器,具有Thumb扩展功能,64KB片内Flash ROM,具有在系统编程(ISP)和应用编程(IAP),16

2、KB RAM,向量中断控制器,两个UART,一个带全调制解调器接口。 两个I2C串行接口,两个SPI串行接口三个32位定时器,看门狗定时器,带有备用电池备份的实时时钟,欠压检测电路通用I/O引脚。 CPU时钟高达60 MHz,片内晶体振荡器和片内PLL。板子总体分了电源电路,晶振电路,复位电路,LED电路,按键电路,串口电路,JTAG调试电路等几部分,如下图所示图1 asy ARM 2132开发板底板元件布局图二、 硬件原理组成及分析开发板完整电路图如下图所示图2 asy ARM 2132开发板完整电路图1. 电源电路:LPC2132电源电路部分采用了一个DC接口的POWER1供电口和一个5V

3、 的USB供电口,内部采用了一个1N5819二极管来稳流,采用SPX1117M3-3.3低压差稳压器,如右图所示。电路另一边有一个红色的发光二极管,当电源接通后,二极管会点亮。2. 复位电路复位电路采用一颗CAT1025芯片,CAT1025是基于微控制器系统的存储器和电源监控的完全解决方案。它们利用低功耗CMOS技术将2K位的串行EEPOM和用于掉电保护的系统电源监控电路集成在一块芯片内。存储器采用400KHz的I2C总线接口。CAT1025包含1个精确的Vcc监控测电路和2个开漏输出:RESET和!RESET。当Vcc低于复位门槛电压时,!RESET引脚将变为高电平,RESET将变为低电平。

4、CAT1025还包含一个写保护输入(WP)。如果WP连接高电平,则写操作被禁止。nRST连接到芯片LPC2132的复位引脚,当复位按键RST1按下时,CAT1025的复位引脚输出有效信号,使芯片LPC2132复位。3. 系统时钟电路LPC2132微控制器可使用外部晶振或外部时钟源,片外晶振频率范围:130MHz,如下图中Y1-11.0592MHz,内部锁相环电路PLL可调整系统时钟,经过片内PLL可实现最大为60MHz的CPU操作频率,实时时钟具有独立的时钟源,如下图中Y2-32.768KHZ晶振。4. JTAG接口电路采用ARM公司提出的标准20脚JTAG仿真调试接口,JTAG信号的定义以及

5、与LPC2132的连接如下图:5. 按键及显示电路LPC2132开发板具有4个按键、4个LED灯。4个LED灯一边已经与DP3V3连接,另一边经过1个470R的电阻后与JP1跳线相连,当JP12连通的时候,LED1的一侧与芯片的P0.17口就会连通,P0.17口输出低电平,LED1就会点亮,如果P0.17输出高电平,LED1就会熄灭。4个按键中复位键已经在前面介绍了,剩下三个按键KEY1、KEY2、KEY3一边接地,另一边接了4K7的电阻然后与正极相连,还接了JP2跳线组,如果JP2的12连通,那么P0.16就和KEY1连通,当按键按下的时候,P0.16输出低电平,当按键没有按下的时候P0.1

6、6输出高电平,因为按键检测电路能够编写为检测是否有低电平来判断按键是否按下。6. UART接口电路CH340G 是一个USB转串口芯片,能够把电脑的USB口映射为串口用。当使用串口电路进行UART调试的时候,需要将JP6短接,连通P0.0和CH340G的TXD口,连通P0.1和CH340G的RXD口。另一边CH340G的X1和X0接入了X1-12MHz的晶振。三、 开发板硬件安装调试过程 焊接最小系统首先焊接电源模块,复位电路模块,晶振模块,构成最小系统,然后对最小系统进行测试。测试方法:将电源线和开发板的电源模块连接,观察电源指示灯是否点亮,如果点亮,使用万用表测量U1点电压,数值范围为:3

7、.29V3.31V,标准值为3.30V,表明电源电路模块正常。然后用示波器观察晶振引脚的波形,查看晶振是否正常。 焊接外接电路板。在洞洞板上面焊接一个LED灯,然后引出接口,一个为正,一个为负,然后将正负极分别与排针焊接在一起;将蜂鸣器的正负极分别于排针焊接;将按键的两边与排针焊接在一起。测试方法:将LED正负极分别与开发板的DP3.3V和GND连接,能够观察到LED灯点亮。蜂鸣器的正负极与开发板的DP3.3V和GND连接,能够听到蜂鸣器发声。将开发板正极和蜂鸣器正极相连,蜂鸣器负极与开关一边相连,然后开关另一边接低电平,按下按键后蜂鸣器会发出声音,证明开关电路完好。 焊接LED灯焊接LED电

8、路,将LED1-LED7焊接在开发板上面,然后焊接R4-R7四个电阻,这是二极管的分压电阻。测试方法:给开发板通电,然后依次给JP1的1、3、5、7接低电平,会发现LED1-LED4依次点亮,如果有不亮的,说明焊接有误,检查二极管的正负是否正确,用万用表检测是否有短路。 焊接开关将KEY1、KEY2、KEY3焊接到开发板上面,然后将3个4K7的电阻焊接到R1、R2、R3三个位置,最后在JP2上面焊接一组排针。测试方法:给开发板供电,用万用表检测KEY1-KEY3的电压,正常范围应该是3.28V-3.31V,当KEY1键按下的时候,JP2的1电压应该为0V;当KEY2键按下的时候,JP2的3电压

9、应该为0V;当KEY3键按下的时候,JP2的4电压应该为0V。 焊接串口模块将CH340G焊接到开发板对应位置,要注意焊接的时候容易将周围引脚连接在一起,必须非常小心的操作。测试方法:给开发板供电,然后USB口与电脑连接,电脑的设备管理器能够检测到串口输入,如下图: 焊接JTAG模块JTAG模块很简单,只需要将JTAG后面的引脚依次焊接即可。检测方法:开发板供电后,用JTAG线连接开发板的电脑,然后打开H-JTAG Server,点击搜索能够检测到芯片。如下图:在H-Flasher窗口的“Flash Selection”项选择仿真的器件型号LPC2132,在H-Flasher窗口的“Progr

10、amming”项窗,点击按钮,H-JTAG将检测到的器件类型显示于本窗口。四、 遇到问题分析及硬件调试体会1、 遇到的问题焊接好LED灯模块后,测试LED灯的时候发现LED3不亮,用万用表检测后发现是LED3的引脚虚焊,重新焊接后问题解决。 2、硬件调试体会焊接过程中需要足够的耐心,不能看到别的同学进度比自己快就急躁,急于求成做出来的产品只能是差的甚至是坏的,我们应该从焊接中总结经验,提高自己的焊接能力,掌握焊接技巧,焊接出最好,最完美的电路板。第二周:软件编程与调试一、调试环境搭建 启动ADS1.2IDE集成开发环境。 在ADS主窗口主菜单选择File-New,使用asm for lpc21

11、32工程模板建立一个工程(图例中工程名称为:ZQL_LIB1),指定工程路径(图例中工程路径为 D:ARM_Lib_BakARM_asm)。 点击确认,创立工程。 在ZQL_LIB1工程窗口,双击模板文件main.S,打开该文件。 可在主窗口菜单选择Edit-Perferences,设置字体和字号。 在main.S文件编辑窗的 “add the user code here. 添加用户代码”行下建立用户汇编程序代码 。 选择Project-Make(或快捷键),编译链接整个工程。若编译成功,则Erros & Warnings对话框会报告编译错误为0,此时即可对工程进行仿真。二、调试方法 单步运

12、行;在AXD调试器主窗口,选择 Execute - Step (或快捷键),处理器执行一行代码; 设置断点;在AXD调试器“代码调试窗口”双击目标代码行,若出现红色实心圆点,则表示断点设置成功;然后选择Execute-Go全速运行,处理器执行程序停止在断点行; 运行到光标行;在AXD调试器“代码调试窗口”单击选择目标代码行,然后在AXD调试器主窗口,选择Execute-Run to Cursor运行到光标处;经过断点调试能够观察ARM寄存器和存储单元的数值变化,具体操作方法在后面的实验中会作详细介绍。二、完成实验内容本人主要负责内容:GPIO输入输出基础实验,交通灯综合实验中的蜂鸣器、中断服务

13、程序、GPIO初始化模块以及键盘扫描部分编写。1、GPIO输入输出实验(1)实验目的 掌握LPC2132工程模板的使用。 掌握EasyJTAG仿真器的安装和使用。 能够在EasyARM教学实验开发平台上运行第一个程序。 熟悉LPC 系列ARM7微控制器的GPIO控制。(2)实验原理LPC2132 系列的 ARM7 微控制器的所有 GPIO 口,均为双向 I/O 口。引脚能够根据需要配置为 I/O 口或其它功能,和 GPIO 相关的寄存器一共有 6 个见下表:经过编程控制BEEP(P0.7)输出低电平,从而实现蜂鸣器持续发声。 (3)实验过程 启动ADS1.2IDE集成开发环境,选择ARM Ex

14、ecutable Image for lpc2132工程模板建立一个工程BeepCon_C。 在user组里编写主程序代码main.c。 选用DebugInRam生成目标,然后编译链接工程。 将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接 选择Project-Debug,启动AXD进行JTAG仿真调试。 全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。 单击Context Variable图标按钮(或者选择Processor Views-Variables)打开变量观察窗口,经过此窗口能够观察局部变量和全局变量。选择System

15、Views-Debugger Internals 即可打开LPC 系列ARM7微控制器的片内外寄存器窗口。 能够单步运行程序,能够设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。(4)问题分析与解决方法GPIO功能选择之后没有进行IO0DIR方向选择,导致P0.7口依然为输入口,无法输出低电平信号,故而蜂鸣器没有发声,添加这行代码后,成功实现功能。2、定时器与中断控制(1)实验目的 熟悉LPC 系列ARM7 微控制器的定时器0的基本设置及匹配输出应用。(2)实验原理使用定时器0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。备注:EasyARM

16、2132实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量 Fpclk = 11059200 ; (3)实验过程 启动ADS 1.2,使用ARM Executable Image for lpc2132工程模板建立一个工程TimeOut_C。 在user 组中的main.c 中编写主程序代码。 选用DebugInExram 生成目标,然后编译连接工程。 选择【Project】-【Debug】,启动AXD 进行JTAG 仿真调试。 将LPC2132开发板上的P0.7接入蜂鸣器 全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒依次循环。代码如下:#include config.

17、h#define BEEP 1 7/* P0.7控制BEEP,低电平蜂鸣*/* 函数名称 :IRQ_Timer0()* 函数功能 :定时器0中断服务程序,取反LED2控制口。* 入口参数 :无* 出口参数 :无*/void _irq IRQ_Timer0 (void)if (IO0SET & BEEP) = 0)IO0SET = BEEP;/* 关闭BEEP */elseIO0CLR = BEEP;T0IR = 0x01;/* 清除中断标志 */VICVectAddr = 0x00;/* 通知VIC中断处理结束 */* 函数名称 :main()* 函数功能 :使用定时器实现1秒钟定时,控制LE

18、D9闪烁。中断方式。* 调试说明 :需要将跳线JP11连接BEEP。*/int main (void)PINSEL1 = 0x00000000;/* 设置管脚连接GPIO */IO0DIR = BEEP;/* 设置BEEP控制口输出 */IRQEnable();/* IRQ中断使能 */* 定时器0初始化 */T0TC = 0;/* 定时器设置为0 */T0PR = 0;/* 时钟不分频 */T0MCR = 0x03;/* 设置T0MR0匹配后复位T0TC,并产生中断标志 */T0MR0 = Fpclk;/* 1秒钟定时;系统中已定义Fpclk = 11059200 */T0TCR = 0x0

19、1;/* 启动定时器 */* 设置定时器0中断IRQ */VICIntSelect = 0x00;/* 所有中断通道设置为IRQ中断 */VICVectCntl0 = 0x20 | 0x04;/* 设置定时器0中断通道分配最高优先级*/VICVectAddr0 = (uint32)IRQ_Timer0;/* 设置中断服务程序地址 */VICIntEnable = 1 【Debug】,启动AXD 进行JTAG 仿真调试。 全速运行程序,LED闪烁; 每一次按键Key,蜂鸣器就会转换静音或鸣响状态。代码如下:#include config.h#define BEEPCON 17 / P0.7 引脚

20、控制Beep,低电平蜂鸣#define LED1 10; dly-) for(i=0; i5000; i+); /* 名 称:IRQ_EINT0()* 功 能:外中断服务程序,取反BEEPCON 控制口。* 入口参数:无* 出口参数:无*/void _irq IRQ_Eint0(void)if (IO0SET & BEEPCON) = 0 ) / 反转BEEPCON管教输出状态IO0SET = BEEPCON;elseIO0CLR = BEEPCON;while ( (EXTINT &0x01) != 0 )EXTINT = 0x01; / 清除EINT0中断标志VICVectAddr = 0

21、x00; / 通知VIC 中断处理结束/* 文 件 名:main.c* 功 能:主程序闪烁LED1;KEY1模拟外中断方式,每次外中断事件反转Beep鸣响状态。 * 说 明:*/int main(void)int x;PINSEL0 = 0x00000000; / 设置管脚连接GPIOPINSEL1 = 0x00000001; / 设置管脚P0.16为 EINT0IO0DIR = BEEPCON; / 设置 P0.7 为输出IO1DIR = LED1; / 设置 P1.18 为输出EXTMODE = 0x00;IRQEnable();VICDefVectAddr = (int)IRQ_Eint

22、0; / 设置 EINT0 为 非向量IRQ 中断EXTINT = 0x01; / 清除 EINT0 中断标志VICIntEnable = 10x0e;/ 使能 EINT0 中断while(1)/ 等待EINT0中断if (x!=0) IO1SET = LED1;x = 0; else IO1CLR = LED1;x = 1; DelayNS(100);return(0);(4)问题分析与解决方法LED闪烁正常,可是按键后蜂鸣器没有任何反应,经过一步步排查,最终发现,引脚定义到了KEY3,可是按键却按下了KEY1,更改引脚定义后,问题解决。4、UART串口通信(1)实验目的经过实验,掌握UAR

23、T查询1方式程序的设计。(2)实验原理经过串口0接收上位机发送的字符串,如“Hello EasyARM2132!”,然后返回上位机显示。 (3)实验过程 启动ADS 1.2,使用ARM Executable Image for lpc2132工程模板建立一个工程DataRet_C。 在user 组中的main.c 中编写主程序代码,在项目中的config.h 文件中加入#include 。 选用DebugInRam生成目标,然后编译连接工程。 将EasyARM2132开发板上的JP6跳线分别选择TxD0和RxD0端时,方可进行UART0通信实验。 使用串口延长线把LPC2132教学实验开发平台

24、的CZ2(UART0)与PC机的COM1 连接。PC 机运行EasyARM 软件,设置串口为COM1,波特率为115200,然后选择【设置】-【发送数据】,在弹出的发送数据窗口中点击“高级”即可打开接收窗口。 选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。全速运行程序,在PC 机上的EasyARM软件发送如“Hello EasyARM2132!”字样的字符串,EasyARM2132开发板接收到数据后,并将接收到的数据回发给PC机。代码如下:#include “config.h”#define UART_BPS115200/串口通信波特率/* 名 称:DelayNS()

25、* 功 能:长软件延时* 入口参数:dly延时参数,值越大,延时越久* 出口参数:无*/void DelayNS(uint32 dly) uint32 i; for(; dly0; dly-) for(i=0; i 0; n- )*s+ = UART0_GetByte();/*函数名称:UART0_SendByte()*函数功能:向串口发送字节数据*入口参数:dat要发送的数据*出口参数:无*/void UART0_SendByte(uint8 dat)U0THR = dat;/写入数据while(U0LSR & 0x40 ) = 0);/等待数据发送完毕/*函数名称:UART0_SendSt

26、r()*函数功能:向串口发送一字符串*入口参数:str要发送的字符串的指针*出口参数:无*/void UART0_SendStr(uint8 const *str)while(1)if( *str = 0 )break;/遇到结束符,退出UART0_SendByte(*str+);/发送数据/* 名 称:main()* 功 能:从串口UART0接收字符串“Hello EasyARM2132!”,并发送回上位机显示* 说 明:需要PC串口显示终端软件,如EasyARM.exe。*/int main(void)uint8 snd32;PINSEL0 = 0x00000005; / 设置I/O连接到

27、UART0UART0_Init();/串口初始化UART0_GetStr(snd, 18); /从串口接收字符串DelayNS(10);UART0_SendStr(snd); /向串口发送字符串DelayNS(10);while(1);return(0);(4)问题分析与解决方法代码运行后,PC机没有显示出来字符串,检查后发现USB接口的接触不良,接触不良的原因是焊接的时候没有贴牢靠就焊接上去了,解焊后重新焊接了USB口,问题解决。5.综合实验:交通灯我负责的是蜂鸣器函数,中断服务程序,GPIO初始化函数,键盘扫描模块。最终效果图如下:蜂鸣器函数模块:定义一个BEEP引脚P0.8作为蜂鸣器的输

28、入口,P0.8给低电平,蜂鸣器响uint32 BEEP = 18; P0.8控制蜂鸣器,低电平有效void say() 蜂鸣器函数 IO0CLR = BEEP; DelayNS(10); IO0SET = BEEP; 中断服务程序模块:经过定时器产生1秒的时钟频率,然后在中断服务程序中调用display函数,display函数,display传入的参数就是数码管要显示的数字,然后每秒调用一次display函数,实现倒计时。void TimeInit() /中断服务程序初始化函数 IRQEnable(); IRQ中断使能 定时器0初始化模块 T0TC = 0; 定时器设置为0 T0PR = 0;

29、 时钟不分频 T0MCR = 0x03; 设置T0MR0匹配后复位T0TC,并产生中断标志 T0MR0 = Fpclk; 1秒钟定时 T0TCR = 0x01; 启动定时器 设置定时器0中断IRQ VICIntSelect = 0x00; 所有中断通道设置为IRQ中断 VICVectCntl0 = 0x20 0x04; 设置定时器0中断通道分配最高优先级 VICVectAddr0 = (uint32)IRQ_Timer0; 设置中断服务程序地址 VICIntEnable = 1 0x04; 使能定时器0中断 void _irq IRQ_Timer0 (void) 中断服务程序 display(

30、num); 调用数码管显示函数 T0IR = 0x01; 清除中断标志 VICVectAddr = 0x00; 通知VIC中断处理结束 GPIO初始化函数:PINSEL0和PINSEL1选择GPIO功能,然后设置数码管,LED灯,蜂鸣器引脚做输出功能。void GPIOInit() PINSEL0 = 0x00; 设置功能选择GPIO PINSEL1 = 0x00; 设置功能选择GPIO IO0DIR = (SEG7|LEDS3|BEEP); 设置数码管,lED灯,蜂鸣器引脚为输出键盘扫描模块:将键盘扫描模块写成函数放入while循环中,循环判断按键是否按下,扫描函数带有消抖操作,防止重复检测

31、。Flag标志,决定了现在灯的状态,flag=0是正常倒计时模式,flag=1是紧急模式绿灯常亮,flag=2是紧急模式红灯常亮。void keyscan() 键盘扫描函数 if (IO0PIN & KEY1) = 0) 如果KEY1按下 DelayNS(10); 消除抖动 if(IO0PIN & KEY1) = 0) 再次检测KEY1是否按下 num=21; flag=0; 功能选择为正常模式 else if (IO0PIN & KEY2) = 0) 如果KEY2按下 DelayNS(10); 消除抖动 if(IO0PIN & KEY2) = 0) 再次检测KEY2是否按下 flag=1; 功能选择为绿灯常亮模式 else if (IO0PIN & KEY3) = 0) 如果KEY3按下 DelayNS(10); 消除抖动 if(IO0PIN & KEY3) = 0) 再次检测KEY3是否按下 flag=2; 功能选择为红灯常亮模式 三、总结与体会经过这次实验,对于开发板的焊接,调试有了新的认识,对于焊接电路板的方法和顺序有更好的了

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 远程教育/电大

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服