第一套
1、酒店客房的门锁系统是由总台服务器和若干客房指纹锁组成,其基本功能具体描述如下: a、客房的指纹锁与总台服务器之间通过通信网络连接。
b、旅客在总台登记住宿时,录入其指纹信息,并提取其特征值存储在总台服务器中。同时录入一个密码(若干位数字组成),以备指纹无法开锁时,用密码开锁。 c、旅客在开客房指纹锁时,把相应手指放在门锁的指纹采集部件上,采集相应的指纹图像信息,并传输给总台服务器。
d、总台服务器接收到某个客房指纹锁传输来的指纹图像信息后,进行特征值求取并进行匹配,若匹配正确,则回送开锁指令给客房指纹锁。
e、客房指纹锁收到开锁指令后,控制开锁的机械动作,并用绿色LED灯指示开锁成功。 f、若匹配不正确,总台服务器回送不开锁指令给客房指纹锁。 g、客房指纹锁收到不开锁指令后,用红色LED灯指示开锁不成功。
h、若指纹无法开锁,旅客还可以通过客房指纹锁上的数字按键输入密码,若密码匹配正确,也可以控制开锁的机械动作,并用绿色LED灯指示开锁成功。
根据上述功能要求的描述,若采用S3C2410芯片为核心来构建客房指纹锁控制器的硬件平台,请完善下面的叙述和C语言程序(需要使用的控制寄存器的格式见题后说明)。
(1)若采集的指纹图像分辨率为320?240,灰度等级为256,则存储一幅指纹图像的原始像素信息需要的存储容量为 ___【1】_____KB(1K=1000)。若采用115.2Kbps的异步串行通信网传输,一幅指纹图像的传输时间至少需要 ____【2】____秒,若采用10Mbps的以太网传输,一幅指纹图像的传输时间至少要 ____【3】____秒,因此,系统中总台服务器和若干个客房指纹锁之间选用以太网连接。
(2)硬件构件设计时,以太网接口选用AX88796芯片为核心来设计,若S3C2410芯片的nGCS2引脚连接到该芯片的 ____【4】____引脚(低电平有效),那么,AX88796芯片内部寄存器地址的首地址是: ____【5】____。
(3)若客房指纹锁红色LED指示灯的驱动电路由GPIO的GPC0引脚控制,绿色LED指示灯的驱动电路由GPC1引脚控制。GPC0、GPC1引脚各自输出\时,其对应的LED灯灭,各自输出\时,其对应的LED灯亮。那么,初始化GPC0、GPC1引脚为输出功能的语句是:
rGPCCON=((rGPCCON|0x00000005)& ___【6】_____);// rGPCCON是端口C的控制寄存器
控制绿色LED灯点亮和熄灭的语句分别是: rGPCDAT = rGPCDAT | ___【7】_____; //rGPCDAT是端口C的数据寄存器 rGPCDAT = rGPCDAT & ____【8】____; 红色LED灯点亮和熄灭的语句分别是: rGPCDAT = rGPCDAT | ___【9】_____; rGPCDAT = rGPCDAT & ____【10】____;
(4)指纹采集部件由一个摄像芯片和光学镜头组成。S3C2410芯片通过I2C总线传输控制命令给摄像芯片。硬件设计时,选择S3C2410芯片的GPE15、GPE14引脚与摄像芯片的引脚 ___【11】_____、SCL相连。软件设计时,需要用下面语句初始化该引脚为I2C功能引脚。
rGPECON=((rGPECON|0xA0000000)& ____【12】____);// rGPECON是端口E的控制寄存器
(5)若输入密码的键盘采用非标准键盘,键盘接口设计成4?3的阵列。若设计时选用了GPE0~GPE3来输出键盘行扫描信号,选用GPD0~GPD2来输入键盘列信号。请补充完善下面的键
1
盘扫描函数:
//**keyoutput 是键盘扫描时的输出地址,keyinput是键盘读入时的地址
#define KEYOUTPUT (*(volatile INT8U *)0x56000044) //定义GPE的数据端口 #define KEYINPUT (*(volatile INT8U *)0x56000034) //定义GPD的数据端口 INT16U ScanKey() { INT16U key=0xFFFF; INT16U i; INT8U temp=0xFF,output;
rGPDCON= rGPDCON & ___【13】_____; //初始化GPD0~GPD2为输入
rGPECON= ((rGPECON & ____【14】____)|0x00000055);//初始化GPE0~GPE3为输出; for (i=1;(( i<= ____【15】____)&&(i>0)); i<<=1) { output |= 0xFF; output &= (~i); KEYOUTPUT=output; temp = KEYINPUT; if ((temp&0x07)!= ___【16】_____) { key = (~i); key <<= 8; key |= ((temp&0x07)|0xF8); return (key); } } return 0xFFFF; }
上面的键盘扫描函数返回的是由键盘行信号和键盘列信号合并而成的一个16位二进制值,根据该函数的返回值,可以判断是否有按键按下,并可确定是哪个按键按下。若返回值为 ___【17】__时,可知键盘中无键按下,若返回值为 ____【18】____时,可知键盘中第3行第2列的键被按下。(注:以GPE0对应的键盘行为第一行,以GPD0对应的键盘列为第一列)
(6)为了便于以太网通信程序的编写,客房指纹锁的应用软件基于霤/OS-II操作系统来设计,客房指纹锁的应用程序主函数中,需要用OSTaskCreate()函数 ____【19】____,并用 ____【20】____函数启动多任务调度功能。
说明:下面是试题解答时需要用到的寄存器格式及相关说明。 1)端口C的控制寄存器(GPCCON) 引脚 GPCCON的位 描述 GPC15 [31:30] 00=输入,01=输出,10=VD7,11=保留 GPC14 [29:28] 00=输入,01=输出,10= VD6,11=保留 GPC13 [27:26] 00=输入,01=输出,10= VD5,11=保留 GPC12 [25:24] 00=输入,01=输出,10= VD4,11=保留 GPC11 [23:22] 00=输入,01=输出,10= VD3,11=保留 GPC10 [21:20] 00=输入,01=输出,10= VD2,11=保留 GPC9 [19:18] 00=输入,01=输出,10= VD1,11=保留 GPC8 [17:16] 00=输入,01=输出,10= VD0,11=保留 GPC7 [15:14] 00=输入,01=输出,10=LCDVF2,11=保留 GPC6 [13:12] 00=输入,01=输出,10= LCDVF1,11=保留
2
GPC5 [11:10] 00=输入,01=输出,10=LCDVF0,11=保留 GPC4 [9:8] 00=输入,01=输出,10=VM,11=IIS数据输出 GPC3 [7:6] 00=输入,01=输出,10=VFRAME,11= IIS数据输入 GPC2 [5:4] 00=输入,01=输出,10=VLINE,11=保留 GPC1 [3:2] 00=输入,01=输出,10=VCLK,11=保留 GPC0 [1:0] 00=输入,01=输出,10=LEND,11=保留 2)端口D的控制寄存器(GPDCON) 引脚 GPDCON的位 描述 GPD15 [31:30] 00=输入,01=输出,10=VD23,11=保留 GPD14 [29:28] 00=输入,01=输出,10= VD22,11=保留 GPD13 [27:26] 00=输入,01=输出,10= VD21,11=保留 GPD12 [25:24] 00=输入,01=输出,10= VD20,11=保留 GPD11 [23:22] 00=输入,01=输出,10= VD19,11=保留 GPD10 [21:20] 00=输入,01=输出,10= VD18,11=保留 GPD9 [19:18] 00=输入,01=输出,10= VD17,11=保留 GPD8 [17:16] 00=输入,01=输出,10= VD16,11=保留 GPD7 [15:14] 00=输入,01=输出,10= VD15,11=保留 GPD6 [13:12] 00=输入,01=输出,10= VD14,11=保留 GPD5 [11:10] 00=输入,01=输出,10= VD13,11=保留 GPD4 [9:8] 00=输入,01=输出,10= VD12,11=保留 GPD3 [7:6] 00=输入,01=输出,10= VD11,11=保留 GPD2 [5:4] 00=输入,01=输出,10= VD10,11=保留 GPD1 [3:2] 00=输入,01=输出,10= VD9,11=保留 GPD0 [1:0] 00=输入,01=输出,10= VD8,11=保留 3)端口E的控制寄存器(GPECON) 引脚 GPECON的位 描述 GPE15 [31:30] 00=输入,01=输出,10=IICSDA,11=保留 GPE14 [29:28] 00=输入,01=输出,10=IICSCL,11=保留 GPE13 [27:26] 00=输入,01=输出,10=SPICLK0,11=保留 GPE12 [25:24] 00=输入,01=输出,10=SPIMOSI0,11=保留 GPE11 [23:22] 00=输入,01=输出,10=SPIMISO0,11=保留 GPE10 [21:20] 00=输入,01=输出,10=SSDAT3,11=保留 GPE9 [19:18] 00=输入,01=输出,10=SSDAT2,11=保留 GPE8 [17:16] 00=输入,01=输出,10=SSDAT1,11=保留 GPE7 [15:14] 00=输入,01=输出,10=SSDAT0,11=保留 GPE6 [13:12] 00=输入,01=输出,10=SDCMD,11=保留 GPE5 [11:10] 00=输入,01=输出,10=SDLCK,11=保留 GPE4 [9:8] 00=输入,01=输出,10=IISSDO,11=IIS数据输出 GPE3 [7:6] 00=输入,01=输出,10=IISSI,11= IIS数据输入 GPE2 [5:4] 00=输入,01=输出,10=CDCLK,11=保留 GPE1 [3:2] 00=输入,01=输出,10=IISCLK,11=保留 GPE0 [1:0] 00=输入,01=输出,10=IISLRCK,11=保留 4)端口H的控制寄存器(GPHCON) 引脚 GPHCON的位 描述 GPH10 [21:20] 00=输入,01=输出,10=CLKOUT1,11=保留
3
GPH9 [19:18] 00=输入,01=输出,10= CLKOUT0,11=保留 GPH8 [17:16] 00=输入,01=输出,10=UEXTCLK,11=保留 GPH7 [15:14] 00=输入,01=输出,10=RXD2,11=保留 GPH6 [13:12] 00=输入,01=输出,10=TXD2,11=保留 GPH5 [11:10] 00=输入,01=输出,10=RXD1,11=保留 GPH4 [9:8] 00=输入,01=输出,10=TXD1,11=IIS数据输出 GPH3 [7:6] 00=输入,01=输出,10=RXD0,11= IIS数据输入 GPH2 [5:4] 00=输入,01=输出,10=TXD0,11=保留 GPH1 [3:2] 00=输入,01=输出,10=nRTS0,11=保留 GPH0 [1:0] 00=输入,01=输出,10=nCTS0,11=保留
【解题思路】
本题是一道基于S3C2410的嵌入式系统开发综合题。考查了数字图像的存储容量计算,网络通信数据传输;系统硬件构件设计,尤其是GPIO接口功能及初始化程序,结合常用外设的连接,如LED、键盘等;基于μC/OS-II操作系统的应用程序的主要μC/OS-II函数,如何创建任务及启动任务调度功能。
【参考答案及解析】
【1】76.8;320*240/1000 = 76.8 KB;
【2】6.7;115.2Kbps换算成字节是每秒发送115.2/8 = 14.4 KB的数据。异步串行每发送8个字节有一个起始位和停止位,76.8/8 = 9.6,说明一共需要10个停止位和10个起始位,一个发送96.8KB的数据,96.8/14.4 = 6.72秒;
【3】0.076;10Mbps理论速度是每秒1.25MB,加上损耗以1Mbyte每秒计算,理论速度是0.076秒
【4】CS;片选信号CS低电平有效;
【5】0x10000000;nGCS2映射地址为0x10000000;
【6】0xFFFFFFF5;00为输入,01为输出。则初始化GPC0、GPC1引脚为输出功能的语句是:rGPCCON=((rGPCCON|0x00000005)&0xFFFFFFF5)。
【7】0x0002;红色LED指示灯的驱动电路由GPIO的GPC0引脚控制,绿色LED指示灯的驱动电路由GPC1引脚控制。GPC0、GPC1引脚各自输出\时,其对应的LED灯灭,各自输出\时,其对应的LED灯亮。则绿色LED灯点亮为:rGPCDAT = rGPCDAT | 0x0002。 【8】0xFFFD;绿色LED灯熄灭为:rGPCDAT = rGPCDAT & 0xFFFD。 【9】0x0001;红色LED灯点亮为:rGPCDAT = rGPCDAT | 0x0001。 【10】0xFFFE;红色LED灯熄灭为:rGPCDAT = rGPCDAT & 0xFFFE。
【11】SDA;I2C总线只有两条信号线,一条是数据线SDA,另一条是时钟线SCL,所有操作都通过这两条信号线完成。
【12】0xAFFFFFFF;初始化I2C功能引脚。
【13】0xFFFFFFC0;初始化GPD0~GPD2为输入: rGPDCON= rGPDCON & 0xFFFFFFC0。
【14】0xFFFFFF00;00为输入,01为输出。初始化GPE0~GPE3为输出:rGPECON= ((rGPECON & 0xFFFFFF00)|0x00000055)。 【15】8;循环次数。
【16】0x07;判断GPD0~GPD2引脚是否有输入信号。 【17】0xFFFF;键盘中无键按下。
【18】0xFBFD;键盘中第3行第2列的键被按下。
【19】创建任务;OSTaskCreate() 函数用来任务创建;
【20】OSStart();一旦OSStart() 函数开始执行,就标志着μC/OS-II进入了多任务调度的正常运行
4
相关推荐: