您的位置 首页 5G

s3c2410时钟信号:FCLK、HCLK和PCLK

s3c2410有三个时钟FLCK、HCLK和PCLK(这3个时针都是核心时针)s3c2410芯片有这么一段话:FCLKisusedbyARM920T,内核时钟,主频。HCLKisuse

  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。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/247905.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部