问答题

2:1、某机械设备的控制器,其基本功能要求有:<br>需要有8个数字量输入,用于采集设备的状态信息;且需要8个数字量输出,用于控制设备动作。<br>具备一个RS-232接口,可以和上位机连接,接收上位机发送的命令及参数。<br>需要提供一个基准定时信号,定时时间间隔为0.01秒。<br>需要彩色LCD显示器,用于显示状态信息等。<br>根据上述功能要求的描述,若采用S3C2410芯片为核心来构建该机械设备控制器的硬件平台,请完善下面的叙述和C语言程序(需要使用的控制寄存器的格式见题后说明)。<br>(1)若硬件设计时采用GPIO端口E的GPE0~GPE7引脚作为8个数字量输出,那么软件设计时其初始化语句是:rGPECON=(rGPECON|0x00005555)&___【1】____。若软件设计时需要通过GPE5引脚输出“1”来驱动执行机构动作,那么语句是:rGPEDAT= rGPEDAT | ___【2】____。(注:rGPECON是端口E的控制寄存器所对应的变量,rGPEDAT是端口E的数据寄存器所对应的变量)<br>(2)硬件设计时,选用UART0来完成RS-232接口电路设计。在软件设计时,其初始化程序中波特率设置为9600bps,数据格式设置为:8位数据位、奇校验、1位停止位。请补充完善下面的UART0初始化函数(注:主频参数为PCLK):<br>voidUART0_Init()<br>{<br>rGPHCON=(rGPHCON&0xFFFFFF00)|___【3】____; //端口H相应引脚功能初始化<br>rUFCON0=0x0; //FIFO不使能<br>rUMCON0=0x0;<br>rULCON0=___【4】____; //设置线路控制寄存器<br>rUCON0=0x145; //设置控制寄存器<br>rUBRDIV0=((int)(PCLK/___【5】____) 1); //设置波特率,小数采用四舍五入<br>}<br>(3)按照上面UART0初始化函数所设置的通信速率,每秒钟最多能传输___【6】____个字节的信息。若上位机有大小为4KB的初始参数需要下载到控制器中,那么,约需传输____【7】___秒才能完成下载(1K=1024,精确到小数点后面1位数字)。<br>(4)系统中所需要的0.01秒基准定时时间选用S3C2410芯片内部的Timer0部件来产生。若系统的主频参数PCLK为264MHz,分频器值选择为16,预分频系数选择为3,那么,Timer0的计数常数为___【8】____。软件设计时,设计了如下的Timer0初始化函数,请补充完善。(注:下面程序中⑨、⑩、⑿用8位十六进制数表示,⑾用4位十六进制数表示)<br>voidTimer0Int(void)<br>{<br>//设置定时器配置寄存器0(TCFG0)<br>rTCFG0=___【9】____; //Timer0预分频系数选择为3,该寄存器中其它无关位均为0<br>//设置定时器配置寄存器1(TCFG1)<br>rTCFG1=___【10】___; // Timer0分频器值为16,该寄存器中其它无关位均为0<br>//设置计数常数<br>rTCNTB0=___【11】____; //设置控制寄存器TCON<br>rTCON=___【12】____;//更新TCNTB0和TCMPB0,该寄存器中其它无关位均为0<br>rTCON=0x00000009;//设置Timer0自动装载,并启动<br>}<br>(5)彩色LCD显示屏的硬件接口电路由S3C2410的专用GPIO端口__【13】_____和端口___【14】____相关引脚配以驱动电路来设计。软件设计时,需要通过设置它们控制寄存器的值分别为___【15】____和____【16】___来确定它们的引脚功能。<br>(6)系统的软件可以设计为在无操作系统的环境下运行。设计者自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的IRQ异常所对应的异常向量地址为___【17】____。Timer0部件所产生的0.01秒基准时间到时将引起IRQ异常。由于IRQ异常向量地址与下一个异常向量地址之间间隔为___【18】____个字节,因此,通常在IRQ异常向量地址处设计一条转移指令。堆栈指针的设置需按工作模式来进行。设置IRQ模式下的堆栈指针,需在R0“清0”后用指令ORRR1,R0,0x12|___【19】____和MSRCPSR_CXSF,R1来使CPU核进入IRQ模式,然后再给SP寄存器赋值作为该模式下的堆栈指针。这些初始化工作完成后,即可通过指令___【20】____来引导应用程序的主函数main()。<br>说明:下面是试题解答时需要用到的寄存器格式及相关说明。<br>1)端口C的控制寄存器(GPCCON)<br>引脚GPCCON的位描述<br>GPC15[31:30]00=输入,01=输出,10=VD7,11=保留<br>GPC14[29:28]00=输入,01=输出,10= VD6,11=保留<br>GPC13[27:26]00=输入,01=输出,10= VD5,11=保留<br>GPC12[25:24]00=输入,01=输出,10= VD4,11=保留<br>GPC11[23:22]00=输入,01=输出,10= VD3,11=保留<br>GPC10[21:20]00=输入,01=输出,10= VD2,11=保留<br>GPC9[19:18]00=输入,01=输出,10= VD1,11=保留<br>GPC8[17:16]00=输入,01=输出,10= VD0,11=保留<br>GPC7[15:14]00=输入,01=输出,10=LCDVF2,11=保留<br>GPC6[13:12]00=输入,01=输出,10= LCDVF1,11=保留<br>GPC5[11:10]00=输入,01=输出,10=LCDVF0,11=保留<br>GPC4[9:8]00=输入,01=输出,10=VM,11=IIS数据输出<br>GPC3[7:6]00=输入,01=输出,10=VFRAME,11= IIS数据输入<br>GPC2[5:4]00=输入,01=输出,10=VLINE,11=保留<br>GPC1[3:2]00=输入,01=输出,10=VCLK,11=保留<br>GPC0[1:0]00=输入,01=输出,10=LEND,11=保留<br>2)端口D的控制寄存器(GPDCON)<br>引脚GPDCON的位描述<br>GPD15[31:30]00=输入,01=输出,10=VD23,11=保留<br>GPD14[29:28]00=输入,01=输出,10= VD22,11=保留<br>GPD13[27:26]00=输入,01=输出,10= VD21,11=保留<br>GPD12[25:24]00=输入,01=输出,10= VD20,11=保留<br>GPD11[23:22]00=输入,01=输出,10= VD19,11=保留<br>GPD10[21:20]00=输入,01=输出,10= VD18,11=保留<br>GPD9[19:18]00=输入,01=输出,10= VD17,11=保留<br>GPD8[17:16]00=输入,01=输出,10= VD16,11=保留<br>GPD7[15:14]00=输入,01=输出,10= VD15,11=保留<br>GPD6[13:12]00=输入,01=输出,10= VD14,11=保留<br>GPD5[11:10]00=输入,01=输出,10= VD13,11=保留<br>GPD4[9:8]00=输入,01=输出,10= VD12,11=保留<br>GPD3[7:6]00=输入,01=输出,10= VD11,11=保留<br>GPD2[5:4]00=输入,01=输出,10= VD10,11=保留<br>GPD1[3:2]00=输入,01=输出,10= VD9,11=保留<br>GPD0[1:0]00=输入,01=输出,10= VD8,11=保留<br>3)端口E的控制寄存器(GPECON)<br>引脚GPECON的位描述<br>GPE15[31:30]00=输入,01=输出,10=IICSDA,11=保留<br>GPE14[29:28]00=输入,01=输出,10=IICSCL,11=保留<br>GPE13[27:26]00=输入,01=输出,10=SPICLK0,11=保留<br>GPE12[25:24]00=输入,01=输出,10=SPIMOSI0,11=保留<br>GPE11[23:22]00=输入,01=输出,10=SPIMISO0,11=保留<br>GPE10[21:20]00=输入,01=输出,10=SSDAT3,11=保留<br>GPE9[19:18]00=输入,01=输出,10=SSDAT2,11=保留<br>GPE8[17:16]00=输入,01=输出,10=SSDAT1,11=保留<br>GPE7[15:14]00=输入,01=输出,10=SSDAT0,11=保留<br>GPE6[13:12]00=输入,01=输出,10=SDCMD,11=保留<br>GPE5[11:10]00=输入,01=输出,10=SDLCK,11=保留<br>GPE4[9:8]00=输入,01=输出,10=IISSDO,11=IIS数据输出<br>GPE3[7:6]00=输入,01=输出,10=IISSI,11= IIS数据输入<br>GPE2[5:4]00=输入,01=输出,10=CDCLK,11=保留<br>GPE1[3:2]00=输入,01=输出,10=IISCLK,11=保留<br>GPE0[1:0]00=输入,01=输出,10=IISLRCK,11=保留<br>4)端口H的控制寄存器(GPHCON)<br>引脚GPHCON的位描述<br>GPH10[21:20]00=输入,01=输出,10=CLKOUT1,11=保留<br>GPH9[19:18]00=输入,01=输出,10= CLKOUT0,11=保留<br>GPH8[17:16]00=输入,01=输出,10=UEXTCLK,11=保留<br>GPH7[15:14]00=输入,01=输出,10=RXD2,11=保留<br>GPH6[13:12]00=输入,01=输出,10=TXD2,11=保留<br>GPH5[11:10]00=输入,01=输出,10=RXD1,11=保留<br>GPH4[9:8]00=输入,01=输出,10=TXD1,11=IIS数据输出<br>GPH3[7:6]00=输入,01=输出,10=RXD0,11= IIS数据输入<br>GPH2[5:4]00=输入,01=输出,10=TXD0,11=保留<br>GPH1[3:2]00=输入,01=输出,10=nRTS0,11=保留<br>GPH0[1:0]00=输入,01=输出,10=nCTS0,11=保留<br>5)UART线路控制寄存器(ULCONn n可以是0、1、2)<br>ULCONn的位[7][6][5:3][2][1]描述保留<br>值为0确定红外模式<br>0=正常操作模式<br>1=正常操作模式确定校验类型<br>0xx=无校验<br>100=奇校验<br>101=偶校验确定停止位数<br>0=1位停止位<br>1=2位停止位确定数据位<br>00=5位01=6位<br>10=7位11=8位6)TCFG0寄存器<br>TCFG0的位功能描述初始状态值<br>[31:24]保留0x00[23:16]在此不用0x00<br>[15:8]确定Timer2,Timer3,Timer4的预分频系数0x00[7:0]确定<br>Timer0,Timer1的预分频系数0x007)TCFG1寄存器<br>TCFG1的位功能描述初始状态值[31:24]保留0x00<br>[23:20]在此不用0b0000<br>[19:16]确定Timer4的分频器值0000=2 0001=4 0010=8 0011=16<br>[15:12]确定Timer3的分频器值0000=2 0001=4 0010=8 0011=16<br>[11:8]确定Timer2的分频器值0000=2 0001=4 0010=8 0011=16<br>[7:4]确定Timer1的分频器值0000=2 0001=4 0010=8 0011=16<br>[3:0]确定Timer0的分频器值0000=2 0001=4 0010=8 0011=16<br>说明:设置TCFG0、TCFG1可以确定预分频器系数、分频器值,如:通过设置TCFG0为0x0000001F,Timer0的预分频器系数选择为31,设置TCFG1为0x00000001,Timer0的分频器值选择为4。通过下面公式计算定时器的计数常数:<br>定时器输入时钟频率=PCLK/(预分频系数+1)/分频器值<br>计数常数=定时时间间隔/(1/定时器输入时钟频率)<br>预分频系数的范围为0~255,分频器值的取值范围为2、4、8、16。<br>6)TCON寄存器(注:此处不用的位被省略,其值默认为0x0000000)<br>TCON的位功能描述初始状态值厖0x0000000[3]确定Timer0的自动装载功能<br>1=自动装载0=一次停止0b0[2]确定Timer0的输出反转位<br>1=TOUT0反转0=TOUT0不反转0b0[1]确定Timer0的更新<br>1=更新TCNTB0和TCMPB0 0=不更新0b0[0]确定Timer0的启动/停止<br>1=启动0=停止0b0


火星搜题