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

admin2021-06-09  46

问题 电动汽车充电桩(示意图如右图所示)以S3C2410芯片为核心,并外加其他功能电路来进行设计,其基本功能描述如下:

a、充电桩支持2种充电方式,一种是固定金额方式,如:充300元的电能。那么,所充电能的金额等于300元后自动停止充电;另一种是随机充电,即:随时按“停止”键来停止充电,若未按“停止”键,则电池充满后也会自动停止充电。
b、支持现金和IC卡付费。IC卡是预付费卡,金额不足将报警。
c、能够通过RS-485总线与后台结算服务器连接,传递结算信息。
d、用LCD显示器来显示被充电电池的电量情况,并显示充电时间、金额等信息。
根据上述功能要求的描述,请完善下面的叙述(程序)和回答有关的问题。
(1)充电桩控制器设计时,需设计一个键盘,键盘中应包含0~9数字键及“切换”、“启动”、“停止”等3个命令键。其键盘接口设计成4×4的阵列(按键排列示意如下图所示)。下图中的键盘接口电路中选用GPE4~GPE7来输出键盘行扫描信号,选用GPEO~GPE3来输入键盘列信号。软件设计时设计者自行设计键盘扫描函数,请你补充完善之:

//** KEYOUTPUT是键盘扫描时的输出地址,KEYINPUT是键盘读入时的地址
#deftneKEYOUTPUT( * (volatile INT8U *)0x56000044)//0x56000044是GPE端口数据寄存器的地址
#deftne 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
    retum(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寄存器的格式

4)GPCCON寄存器的格式

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://kaotiyun.com/show/lV0Z777K
0

随机试题
最新回复(0)