您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > chap10习题解答
“微处理器系统原理与嵌入式系统设计”第十章习题解答10.2简述以ARM微处理器为核心的最小硬件系统的组成?ARM微处理器;电源模块,包括CPU内核和I/O接口电源;时钟模块,包括系统主时钟和实时时钟;复位模块,包括系统加电复位、手动复位和内部复位;存储器模块,包括程序保存存储器和程序运行存储器;JTAG调试接口模块。10.4简述S3C2440A芯片中各模块时钟信号产生及配置的原理。为降低系统功耗,可时钟信号进行哪些处理?系统复位信号与各时钟信号有什么关系?当系统主时钟送入S3C2440A芯片后,进入其时钟发生模块,由锁相环进行相应的处理,最终得到FCLK,HCLK,PCLK和UCLK四组时钟信号。其中,FCLK信号主要供给ARM920T内核使用,HCLK主要供给AHB总线、存储器控制器、中断控制器、LCD控制器、DMA控制器和USB主机模块;PCLK主要供给访问APB总线的外设,例如WDT,I2S,I2C,PWM定时器,MMC接口,ADC,UART,GPIO,RTC和SPI模块;UCLK主要提供USB模块需要的48MHz时钟。为降低系统功耗,可对时钟信号进行门控管理。最低功耗情况下,只开启FCLK信号,其他时钟信号关闭;若需对其他外设,只需使能相应总线及外设的时钟信号有效即可。系统复位信号一般包括加电复位、手动复位和内部复位三类。其中,加电复位和手动复位信号均来自外部复位电路,内部复位信号一般来自系统内部事务处理(例如看门狗复位等)。因此,系统对外部复位信号波形有一定的要求,若不能满足要求系统将不能正常工作。在S3C2440A芯片中,要完成正确的系统复位,在处理电源保持稳定之后,该信号必须至少维持4个FCLK时钟的低电平状态。10.6利用S3C2440A的GPIO端口,设计包含8个LED的流水灯电路,每个LED间隔1S轮流点亮,试画出程序流程图并写出相关程序段。假设利用S3C2440A芯片的GPIO端口G的第0~7引脚驱动8个LED电路,对应GPIO输出为0时LED灯亮,则相应程序流程图及相应程序段如下所示:GPGCONEQU0x56000060GPGDATEQU0x56000064GPGUPEQU0x56000068;配置GPGCON寄存器,设置相关引脚为输出功能LDRR0,=GPGCONLDRR1,[R0]BICR1,R1,#0x0000FFFFORRR1,R1,#0x00005555STRR1,[R0];配置GPGUP寄存器,断开各上拉电阻LDRR0,=GPGUPLDRR1,[R0]ORRR1,R1,#0x00FFSTRR1,[R0];输出驱动数据,点亮对应LED等LOOPSTARLDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0x00FFORRR3,R3,#0x00FESTRR3,[R2]LDRR0,=0xFFFFFF;初始计数值BLDELAY;调用延迟子程序…LDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0x00FFORRR3,R3,#0x007FSTRR3,[R2]LDRR0,=0xFFFFFF;初始计数值BLDELAY;调用延迟子程序BLOOPSTARDELAYSUBR0,R0,#1CMPR0,#0x0BNEDELAYMOVPC,LR10.7在上题中,如果要加入一个按键,实现按键按下时流水灯停止流动,按键放开时流水灯正常流转的功能,思考应怎样修改电路和程序?在上题的基础上,添加一个GPIO口作为输入管脚(GPA的GPA[0]),按键按下GPA[0]值为1,否则为零。按键按下时流水灯停止流动,按键放开时流水灯重新启动。故需在每次对GPGDAT寄存器赋值前/后进行判断操作(答案是后进行判断,之前判断也是正确的),若判断有按键按下,则跳转出改程序段,否者继续执行。相应程序如下:GPACONEQU0x56000000GPADATEQU0x56000004GPAUPEQU0x56000008GPGCONEQU0x56000060GPGDATEQU0x56000064GPGUPEQU0x56000068;配置GPACON寄存器,设置相关引脚为输出功能LDRR0,=GPACONLDRR1,[R0]BICR1,R1,#0x00000003ORRR1,R1,#0x00000000STRR1,[R0]开始配置控制GPGCON寄存器相应GPG0~GPG7段的值为0x5555配置禁止上拉GPGUP寄存器相应GPG0~GPG7段的值为0xFF输出驱动数据GPGDAT寄存器相应GPG0~GPG7段的对应LED灯流水显示;配置GPAUP寄存器,断开各上拉电阻LDRR0,=GPAUPLDRR1,[R0]ORRR1,R1,#0x0001STRR1,[R0];配置GPGCON寄存器,设置相关引脚为输出功能LDRR0,=GPGCONLDRR1,[R0]BICR1,R1,#0x0000FFFFORRR1,R1,#0x00005555STRR1,[R0];配置GPGUP寄存器,断开各上拉电阻LDRR0,=GPGUPLDRR1,[R0]ORRR1,R1,#0x00FFSTRR1,[R0];输出驱动数据,点亮对应LED等LOOPSTARLDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0x00FFORRR3,R3,#0x00FESTRR3,[R2]LDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0xFFFECMPR3,#0x1BEQWAITLDRR0,=0xFFFFFF;初始计数值BLDELAY;调用延迟子程序…LDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0x00FFORRR3,R3,#0x007FSTRR3,[R2]LDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0xFFFECMPR3,#0x1BEQWAITLDRR0,=0xFFFFFF;初始计数值BLDELAY;调用延迟子程序BLOOPSTARDELAYSUBR0,R0,#1CMPR0,#0x0BNEDELAYMOVPC,LRWAITLDRR2,=GPGDATLDRR3,[R2]BICR3,R3,#0xFFFECMPR3,#0x1BEQWAITBLOOPSTAR10.8在某采用小端存储的S3C2440系统中,处理器外设时钟PCLK=66.68MHz,使用其UART1接口实现串行通信,要求传输速率19200bps,不使用FIFO,关闭流控制,帧格式:8位数据位,2位停止位,偶校验。试写出各初始化控制字,并编写初始化程序段。;相关寄存器地址定义CLKDIVNEQU0x4C000014;CLKDIVNforPCLKandFCLKCAMDIVNEQU0x4C000018;CANDIVNULCON1EQU0x50004000;UARTlinecontrolregister0UCON1EQU0x50004004;UARTcontrolregister0UFCON1EQU0x50004008;UARTFIFOcontrolregister0UMCON1EQU0x5000400C;UARTmodemcontrolregister0UBRDIV1EQU0x50004028;UARTbaudratedivisorregister0UTRSTAT1EQU0x50004010;UARTTX/RXstatusregister0UTXH1EQU0x50004020;UARTtransmitbufferregister0URXH1EQU0x50004024;UARTreceivebufferregister0MPLLCONEQU0x4C000004;MPLLcontrolregisterAREASerialCommunication,CODE,READONLYENTRYldrr2,=MPLLCON;设置MPLL为0x00076022FCLK=Mpll=(2*m*Fin)/(p*(2的s次方)),Fin=16.9344MHz;m=(MDIV+8),p=(PDIV+2),s=SDIVmovr3,#0x22movr4,#0x00076000ADDr3,r3,r4strr3,[r2]ldrr2,=CLKDIVN;CLKDIVN设置为0x03,PCLK=FCLK/4movr3,#0x03strr3,[r2]ldrr2,=CAMDIVN;CLKDIVN设置为0x0200,PCLK=FCLK/4movr3,#0x200strr3,[r2]ldrr2,=ULCON1;ULCON1设置为0x07,含义是正常操作模式,无校验,停止位2,8个数据位movr3,#0x07strr3,[r2]ldrr2,=UCON1;UCON1设置为0x05表示发送、接收数据都使用查询方式,该处初始化为中断模式也正确movr3,#0x05strr3,[r2]ldrr2,=UFCON1;UFCON1设置为0x00为不使用FIFOmovr3,#0x00strr3,[r2]ldrr2,=UMCON1;UMCON1设置为0x00为不使用流控movr3,#0x00strr3,[r2]ldrr2,=UBRDIV1;UBRDIV1设置为216,含义为波特率设为19200,由下面公式算得:UBRDIVn=(int)(PCLK/bps*16)-1;其中PCLK=66.68MHzmovr3,#216;或者16进制表示0XD8strhr3,[r2]10.9在上题中,若采用查询方式进行数据传输,要将位于地址DATA处的100字节发送到其他设备,试画出程序流程图,并写出相关程序段。查询方式进行数据传输的代码段如下:CHECKLDRR2,=UTRSTAT1LDRR3,[R2]ANDR3,R3,#0X02CMPR3,#0X02BNEWAITSETLDRR5,=DATALDRBR3,[R5],#1LDRR2,=UTXH1STRBR3,[R2]SUBR5,R5,#1CMPR5,#0x64BNECHECK10.10在10.8题中,若要实现处理器收到数据0xAA,则回应1字节数据0x55的功能,试画出采用查询方式传输的程序流程图,并写出相关程序段。进一步思考如果采用中断方式工作,需要对软件进行怎样的修改?相应代码段如下:CHECKLDRR2,=UTRSTAT1LDRR3,[R2]ANDR3,R3,#0X01CMPR3,#0X01BNECHECKWAITLDRR3,[R2]ANDR3,R3,#0X02CMPR3,#0X02BNEWAITSETLDRR2,=URXH1LDRBR3,[R2]CMPR3,#0xAAMOVEQR3,#0x55LDRR2,=UTXH1STRBR3,[R2]BCHECK若采用中断方式工作的话,需要将UCON1配置寄存器设为中断工作模式;在接收到数据后触发中断,进入中断子程序,进行相应操作。开始配置控制初始化控制字查询收发状态寄存器UTRSTAT1的状态位UTRSTAT1[0]UTRSTAT0[0]=1否是R5=0xAA查询收发状态寄存器UTRSTAT1的状态位UTRSTAT1[1]UTRSTAT0[1]=1否是取出接收寄存器URXH1里的值放入寄存器R5是R5=0x55将R5的值复位发送寄存器UTXH1否
本文标题:chap10习题解答
链接地址:https://www.777doc.com/doc-1863580 .html