clock时钟

13 篇文章 0 订阅

BLOCK DIAGRAM

fclk_hclk_pclk

时钟种类

soc芯片上,时钟一般分为三种:
1, fclk : 一般是cpu工作的时钟.
2, hclk: AHB总线上适用(High), 如usb,内存,相机等.
3, pclk: APB总线使用(peripheral), 入i2s,i2c,spi 等.

如何得到不同频率的时钟.

clock

  • 1, osc:表示晶振(2440上是16M).
  • 2, pll表示锁相环(Phase-Locked-Loop).用来叠加时钟.
  • 3, 时钟分发:
    晶振->mpll->clkcntl->fclk->cpu(arm920t):
    晶振->mpll->clkcntl->fclk->hdivn->hclk-ahb->memory/interrupt/lcd…
    晶振->mpll->clkcntl->fclk->pdivn->pclk-apb->i2c/i2s/spi/
    晶振->upll->usb
时钟设置顺序

clock_div

  • 1, 上电, rRESET处于底电平,等待电源稳定.
  • 2, 根据OM[3:2]的值,fclk等于晶振.
  • 3, 电源稳定后, nRESEt被拉高, cpu开始工作,同时Pll锁存OM[3:2]的值.
  • 4, ClockDisable时cpu停止工作,代码设置PLL,
  • 5, 一段时间后PLL开始工作.
  • 6, 一段时间后, ClockDisable结束, cpu开始工作在fclk=Pll输出的新时钟.
芯片为什么需要时钟
  1. cpu为什么要有时钟.
    参考:为什么CPU需要时钟才能工作
编程

1, OM: 用来控制时钟选择
om

2, 计算pll,需要设置M,P,S的值来控制
mps
pll_reg

3, 分频器设置
divn
DIVN

4, tfclk:thclk:tpclk 选择表
pll_value

4, 需要注意点
mrc: move reg co-process 将协处理器的值写入寄存器.
note

  • 1, 知道了以上需要操作的地方,我们可以先定义 tfclk:thclk:tpclk 之间的比值和最高频率. tf:th:tp = 8:2:1
    FCLK=400M, HCLK=100M, PCLK=50M
  • 2, 查手册确定DIVN的值:
    HCLK=FCLK/4 & PCLK=FCLK/8 & CAMDIVN[9] = 0
    CLKDIVN[2:1] = ob10
    CLKDIVN[0] = 1
    所以16进制标识就是CLKDIVN=b101=0x5
  • 3, 将fclk设置成400M需要设置pll,pll由mps三个单位计算而成.
    Mpll = (2 * m * Fin) / (p * 2 S )
    m = (MDIV + 8), p = (PDIV + 2), s = SDIV
    (92+8 )* 2 * 12 / (1+2)*2的s次方 = 400M
    所以设置MDIV = 92, PDIV = 1, SDIV = 1
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值