电动汽车充电桩(示意图3-1所示) 如图 以S3C2410芯片为核心,并外加其他功能电路来进行设计,其基本功能描述如下: a、充电桩支持2种充电方式,一种是固定金额方式,如:充300元的电能。那么,所充电能的金额等于300元后自动停止充电;另一种是随机充

admin2021-06-09  27

问题 电动汽车充电桩(示意图3-1所示)

如图
以S3C2410芯片为核心,并外加其他功能电路来进行设计,其基本功能描述如下:
a、充电桩支持2种充电方式,一种是固定金额方式,如:充300元的电能。那么,所充电能的金额等于300元后自动停止充电;另一种是随机充电,即:随时按“停止”键来停止充电,若未按“停止”键,则电池充满后也会自动停止充电。
b、支持现金和IC卡付费。IC卡是预付费卡,金额不足将报警。
c、能够通过RS-485总线与后台结算服务器连接,传递结算信息。
d、用LCD显示器来显示被充电电池的电量情况,并显示充电时间、金额等信息。
根据上述功能要求的描述,请完善下面的叙述(程序)和回答有关的问题。(完善程序或回答问题所需的寄存器格式见题后附录)。
(1)充电桩控制器设计时,需设计一个键盘,键盘中应包含0~9数字键及“切换”、“启动”、“停止”等3个命令键。其键盘接口设计成4×4的阵列(按键排列示意如下图所示)。下图中的键盘接口电路中选用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) | 【81】 );
//仅初始化GPE0~GPE3为输入
rGPECON= rGPECON &【82】;// rGPECON是对应GPE端口控制寄存器的变量
for (i=【83】; i<= 128; i<<=1) //循环扫描键盘,看是否有按键按下
{
output|= 0xFF;
output&= (~i);//键盘行信号求反
KEYOUTPUT= output;//通过GPE端口数据寄存器输出行信号
temp= KEYINPUT;//通过GPE端口数据寄存器读列信号,该列无键按下时列信号是1
if((temp&0x0F)!=【84】 )//判断是否有键按下
{
key = (~i);
key <<= 8;//变量key中存储键码值,行信号左移到高8位
key |= temp|0xF0;//列信号存于变量key的低8位中,无用位置1
return (key);//返回键码值
}
}
return 0xFFFF;
}
上面的键盘扫描函数返回的是键码值,程序中循环【85】 次来扫描所有键盘行,若所有行均无键按下时,返回的键码值应为:【86】 。若有按键按下,则返回该键对应的键码值。例如:若按下的是键盘中“8”键,则函数返回值为:【87】 ,若按下的是键盘中“启动”键,则函数返回值为:【88】
(2)IC卡读写电路设计时,选用IC卡读写模块通过I2C总线接口与S3C2410连接,设计时利用S3C2410芯片内部的专用I2C总线引脚,即GPE端口的【89】 引脚和【90】引脚连接到IC卡读写模块的I2C总线引脚SDA和SCL上。那么,相关驱动程序中需要用语句:rGPECON=(rGPECON|0xA0000000)& 【91】来初始化GPE端口相关引脚为I2C总线功能的引脚。
(3)为了实现与后台结算服务器连接,选择S3C2410内部的UART1部件,并外加电平转换芯片来实现支持RS-485串行通信的接口电路。下面一段程序是初始化UART1部件(注:UART1的波特率要求为:9600bps,数据格式要求为:8位数据、1位停止位、奇校验,主频为PCLK。)。
void UART1_Init()
{
rGPHCON=(rGPHCON&0xFFFFF0FF)|【92】;//端口H相应引脚功能初始化
rUFCON1=0x0;//FIFO disable
rUMCON1=0x0;
rULCON1= (【93】 <<3)|(0<<2)|(【94】);//设置线路控制寄存器
rUCON1=0x245;//设置控制寄存器
rUBRDIV1=((int)(PCLK/【95】+0.5) - 1);//设置波特率,小数采用四舍五入
}
(4)充电桩的LCD显示器,由于显示的内容不复杂,因此选用16色LCD屏。设计LCD屏接口电路时,选用S3C2410芯片的GPC0~GPC7连接到LCD模块的8位数据线上,用来传输显示信息。在相关驱动程序中,可以用以下语句来初始化GPC0~GPC7为输出:
rGPCCON = ((rGPCCON|0x00005555)& 【96】) //rGPCCON对应GPC端口的控制寄存器
设计时,选择专用电池电量检测芯片来测量被充电电池的电量。该芯片能提供被测电池的电量信息,并具有1个电量充满状态的引脚。若设计时,将该引脚连接到S3C2410芯片的GPF0引脚上,使该引脚有效后产生中断信号,立即执行停止充电程序,防止过充。在相关驱动程序中,可以用以下语句来初始化GPF0为中断请求信号输入:
rGPFCON = ((rGPFCON & 0xFFFFFFFC)| 【97】) //rGPFCON对应GPF端口的控制寄存器
(5)充电桩的应用软件将在无操作系统环境下进行开发。若设计者自行设计一个启动引导程序,来引导应用程序。启动引导程序中需要完成异常向量表的设置。ARM9体系结构中规定异常向量之间各相差【98】个字节,因此,需要在各异常向量处设计一条分枝指令。对于S3C2410微处理器来说,其启动引导程序还需要完成禁止【99】部件和禁止中断,并设置各工作模式下的【100】指针。
说明:下面是试题解答时需要用到的寄存器格式及存着说明。
1)端口E控制寄存器(GPECON)的格式

