打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
s3c2410时钟信号:FCLK、HCLK和PCLK

s3c2410时钟信号:FCLK、HCLK和PCLK

(2010-06-15 14:46:52)
te<
转载te<
标签:

杂谈

分类: ARM
s3c2410 有三个时钟FLCK 、HCLK 和PCLK (这3个时针都是核心时针)
s3c2410 芯片有这么一段话:
FCLK is used by ARM920T ,内核时钟,主频
HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是为AHB总线上的外设提供时钟信号,包括USB时钟。 AHB总线用于连接高速外设
PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,ADC, UART, GPIO, RTC and SPI. 也就是为APB总线上的外设提供时钟信号,即IO接口时钟,串口的时钟设置就是从PCLK来的。APB总线用于连接低速外设
The S3C2410X supports selection of Dividing Ratio between FCLK, HLCK and PCLK. This ratio is determined by HDIVN and PDIVN of CLKDIVN control register.
s3c2410可通过设置CLKDIVN控制寄存器的HDIVN位(第1位)和PDIVN位(第0位)来改变FCLK, HLCK 和 PCLK的比率。
那么如何获取FCLK, HLCK 和 PCLK的时针频率呢?
可先通过clk_get获取一个clk结构体
de</* clk_get获取一个名为id的时针
* 输入参数dev:    可以为NULL
* 输入参数id:     时针名称,如fclk、hclk、pclk等
* 返回值:         返回该时钟的clk结构体
/
de<
de<struct clk *clk_get(struct device *dev, const char *id)

struct clk {
     struct list_head list;
     struct module *owner;
     struct clk *parent;
     const char *name; /* 该时针名称 /
     int id;
     int usage;
     unsigned long rate; /* 时钟频率 /
     unsigned long ctrlbit;

     int (*enable)(struct clk *, int enable);
     int (*set_rate)(struct clk *c, unsigned long rate);
     unsigned long (*get_rate)(struct clk *c);
     unsigned long (*round_rate)(struct clk *c, unsigned long rate);
     int (*set_parent)(struct clk *c, struct clk *parent);
};
de<
再将clk_get返回的clk结构体传递给clk_get_rate,获取该时钟的频率
de<unsigned long clk_get_rate(struct clk *clk)de<
一个例子:
de<printk(KERN_DEBUG"fclk = %d, pclk = %d, hclk = %d, uclk = %d\n",
             clk_get_rate(clk_get(NULL, "fclk")),
             clk_get_rate(clk_get(NULL, "hclk")),
             clk_get_rate(clk_get(NULL, "pclk")),
             clk_get_rate(clk_get(NULL, "uclk")));
de<
这里出现了另一个时针uclk,专门给usb供给时针信号。uclk是外部时针源,由s3c2410芯片的gph8/uclk管脚引入,给uart提供外部时针信号,以获取更精确地时针频率。
关于AMBA片上总线
AMBA(Advanced Microcontroller Bus Architecture)是由ARM公司提出的片上总线规范。AMBA 2.0规范包括四个部分:AHB(AMBA高性能总线)、ASB(AMBA系统总线)、APB(AMBA外设总线)和Test Methodology。
the Advanced High-performance Bus(AHB)应用于连接高性能、高时钟频率的系统模块(如CPU、DMA和DSP等)它构成了高性能的系统骨干总线( back-bone bus )。AHB bus上的外设有LCD controller(CONT代表controller,控制器)、USB Host CONT、ExtMaster、Nand CONT和nand flash boot loader、bus CONT、interrupt CONT、power management、memory CONT(sram/nor/sdram等)。
the Advanced System Bus(ASB)是第一代AMBA系统总线,同AHB相比,它数据宽度要小一些,它支持的典型数据宽度为8位、16位、32位。
the Advanced Peripheral Bus(APB)是本地二级总线(local secondary bus ),通过桥和AHB/ASB相连。它主要是为了满足不需要高性能流水线接口或不需要高带宽接口的设备的互连。APB bus上的外设有UART、USB device、SDI/MMC、Watch Dog Timer、bus CONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
FLASH的配置
基于S3C2410 的时钟频率小结
S3C2440的时钟设置
振荡器分频
STM32时钟控制RCC探究(转) - 奋斗
解析STM32的时钟树RCC
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服