嵌入式系统原理与应用教学课件作者魏权利第5章微处理器S3C2410A体系结构课件.ppt
文本预览下载声明
* * 2. 时钟控制寄存器属性及比特位定义 时钟控制寄存器的属性定义如表5-6所示。 表5-6 时钟控制寄存器属性表 寄存器名称 地址 读写操作 功能描述 初始值 CLKCON 0x4C00000C 可读/可写 控制各路时钟信号 0* 各比特位的功能定义如下表所示。用户需要禁止哪一个被控对象,将其对应的比特位清0;否则置1。 比特位 被控对象 功能描述 初始值 [31~19] 预留 ARM系统预留 全“0” [18] SPI 控制PCLK到SPI的时钟:0=禁止;1=允许 1 [17] IIS 控制PCLK到IIS的时钟:0=禁止;1=允许 1 [16] IIC 控制PCLK到IIC的时钟:0=禁止;1=允许 1 [15] ADC和触摸屏 控制PCLK到ADC的时钟:0=禁止;1=允许 1 [14] RTC 控制PCLK到SPI的时钟: 0=禁止;1=允许 (即使本位清0,RTC时钟仍能工作。特殊位) 1 [13] GPIO 控制PCLK到GPIO的时钟:0=禁止;1=允许 1 [12] UART2 控制PCLK到UART2的时钟:0=禁止;1=允许 1 [11] UART1 控制PCLK到UART1的时钟:0=禁止;1=允许 1 [10] UART0 控制PCLK到UART0的时钟:0=禁止;1=允许 1 [9] SDI 控制PCLK到SDI的时钟:0=禁止;1=允许 1 [8] PWM/TIMER 控制PCLK到PWM的时钟:0=禁止;1=允许 1 [7] USB device 控制PCLK到USB器件时钟:0=禁止;1=允许 1 [6] USB host 控制UCLK到USB主机时钟:0=禁止;1=允许 1 [5] LCDC 控制HCLK到LCDC时钟:0=禁止;1=允许 1 [4] Nand Flash Control 控制HCLK到NAND Flash控制器的时钟: 0=禁止;1=允许 1 [3] POWER_OFF 掉电模式控制:0=禁止;1=转换到掉电模式 0 [2] IDLE BIT 空闲模式控制,该位不会自动清0。 0=禁止;1=转换到IDLE空闲模式 0 [1] 预留 预留 0 [0] SM_BIT 特许模式,一般清0 0 * 3. 应用示例 假设根据系统的实际应用情况,不需要使用IIS、UART2、SDI、USB device,这时就需要关闭它们的时钟,以减少能源的消耗。设计控制字,即它们相对应的比特位清零,使用的比特位置1,其余也清零,控制字为0x0005ED70。C语言程序片段如下: /*时钟控制寄存器地址定义*/ #define rCLKCON (*(volatile unsigned char *)0x4C00000C) /*控制字送控制寄存器*/ rCLKCON=0x0005ED70; * ARM系统工作频率的设置包括MPLL输出频率的设置和UPLL输出频率的设置,它们分别通过各自的锁相环控制寄存器(MPLLCON、UPLLCON)进行; 为了给FCLK、HCLK、PCLK提供不同的时钟频率信号,可以通过对时钟分频控制器CLKDIVN进行设置完成此项任务。 由于锁相环电路和时钟分频电路从设置开始到输出频率稳定需要一定的时间,一般要求大于150uS,因此在配置上述控制寄存器时,首先要锁定电路的时间。为此S3C2410A内置了一个锁定时间计数器LOCKTIME,下面首先介绍它,然后进行程序设计。 5.3.5 S3C2410A工作频率的设置与分频编程示例 * 1. 时间锁定计数器属性和比特位定义 时间锁定计数器属性和比特位定义如表5-8所示,由LOCKTIME计数器设定MPLL、UPLL的锁定时间值。它是对外部输入的时钟频率Fin或外接晶体后的振荡频率信号进行计数。 假设系统使用的Fin=12MHz,则每个周期的时间是(1/12)uS。按上述时间要求,计数值应大于1800。 寄存器名 地址值 读写属性 描述 初值 LOCKTIME 0x4C000000 可读/可写 PLL锁定时间计数器 0x00FFFFFF 各比特位定义如下: [23:12]:U_LTIME,共12比特位,为产生UCLK时钟设定UPLL锁定时间计数值。 [11:0]:M_LTIME,共12比特位,为产生FCLK、HCLK、PCLK时钟设定MPLL锁定时间计数值。 * 2. 编程示例 为了使读者能够和实际进行密切的结合,现将ARM系统初始化的一段程序作为示例。以下这些地址在2410addr.a文件中有类似的定义。 LOCKTIME EQU 0x4C000000 MPLLCON EQ
显示全部