2)ULCONn寄存器的格式

3)GPHCON寄存器的格式

5)GPFCON寄存器的格式

选项

答案(1) 【81】0x00005500 【82】0xFFFFFF00【83】16【84】0x0F【85】4 【86】0xFFFF【87】0xDFF7【88】0x7FFD (2) 【89】GPE15【90】GPE14【91】0xAFFFFFFF (3) 【92】0x00000A00【93】4【94】3【95】9600×16 (153600) (4) 【96】0xFFFF5555【97】0x00000002 (5) 【98】4 【99】看门狗【100】堆栈(SP)

解析 (1)利用GPIO口进行键盘接口电路设计是GPIO口的典型应用。题中所示为矩阵键盘接口,驱动程序即是根据所要实现功能给相应的控制寄存器赋值。查看附录的GPE口及GPECON的格式,对GPE4~GPE7口初始化为输出,赋值为0x00005500;rGPECON口的赋值为0xFFFFFF00;对矩阵键盘采用循环扫描法读取键盘按键情况,需要循环4次;无键按下,则全1,有键按下,则相应置0。
(2)S3C2410芯片内部的专用I2C总线引脚,即GPE端口的GPE15引脚和GPE14引脚。初始化程序是按照寄存器格式进行按位赋值。查看附录GPE口的格式可知,初始化赋值为0xAFFFFFFF。
(3)UART是串行异步通信接口,其信息传送按位进行,字符总是以起始位开始,以停止位结束:查看附录,端口H相应引脚功能初始化赋值为0x00000A00;字符格式由线路控制寄存器ULCONn决定;经计算,波特率为153600。
(4)LCD显示屏自身不带控制器,没有驱动电路:本系统中主要利用GPIO口设计驱动电路来进行控制。rGPCCON对应GPC端口的控制寄存器,查看附录寄存器格式,应赋值01,即0xFFFF5555;rGPFCON对应GPF端口的控制寄存器,应赋值0x00000002。
(5) ARM9体系结构中规定异常向量之间各相差四个字节;对于S3C2410微处理器来说,其启动引导程序还需要完成禁止看门狗定时器部件和禁止中断,并设置各工作模式下的堆栈指针。
转载请注明原文地址:https://jikaoti.com/ti/GWo7FFFM
0

最新回复(0)