计算机三级嵌入式系统开发技术真题(带答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作题(一)
电动汽车充电桩(示意图如图3-1所示)
以S3C2410芯片为核心,并外加其他功能电路来进行设计,其基本功能描述如下:a、充电桩支持2种充电方式,一种是固定金额方式,如:充300元的电能。那么,所充电能的金额等于300元后自动停止充电;另一种是随机充电,即:随时按"停止"键来停止充电,若未按"停止"键,则电池充满后也会自动停止充电。
b、支持现金和IC卡付费。IC卡是预付费卡,金额不足将报警。
c、能够通过RS-485总线与后台结算服务器连接,传递结算信息。
d、用LCD显示器来显示被充电电池的电量情况,并显示充电时间、金额等信息。根据上述功能要求的描述,请完善下面的叙述(程序)和回答有关的问题。(完善程序或回答问题所需的寄存器格式见题后附录)。
1)充电桩控制器设计时,需设计一个键盘,键盘中应包含0~9数字键及"切换"、"启动"、"停止"等3个命令键。其键盘接口设计成4×4的阵列(按键排列示意如图3-2所示)。图3-2中的键盘接口电路中选用GPE4~GPE7来输出键盘行扫描信号,选用GPE0~GPE3来输入键盘列信号。软件设计时设计者自行设计键盘扫描函数,请你补充
//**KEYOUTPUT是键盘扫描时的输出地址,KEYINPUT是键盘读入时的地址
#defineKEYOUTPUT (*(volatile INT8U *)0x56000044) //0x56000044是GPE端口数据寄存器的地址
#define KEYINPUT (*(volatile INT8U *)0x56000044)
INT16U ScanKey()
{
INT16U key=0xFFFF;
INT16U i;
INT8U temp=0xFF,output;
//仅初始化GPE4~GPE7为输出
rGPECON= ((rGPECON & 0xFFFF00FF) | (1) );
//仅初始化GPE0~GPE3为输入
rGPECON= rGPECON &(2); // rGPECON是对应GPE端口控制寄存器的变量
for (i=(3); i<= 128; i<<=1) //循环扫描键盘,看是否有按键按下
{
output|= 0xFF;
output&= (~i); //键盘行信号求反
KEYOUTPUT= output; //通过GPE端口数据寄存器输出行信号
temp= KEYINPUT; //通过GPE端口数据寄存器读列信号,该列无键按下时列信号是1 if((temp&0x0F)!= (4))//判断是否有键按下
{
key = (~i);
key <<= 8; //变量key中存储键码值,行信号左移到高8位
key |= temp|0xF0; //列信号存于变量key的低8位中,无用位置1
return (key); //返回键码值
}
}
return 0xFFFF;
}
上面的键盘扫描函数返回的是键码值,程序中循环(5)次来扫描所有键盘行,若所有行均无键按下时,返回的键码值应为:(6)。若有按键按下,则返回该键对应的键码值。例如:若按下的是键盘中"8"键,则函数返回值为:(7),若按下的是键盘中"启动"键,则函数返回值为:(8)。
(2)IC卡读写电路设计时,选用IC卡读写模块通过I2C总线接口与S3C2410连接,设计时利用S3C2410芯片内部的专用I2C总线引脚,即GPE端口的(9)引脚和 (10)引脚连接到IC卡读写模块的I2C总线引脚SDA和SCL上。那么,相关驱动程序中需要用语句:rGPECON=(rGPECON|0xA0000000)& (11)来初始化GPE端口相关引脚为I2C总线功能的
(3)为了实现与后台结算服务器连接,选择S3C2410内部的UART1部件,并外加电平转换芯片来实现支持RS-485串行通信的接口电路。下面一段程序是初始化UART1部件(注:UART1的波特率要求为:9600bps,数据格式要求为:8位数据、1位停止位、奇校验,主频为PCLK。)。
void UART1_Init()
{
rGPHCON=(rGPHCON&0xFFFFF0FF)| (12);//端口H相应引脚功能初始化
rUFCON1=0x0; //FIFO disable
rUMCON1=0x0;
rULCON1= ((13) <<3)|(0<<2)|( (14)); //设置线路控制寄存器
rUCON1=0x245; //设置控制寄存器
rUBRDIV1=((int)(PCLK/(15) +0.5) - 1); //设置波特率,小数采用四舍五入
}
(4)充电桩的LCD显示器,由于显示的内容不复杂,因此选用16色LCD屏。设计LCD 屏接口电路时,选用S3C2410芯片的GPC0~GPC7连接到LCD模块的8位数据线上,用来传输显示信息。在相关驱动程序中,可以用以下语句来初始化GPC0~GPC7为输出:rGPCCON = ((rGPCCON|0x00005555)& (16)) // rGPCCON对应GPC端口的控制寄存器设计时,选择专用电池电量检测芯片来测量被充电电池的电量。该芯片能提供被测电池的电量信息,并具有1个电量充满状态的引脚。若设计时,将该引脚连接到
S3C2410芯片的GPF0引脚上,使该引脚有效后产生中断信号,立即执行停止充电程序,防止过充。在相关驱动程序中,可以用以下语句来初始化GPF0为中断请求信号输入:rGPFCON = ((rGPFCON & 0xFFFFFFFC)| (17)) // rGPFCON对应GPF端口的控制寄存器
(5)充电桩的应用软件将在无操作系统环境下进行开发。若设计者自行设计一个启动引导程序,来引导应用程序。启动引导程序中需要完成异常向量表的设置。ARM9体系结构中规定异常向量之间各相差(18)个字节,因此,需要在各异常向量处设计一条分枝指令。对于S3C2410微处理器来说,其启动引导程序还需要完成禁止(19)部件和禁止中断,并设置各工作模式下的(20)指针。
附录:综合题中完善程序或回答问题所需的寄存器格式
端口E控制寄存器(GPECON)的格式
符号位描述初始状态
GPE15 [31:30] 00=输入 01=输出 10=IICSDA 11=保留00
GPE14 [29:28] 00=输入 01=输出 10=IICSCL 11=保留00
GPE13 [27:26] 00=输入 01=输出 10=SPICLK 11=保留00
GPE12 [25:24] 00=输入 01=输出 10=SPIMOSI0 11=保留00
GPE11 [23:22] 00=输入 01=输出 10=SPIMISO0 11=保留00
GPE10 [21:20] 00=输入 01=输出 10=SDDAT3 11=保留00
GPE9 [19:18] 00=输入 01=输出 10=SDDAT2 11=保留00