某机械设备的控制器,其基本功能要求有: 需要有8个数字量输入,用于采集设备的状态信息;且需要8个数字量输出,用于控制设备动作。 具备一个RS-232接口,可以和上位机连接,接收上位机发送的命令及参数。 需要提供一个基准定时信号,定时时间间隔为0.01秒:

admin2021-07-07  36

问题 某机械设备的控制器,其基本功能要求有:
需要有8个数字量输入,用于采集设备的状态信息;且需要8个数字量输出,用于控制设备动作。
具备一个RS-232接口,可以和上位机连接,接收上位机发送的命令及参数。
需要提供一个基准定时信号,定时时间间隔为0.01秒:
需要彩色LCD显示器,用于显示状态信息等。
根据上述功能要求的描述,若采用S3C2410芯片为核心来构建该机械设备控制器的硬件平台,请完善下面的叙述和C语言程序(需要使用的控制寄存器的格式见题后说明):
(1)若硬件设计时采用GPIO端口E的GPE0~GPE7引脚作为8个数字量输出,那么软件设计时其初始化语句是:rGPECON=(rGPECON|0x00005555)&__________【81】。若软件设计时需要通过GPE5引脚输出“1”来驱动执行机构动作,那么语句是:rGPEDAT=rGPEDAT|__________【82】。(注:rGPECON是端口E的控制寄存器所对应的变量,rGPEDAT是端口E的数据寄存器所对应的变量)
(2)硬件设计时,选用UART0来完成RS-232接口电路设计。在软件没计时,其初始化程序中波特率设置为9600bps,数据格式设置为:8位数据位、奇校验、1位停止位。请补充完善下面的UART0初始化函数(注:主频参数为PCLK):
  void UART0_Init()
  {
    rGPHCON=(rGPHcON&0xFFFFFF00)|__________【83】;//端口H相应引脚功能初始化
    rUFCON0=0x0;//FIFO不使能
    rUMCON0=0x0;
    rULCON0=__________【84】;//设置线路控制寄存器
    rUCON0=0x145;//设置控制寄存器
    rUBRDIV0=((int)(PCLK/__________【85】)-1);//设置波特率,小数采用四舍五入
  }
(3)按照上面UART0初始化函数所设置的通信速率,每秒钟最多能传输__________【86】个字节的信息。若上位机有大小为4KB的初始参数需要下载到控制器中,那么,约需传输__________【87】秒才能完成下载(1K=1024,精确到小数点后面1位数字)。
(4)系统中所需要的0.01秒基准定时时间选用S3C2410芯片内部的Timer0部件来产生。若系统的主频参数PCLK为264MHz,分频器值选择为16,预分频系数选择为3,那么,Timer0的计数常数为__________【88】。软件设计时,设计了如下的Timer0初始化函数,请补充完善。(注:下面程序中⑨、⑩、(12)用8位十六进制数表示,(11)用4位十六进制数表示)
  void Timer0 Int(void)
  {
    //设置定时器配置寄存器0(TCFG0)
    rTCFG0=__________【89】;//Timer0预分频系数选择为3,该寄存器中其它无关位均为0
    //设置定时器配置寄存器1(TCFG1)
    rTCFG1=__________【90】;//Timer0分频器值为16,该寄存器中其它无关位均为0
//设置计数常数
    rTCNTB0=__________【91】;
    //设置控制寄存器TCON
    rTCON=__________【92】;//更新TCNTB0和TCMPB0,该寄存器中其它无关位均为0
    rTCON=0x00000009;//设置Timet0自动装载,并启动
  }
(5)彩色LCD显示屏的硬件接口电路由S3C2410的专用GPI0端口__________【93】和端口__________【94】相关引脚配以驱动电路来设计。软件设计时,需要通过设置它们控制寄存器的值分别为__________【95】和__________【96】来确定它们的引脚功能。
(6)系统的软件可以设计为在无操作系统的环境下运行。设计者自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的IRQ异常所对应的异常向量地址为__________【97】。Timer0部件所产生的0.01秒基准时间到时将引起IRQ异常。由于IRQ异常向量地址与下一个异常向量地址之间间隔为__________【98】个字节,因此,通常在IRQ异常向量地址处设计一条转移指令。堆栈指针的设置需按工作模式来进行。设置IRQ模式下的堆栈指针,需在R0“清0”后用指令ORRR1,R0,#0x12|__________【99】和MSRCPSR_CXSF,R1来使CPU核进入IRQ模式,然后再给SP寄存器赋值作为该模式下的堆栈指针。这些初始化工作完成后,即可通过指令__________【100】来引导应用程序的主函数main()。
说明:下面是试题解答时需要用到的寄存器格式及相关说明。
1)端口C的控制寄存器(GPCCON)

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

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

