深入剖析barebox(U-BOOT-II)在i.MX27上的移植
MPLL和SPLL的输入是内部FPM或者标准外部OSC经过倍频后产生的,每个都可以选择其时钟源,要么为FPM要么为extosc[26M/27M]
MPLL : 主要用于产生系统时钟和cpu时钟,以及AHB和IPG时钟,以及大部分芯片内部的外设的divider的时钟源,包括PER1-PER4的divider时钟,以及NFC的divider的时钟,其余的如i2c、rtc、gpio、wdg、kpp等都采用ipg时钟来工作。
SPLL :主要用于产生特殊外设的时钟,比如作为USB/SSI1/SSI2/H264/MSHD的divider的输入时钟信号
AHB时钟:由mpll时钟分频后产生[ahbdiv 1-4 分之 mpll]
ARM时钟:由mpll时钟经armdiv分频后产生,其中还可以选择是直接对mpll分频还是mpll*2/3后再分频。
IPG时钟 : 等与AHB时钟分频后获得,所有外设都有AHB时钟,而且外设的APB时钟都是一样频率,主要用这个时钟来进行ARM和外设直接的通信,比如读取寄存器,传输数据等等,以及外设的工作时钟。还有一个时钟是某些外设特有的时钟,比如定时器需要一个计数的时钟,SSI需要一个传输的时钟,PER1—PER4需要的时钟,SSI1/2,H264,的时钟,
一般来说低速外设是IPG时钟,高速是AHB时钟,要看设备是挂载什么总线上的,是IP还是AHB。某些外设出了工作时钟外还需要特定的外设时钟或则像素时钟等等。所以一个外设至少需要1个时钟,要么是IPG要么是AHB,其余的时钟需要根据设备的具体需要而定。
其中SSI1DIV、SSI2DIV、MSHCDIV、H264DIV的时钟输入可以编程选择MPLL或者SPLL
每个外设有1个或者多个时钟需要启用,有些是IPG时钟,有些是AHB时钟,还有其他外设时钟等等。是ipg/ahb/perclk的组合。其中ipg是必须的,是arm和外设进行寄存器读写的时钟,ahb是高速外设传输的时钟,外设时钟是低速外设的时钟。
GPT 使用PERCLK1作为其计数器工作的时钟,用IPG时钟作为和ARM通信的时钟进行寄存器读写操作。还有模块工作的时钟,没有这个时钟模块就没有办法工作。或则这样来认为。并且arm核无法和module通信。
FCLK 就是cpu工作的频率
HCLK 就是AHB总线的工作频率 AHB连接高速的外设,也是系统时钟 AHB CLK
PCLK 就是 APB 总线工作频率 APB总线连接低速的外设 IPGCLK
rtc/wdg/gpio/dmac/rtic/i2c/fec/kpp
文章评论(0条评论)
登录后参与讨论