.. _时钟驱动: 时钟驱动 ========================================= AD14N / AD15N / AC104N / AD17N 支持动态设置系统HSB、LSB时钟,支持多种分频组合; 时钟驱动中限制着内置系统flash的spi时钟速度,SDK为兼容大多数flash,默认的spi时钟不超过60MHz; 最高系统时钟如下: =================== ================== ========= ========= ======== 最高系统时钟 / CPU AD14N / AC104N AD15N AD17N AD18 =================== ================== ========= ========= ======== HSB(系统时钟) 192MHz(超频) 160MHz 160MHz 160MHz LSB 96MHz(超频) 80MHz 80MHz 96MHz =================== ================== ========= ========= ======== AD14/15/17以及AC104时钟相关函数: :: void pll_sel(u32 pll_clock, _PLL_DIV pll_div, _PLL_B_DIV pll_b_div); int clk_get(const char *name); AD18时钟相关函数::: int clk_set(const char *name, int clk); int clk_get(const char *name); ^^^^^^^^^^^^^^^^^^^^ AD14N / AC104N 系统时钟超频说明 ################################ AD14N / AC104N支持最高192MHz的系统时钟,在运行大于160MHz系统时钟前需要提高系统内核电压,否则可能会导致运行异常; 支持192MHz时钟的内核电压,需要调用以下接口修改,需要在系统时钟初始化前调用: *VDC13_VOL_SEL(VDC13_VOL_SEL_140V);* *SYSVDD_VOL_SEL(SYSVDD_VOL_SEL_129V);* ===================== ================== ================== ============================ 系统时钟不超过 内核电压挡位 内置系统Flash A0芯片外挂系统Flash ===================== ================== ================== ============================ 160mhz 默认值 支持 支持 192Mhz 1.29v 支持 支持 ===================== ================== ================== ============================ .. centered:: 表 系统时钟支持情况 内置系统flash spi时钟说明 ################################ 当使用A0芯片时,系统Flash需要外挂,由于Flash的型号以及性能,加上PCB布线等情况的影响,不能预测系统Flash波特率运行在超过50Mhz、甚至是到96MHZ的具体情况;在此种情况下,客户如果需要系统Flash波特率运行在超过50Mhz,需要自行评估。 ======================= ================== ============================ 系统Flash波特率 内置系统Flash A0芯片外挂系统Flash ======================= ================== ============================ "<=60Mhz" 支持 支持 ">=60mhz" & "<=96Mhz" 支持 不能直接支持 ">96MHZ" 不支持 不支持 ======================= ================== ============================ .. centered:: 表 系统Flash波特率支持情况 AD14N / AC104N SPI时钟限制 *************************************************************************************************** .. image:: spi_clk_limit_ad14_ac104.png :alt: "AD14N / AC104N SPI时钟限制" :align: center .. centered:: AD14N / AC104N SPI时钟限制 AD15N SPI时钟限制 *************************************************************************************************** .. image:: spi_clk_limit_ad15.png :alt: "AD15N SPI时钟限制" :align: center .. centered:: AD15N SPI时钟限制 AD17N SPI时钟限制 *************************************************************************************************** .. image:: spi_clk_limit_ad17.png :alt: "AD17N SPI时钟限制" :align: center .. centered:: AD17N SPI时钟限制 *************************************************************************************************** 时钟相关函数 ########################################## 函数void pll_sel(u32 pll_clock, _PLL_DIV pll_div, _PLL_B_DIV pll_b_div) *************************************************************************************************** 此函数实现动态配置系统时钟源和分频,系统时钟配置关系如下: sys_clk = pll_clock / pll_div / pll_b_div; *注:选择系统时钟时,优先调整二级分频 pll_b_div,无法满足所需要的时钟下再调整一级分频 pll_div!* AD17N的二级分频参数命名为hsb_div,枚举类型为_HSB_CLK_DIV,效果与其他芯片一致! 其中参数: :: 1. pll_clock:PLL时钟源 ①、PLL_96M; ①、PLL_107M; ①、PLL_137M; ①、PLL_192M; ①、PLL_320M; ①、PLL_480M; 2. pll_div:PLL时钟一级分频 ①、可选PLL_DIV1~PLL_DIV56,具体请参考_PLL_DIV枚举; 3. pll_b_div:PLL时钟二级分频 ①、可选PLL_B_DIV1~PLL_B_DIV8,具体请参考_pll_b_div枚举; 函数int clk_get(const char \*name); *************************************************************************************************** 此函数实现获取各时钟域的频率,具体参数请查看函数内部。 函数int clk_set(const char \*name, int clk) *************************************************************************************************** 此函数用于AD18,实现动态配置系统时钟源和分频 其中参数: :: 1. name:时钟名,可配置以下时钟 ①、sys:系统时钟,即hsb时钟; ①、lsb:低速时钟; ①、sfc: sfc时钟; 2. clk:时钟设置目标频率