4)端口H的控制制寄存器(GPHCON)

5)UART线路控制寄存器(ULCONn n可以是0、1、2)

6)TCFGO寄存器

7)TCFGl寄存器

说明:设置TCFGO、TCFG1可以确定预分频器系数、分频器值,如:通过设置TCFG0为0x0000001F,Timer0的预分频器系数选择为31,设置TCFG1为00x00000001,Timer0的分频器值选择为4。通过下面公式计算定时器的计数常数:
定时器输入时钟频率=PCLK/(预分频系数+1)/分频器值
计数常数=定时时间间隔/(1/定时器输入时钟频率)
预分频系数的范围为0~255,分频器值的取值范围为2、4、8、16。
8)TCON寄存器(注:此处不用的位被省略,其值默认为0x0000000)

选项

答案(1)【81】0xFFFF5555【82】0x0020 (2)【83】0x000000AA【84】0x23【85】(9600×16)+0.5 (3)【86】872【87】4.7 (4)【88】41250【89】0x00000003【90】0x00000003【91】0xA122【92】0x00000002 (5)【93】C【94】D【95】0xAAAAAAAA【96】0xAAAAAAAA (6)【97】0x00000018【98】4【99】0xC0【100】BL_main

解析 本题考查以S3C2410为背景的嵌入式应用系统开发。题中应用为机械设备的控制器系统开发。包括通用I/O口GPIO的使用及相应的初始化编程。其中,GPC和GPD作为LCD显示器接口引脚,GPE作为输入输出;基于UART的RS一232接口电路设计及相应的初始化编程设置;UART的通信控制;内部定时器和计数器的设置及使用;基于S3C2410的无操作系统的嵌入式系统如何构建其启动引导程序。
(1)和0相与清零,和1相与保持不变。和0相或保持不变,和1相或置1。00为输入,01为输出,则初始化GPIO端口E的GPE0~GPE7引脚功能为输出的语句是:rGPECON=(rGPECON|0x00005555)&0xFFFF5555,空【81】为0xFFFF5555;通过GPE5引脚输出“1”来驱动执行机构动作,则将第6位置1,即rGPEDAT=rGPEDAT|0x0020,则空【82】为0x0020。
(2)0x000000AA;8位数据位、1位停止位、奇校验。在ULCON中,[1:0]:11=8位;[2]:0=1位停止位;[5:3]:100=奇校验;[6]:0=正常操作模式。即rGPHCON=(rGPHCON&0xFFFFFF00)|0x000000AA,则空【83】为0x000000AA。空【84】此处对线路控制寄存器进行相应设置。空【85】对所需的波特率进行设置。
(3)按照上面UARTO初始化函数所设置的通信速率,每秒钟最多能传输9600/(8+3)=872个字节的信息。若上位机有大小为4KB的初始参数需要下载到控制器中,那么,约需传输4×1024/872=4.7秒。
(4)定时器输入时钟频率=PCLK/(预分频系数+1)/分割器值,计数常数:定时时间间隔/(1/定时器输入时钟频率),即可得本题空【88】答案。TCFG0中[7:0]位确定Timer0的预分频系数,题设为3,则空【89】为0x00000003;TCFG1中[3:0]位确定Timer0的分频器值,题设为16,则空【90】为0x00000003。空【91】处设置的计数常数为0xA122;更新TCNTB0和TCMPB0设置空【92】为0x00000002。
(5)GPC和GPD作为LCD液晶屏接口引脚,空【93】为C,空【94】为D;00为输入,01为输出,将端口C和D均设置为输出,空【95】【96】均为0xAAAAAAAA。
(6)ARM9体系结构中规定的IRQ异常所对应的异常向量地址为0x00000018。IRQ异常向量地址与下一个异常向量地址之间间隔为4个字节。R0“清0”后用指令ORR R1,R0,#0x12|0xC0和MSR CPSR_CXSF,R1来使CPU核进入IRQ模式。可通过指令BL_main来引导应用程序的主函数main()。
转载请注明原文地址:https://jikaoti.com/ti/h9o7FFFM
0

最新回复(0)