首页 > 代码库 > 嵌入式开发技术三级

嵌入式开发技术三级

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引脚各自输出"0"时,其对应的LED灯灭,各自输出"1"时,其对应的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来输入键盘列信号。请补充完善下面的键盘扫描函数:


         //**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)为了便于以太网通信程序的编写,客房指纹锁的应用软件基于μC/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=保留
 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=保留
 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=保留