移动POS机(如图61-1所示)是常用于饭店、商场等场所的支付终端,用来完成对银行卡的刷卡并与后台PC机进行信息交换。其基本功能要求有: a、能够读取各种银行发的磁条卡和芯片卡。 b、具有1个键盘,可以用于输入密码、交费金额及一些命令。 c、具有1个可以显

admin2021-07-07  48

问题 移动POS机(如图61-1所示)是常用于饭店、商场等场所的支付终端,用来完成对银行卡的刷卡并与后台PC机进行信息交换。其基本功能要求有:
a、能够读取各种银行发的磁条卡和芯片卡。
b、具有1个键盘,可以用于输入密码、交费金额及一些命令。
c、具有1个可以显示交费金额的显示器。显示的字符是0~9,最大可显示6位数值。
d、具有与后台PC机进行无线通信的功能,可以把刷卡信息与后台数据库进行交互。
e、具有1个小型打印机,可以打印消费清单。

根据上述功能要求的描述,若采用S3C2410芯片为核心来构建该移动POS机的硬件平台,请完善下面的叙述(程序)和回答有关的问题。(完善程序或回答问题所需的寄存器格式见题后的附录)。
(1)银行芯片卡中拥有一块存储容量较大的芯片,且具有I2C总线接口,因此,在设计芯片卡接口电路时,选用S3C2410芯片端口E的引脚【81】来分别与芯片卡的SDA、SCL相连。软件设计时,相关驱动程序中需要用下面语句来初始化该引脚的功能。
rGPECON=((rGPECON【82】) & 0xAFFFFFFF);// rGPECON是端口E的控制寄存器
(2)在设计移动POS机的键盘接口电路时,键盘接口设计成5×4的阵列(其按键排列示意图如61-2所示)。键盘接口电路中选用GPE0~GPE4来输出键盘行扫描信号,选用GPC0~GPC3来输入键盘列信号。软件设计时设计者自行设计了键盘扫描函数,请你补充完善之:
//**KEYOUTPUT是键盘扫描时的输出地址,KEYINPUT是键盘读入时的地址
#define KEYOUTPUT (*(volatile INT8U *)0x56000044)
#define KEYINPUT (*(volatile INT8U *)0x56000024)
INT16U ScanKey()
{
INT16U key=0xFFFF;
INT16U i;
INT8U temp=0xFF,output;
rGPECON= ((rGPECON&【83】) | 0x00000155);//只初始化GPE0~GPE4为输出
rGPCCON= rGPCCON&【84】;//只初始化GPC0~GPC4为输入
//下面循环扫描键盘,判断是否有按键按下
for (i=1;(( i<=【85】)&&(i>0)); i<<= 1)
{
output|= 0xFF;
output&= (~i);
KEYOUTPUT=output;// 输出行扫描信号
temp=【86】;//读取列信号
if((temp&0x0F)!=【87】)
{
key = (~i);
key <<= 8;
key |= ((temp&0x0F)|0xF0);
return (key);
}
}
return 0xFFFF;
}
根据上面的键盘扫描函数的返回值,可以判断是否有按键按下,若没有键按下,返回值应为:【88】,若有键按下,返回值是其对应的扫描码。例如:若键盘中的“确认”键被按下,返回值为:【89】,若键盘中的“2”键按下,返回值为:【90】
(3)若在硬件设计时,选用6个共阴极的8段LED(其排列如图61-3所示)来组成显示器,用于显示需要交费的金额。选用GPF0~GPF6、GPF7外接同向驱动后,分别连接到6个LED的a~f、dp段信号线上,选用GPD0~GPD5外接同向驱动后分别连接到6个LED的位信号线上。那么,在相关驱动程序中,可以用下面语句来初始化GPF0~GPF7的引脚功能:
rGPFCON =【91】;// rGPFCON是端口F的控制寄存器
并可用下面语句来初始化GPD0~GPD5的引脚功能:
rGPDCON=((rGPDCON|【92】)& 0x FFFFF555);// rGPDCON是端口D的控制寄存器
若GPD0~GPD5依次分别控制显示器中的低数据位~高数据位的6个LED位信号线。那么,若只在显示器中的最高数据位对应的LED上显示字符“5”,相关驱动程序中可用下面语句实现。
rGPFDAT =【93】;// 输出“5”对应的段码,rGPFDAT是端口F的数据寄存器
rGPDDAT = rGPDDAT &【94】;// 输出对应的位信号,rGPDDAT是端口D的数据寄存器
若只在显示器中的最低数据位对应的LED上显示字符“7”,相关驱动程序中可用下面语句实现。
rGPFDAT =【95】
rGPDDAT = rGPDDAT &【96】
(4)在设计与后台PC机进行无线通信的接口硬件时,选用GSM模块通过SPI总线来与S3C2410芯片连接。SPI总线是一种【97】外设接口总线,在时钟信号控制下,一位一位传输。若用端口E中的SPI0功能引脚来设计此接口电路,那么,在相关驱动程序中,需用下面语句来初始化它们作为SPI0引脚使用。
rGPECON=((rGPECON & 0xF03FFFFF)|【98】);// rGPECON是GPE端口的控制寄存器
(5)在设计打印机接口电路时,若选用内部有1K×8bit缓冲区的打印机模块,利用S3C2410芯片的低8位数据线与打印机模块的数据线连接,用nGCS2连接其片选信号,其他信号(地址线、读/写信号)也一一连接。需要打印的信息需送到缓冲区,然后启动打印。那么,软件写入该缓冲区的首地址为【99】,末地址为【100】。(注:存储系统为小端存储方式)。

说明:下面是试题解答时需要用到的寄存器格式
1)端口C控制寄存器(GPCCON)的格式

2)端口D控制寄存器(GPDCON)的格式

3)端口E控制寄存器(GPECON)的格式

4)端口F控制寄存器(GPFCON)的格式

选项

答案(1)【81】GPE15和GPE14【82】0xA0000000 (2)【83】0xFFFFFD55【84】0xFFFFFF00【85】16 0x10【86】KEYINPUT【87】0x0F【88】0xFFFF【89】0xF7F7【90】0xFDFD (3)【91】0x5555【92】0x00000555【93】0x6D【94】0xFFDF【95】0x07 0x7【96】0xFFFE (4)【97】同步串行【98】0x0A800000 (5)【99】0x10000000【100】0x100003FF

解析 (1)I2C总线只有两条信号线,一条是数据线SDA,一条是时钟线SCL。GPE作为I2C总线的引脚,GPE15和GPE14在10模式下分别用来连接SDA和SCL。
(2)S3C2410的GPIO端口有GPA~GPH多个并行I/O接口。采用矩阵键盘接口,题中选用GPE0~GPE4来输出键盘行扫描信号,选用GPC0~GPC3来输入键盘列信号,当有键按下时,读取键盘值,命令为KEYINPUT,判断GPC0~GPC3哪个是低电平。通过GPE和GPC端口值可判断出哪个键被按下。
(3)题中LED采用共阴极接法,选用GPF0~GPF6、GPF7分别连接到6个LED的a~f、dp段信号线上,则需要设置成输出端口,即01模式;参照各端口控制字格式对相应位置0或1,即可完成初始化。
(4)SPI是一种同步串行外设接口,允许嵌入式处理器与各种外围设备以串行方式进行通信、数据交换。
(5)所谓小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中。打印机模块内部有1K×8bit缓冲区,故缓冲区首地址是0x10000000,而末地址是0x100003FF。
转载请注明原文地址:https://kaotiyun.com/show/o80Z777K
0

相关试题推荐
最新回复(0)