深 圳 大 学 实 验 报 告
课程名称: 硬件工程实践
实验项目名称: 串口实验;ADC实验
学院: 医学院
指导教师: 董磊
报告人(组长): 叶秋思 学号:2012220034 专业年级:生物医学工程 2012 班级: 02
报告人(组员): 王凌峰 学号:2012220042 专业年级:医疗器械工程 20## 班级: 01
报告人(组员): 卢健聪 学号:2012220043 专业年级:医疗器械工程 2012 班级: 01
实验时间: 2014.11~2014.12
实验报告提交时间: 2015.1.4
第二篇:20xx年6月中国电子协会嵌入式硬件与软件_助理工程师实践考试答案
20##年嵌入式技术实践考试试题
姓名: 身份证号: 考号:
考试日期:2011年6月 日 考试时间:3小时
一、实验要求:
在基于ARM9的S3C2410开发板或实验箱进行实验,利用ADS1.2或 IAR EWARM调试汇编或C语言编写的源程序,并能下载到开发板上运行,得到正确结果。
说明:由于各个认证培训中心的开发板可能LED的电路不一样,导致使用的I/O端口也不一样,因此,在具体实验时,以当地开发板或实验箱为主进行实验。
二、开发环境要求:
1、硬件环境:PC机,S3C2410开发板,开发板与PC机的连线(串口线、并口线、USB线)。
2、开发工具:
(1)GIVEIO驱动程序(已经安装在PC机上);(2)USB驱动(已经安装在PC机上)
(3)ADS调试工具(已经安装在PC机上); (4)sjf2410.exe
(5)DNW下载调试工具(已经安装在PC机上)。
三、问题
下图是基于S3C2410的芯片设计的一个电路,根据下图,回答问题:
1、读下面的电路图,说明该电路完成的功能是什么?并简要说明其工作原理(10分)。
2、根据下面的s3c2410的数据手册与上面的电路,回答下列问题:
1) 说明GPBCON寄存器的作用?根据上面电路实现的功能,指出用到了该寄存器的那些位,并设置该位的值,最后求出GPBCON寄存器的配置数据?(5分)
2) 说明GPBUP寄存器的作用?根据上面电路实现的功能,禁止GPB端口的上拉电阻,指出用到了该寄存器的那些位,并设置该位的值,最后求出GPBCON寄存器的配置数据?(5分)
3) 说明GPBDAT寄存器的作用?根据上面电路实现的功能,使LED1亮、LED2、LED3、LED4灭,指出用到了该寄存器的那些位,并设置该位的值,最后求出GPBCON寄存器的配置数据?(5分) )
4) 利用汇编语言或C语言设计一段程序,在程序内控制GPIO的输出,以点亮指定的LED(显示方式自己定)。写出程序设计流程框图,并写出程序的主要部分?(20分)
说明:由于各个认证培训中心的开发板可能LED的电路不一样,导致使用的I/O端口也不一样,因此,在下面的5)与6)步的具体实验时,以当地开发板或实验箱为主进行实验,在试卷上要画出实验电路图,指出所用端口。
5) 利用ADS1.2或 IAR EWARM进行调试,写出为完成上面实验,ADS1.2或 IAR EWARM的主要配置信息?(8分)
6) 完成实验过程,记录实验结果并对结果进行分析(36分)
四、分析题
S3C2410X支持HCLK、FCLK和PCLK的分频选择,其比率是通过CLKDIV寄存器中的HDIVN和PDIVN控制的,如下表1所示。常用输出频率配置如表2所示。
表1 HCLK、FCLK和PCLK的分频选择
表2 常用输出频率配置表
有如下函数:
//========================*[ MPLL ]==============================*
void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
{
rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv; // rMPLLCON为MPLL控制寄存器
}
//========================[ HCLK, PCLK ]===========================
void ChangeClockDivider(int hdivn,int pdivn)
{
// hdivn,pdivn FCLK:HCLK:PCLK
// 0,0 1:1:1
// 0,1 1:1:2
// 1,0 1:2:2
// 1,1 1:2:4
rCLKDIVN = (hdivn<<1) | pdivn; // rCLKDIVN为时钟除法控制寄存器
if(hdivn)
MMU_SetAsyncBusMode();
else
MMU_SetFastBusMode();
}
回答下列问题:
1)通过函数ChangeClockDivider(int hdivn, int pdivn)配置什么总线时钟?(2分)
2)通过函数ChangeMPllValue(int mdiv,int pdiv, int sdiv)配置什么时钟?选择什么因子可获得不同的该时钟的值?(3分)
3)使FCLK、HCLK和PCLK的频率比为1:2:4, HDIVN和PDIVN分别为多少?(1分)
如果输入频率=12MHz,使输出频率=202.8 MHz, 则mdiv=?, pdiv=? sdiv=?(3分)
利用上面两个函数完成所需的配置,写出函数表达式。(2分)
参考答案要点:
三、问题
1、答:
1)该电路完成的功能是通过S3C2410的GPB8-10的4个端口控制的4个LED的点亮和熄灭。
2)工作原理:由电路原理图知,4个发光二极管LED的正极接电源的正极。当GPB8-10端口的某一位输出为0时,对应的该发光二极管LED被点亮,当GPB8-10端口的某一位输出为1时,对应的该发光二极管LED熄灭,
2、 答:1):(1)GPBCON寄存器的作用是配置B口的功能属性,如输入输出属性。(2)根据上面电路实现的功能,在此实验中GPB8-10端口定义为输出属性。(3)用到了GPBCON寄存器的14-21位,GPB8-10端口对应的位的值为bit[15:14]=01,bit[17:16]=01,bit[19:18]=01,bit[21:20]=01,其余为为0,可以求出GPBCON寄存器的配置数据为0x154000(说明:该值有多个,只要保证14-21对应的位设置正确就行)。
2):(1)GPBUP寄存器的作用是为提供或禁止上拉电阻。(2)根据上面电路实现的功能,禁止GPB端口的上拉电阻,用到了该寄存器的7-10位,对应的位的值为1,可以求出GPBUP寄存器的配置数据为0xfffff(说明:该值有多个,只要保证7-10对应的位设置正确就行)。
3):(1)GPBDAT寄存器的作用是设置端口的数据。(2)根据上面电路实现的功能,使LED1亮、LED2、LED3、LED4灭,用到了该寄存器的7-10位,对应的相关位的值为:第7为0,第8-10位为1, 可以求出GPBDAT寄存器的配置数据为0xfffff(说明:该值有多个,只要保证7-10对应的位设置正确就行)。
4): 参考程序设计流程框图与程序主要部分如下:
//汇编程序如下,文件名ledasm.asm。
rPCONB EQU 0x56000010
rPDATB EQU 0x56000014
rPUPB EQU 0x56000018 ;禁止PORT B上拉
AREA Init,CODE,READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读
ENTRY ;程序的入口点标识
ResetEntry
;下面这三条语句,主要是用来设置I/O口GPB7为输出属性
ldr r0,=rPCONB ;将寄存器rPCONB的地址存放到寄存器r0中
ldr r1,=0x154000
str r1,[r0] ;将r1中的数据存放到寄存器rPCONB中
;下面这三条语句,主要是禁止GPB端口的上拉电阻
ldr r0,=rPUPB
ldr r1,=0xffff
str r1,[r0]
ldr r2,=rPDATB ;将数据端口E的数据寄存器的地址附给寄存器r2
ledloop
ldr r1,=0x700
str r1,[r2] ;使GPB7输出低电平,LED1会亮
bl delay ;调用延迟子程序
ldr r1,=0x680 ;使GPB8输出低电平,LED2会亮
str r1,[r2]
bl delay
ldr r1,=0x580 ;使GPB9输出低电平,LED3会亮
str r1,[r2]
bl delay
ldr r1,=0x380 ;使GPB10输出低电平,LED4会亮
str r1,[r2]
bl delay
b ledloop ;不断的循环
;下面是延迟子程序
EXPORT
delay
ldr r3,=0xffffff ;设置延迟的时间
delay1
sub r3,r3,#1 ;r3=r3-1
cmp r3,#0x0 ;将r3的值与0相比较
bne delay1 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句
mov pc,lr ;返回
END ;程序结束符
//C语言主要部分:
void main()
{
rGPBCON=0x154000; /*设置I/O口GPB7-10为输出属性*/
rGPBUP=0x7ff; /*禁止GPF端口的上拉*/
while(1) /*不断的循环,D14将不停的闪烁*/
{
rGPBDAT=0x0x700; /*使GPB输出高电平,LED7灯亮 */
delay(0xbfffff); /*调用汇编延迟函数*/
rGPBDAT=0x680; /*使GPB输出低电平LED8灯亮*/
delay(0xbfffff); /*调用汇编延迟函数*/
rGPBDAT=0x0x580; /*使GPB输出高电平,LED7灯亮 */
delay(0xbfffff); /*调用汇编延迟函数*/
rGPBDAT=0x380; /*使GPB输出低电平LED8灯亮*/
delay(0xbfffff); /*调用汇编延迟函数*/
}
}
5) 利用ADS1.2或 IAR EWARM进行调试,写出为完成上面实验,ADS1.2或 IAR EWARM的主要配置信息根据实际实验记录(略)。
6)描述实验过程,记录实验结果并对结果进行分析(略)。
说明:对于5)与6)两步,学生做出正确结果,5)给8分,6)就可以给30分。但要有现场记录。
四、分析题
答:
1)配置什么APB总线时钟与AHB总线时钟,即FCLK、HCLK与PCLK的分频系数选择。
2)配置FCLK时钟,选择mdiv、pdiv、 sdiv不同参数,可获得时钟FCLK不同的值。
3)使FCLK、HCLK和PCLK的频率比为1:2:4, HDIVN和PDIVN分别为 1和1。
如果输入频率=12MHz,使输出频率=202.8 MHz, 则mdiv=0xa1, pdiv=0x3,sdiv=0x1。
写出函数表达式:
ChangeClockDivider(1,1)
ChangeMPllValue(0xa1, 0x3, 0x1)