本帖最后由 lengrudie 于 2024-9-18 17:05 编辑
一、前言 在产品设计时,芯片的时钟配置是在所难免的,在使用G32A1445的时候,会发现要配置的时钟参数比较多,令初期使用者望而却步,这里就详细的说一下时钟配置的每个参数含义。
二、时钟简介 G32A1445的时钟源有:SYSOSC、 HSI、 LSI、 LPO 和 SYSPLL。 SYSOSC是外部晶体振荡器时钟 HSI是高速内部时钟,频率为48MHZ LSI是低速内部时钟,频率为8MHZ LPO是内部低功耗时钟,频率为128KHZ SYSPLL是锁相环,高达112MHZ
三、时钟分配 G32A1445的外设模块较多,为了能够让不同的模块可以以特定的时钟频率运行,时钟产生电路提供了多个时钟分频器和选择器。支持单独禁用该模块,实现特定模块的时钟门控功能。电源管理单元的时钟信号LPO、 HSICLK、 LSICLK, SYSOSCCLK 和 SYSPLL 生成的特定时钟可以应用于各个模块。如生成时钟分频:SYSPLLDIVCFG1CLK、HSICLKDIVCFG1CLK、LSICLKDIVCFG1CLK、SYSOSCDCFG1CLK、SYSPLLDIVCFG2CLK、 HSICLKDIVCFG2CLK、 LSICLKDIVCFG2CLK、 SYSOSCDCFG2CLK。不同外设模块选用的时钟可以通过PCM时钟寄存器选择。哪些外设可选用哪些时钟,可以通过查阅用户手册,对照配置即可。
四、SDK里的时钟配置 SDK例程常用如下函数配置:
相关的时钟配置参数如下: 1、SYSOSC相关时钟配置结构体,包含9个参数
.init 配置是否使能,可选true、false。 .locked配置是否锁存,可选true、false。 .freq是当前外部安装晶振大小 .div1分频配置时钟一SYSOSCDCFG1CLK .div2分频配置时钟二SYSOSCDCFG2CLK .extRef选择SYSOSC内部震荡电路 .monitorMode是选择SYSOSC监控模式,这里选择不开启 .gain选择增益模式 .range高频范围选择,根据实际安装晶振的大小选择范围
2、LSI相关时钟配置结构体,包含7个参数
.init 配置是否使能LSI,可选true、false。 .locked配置是否锁存寄存器,可选true、false。 .div1分频配置时钟一LSICLKDIVCFG1CLK .div2分频配置时钟二LSICLKDIVCFG2CLK .enableInStop选择是否允许LSI在停止模式下继续使用 .enableInLowPower选择是否允许LSI在地功耗模式下继续使用 .range LSI范围选择,此固定选择8MHZ
3、HSI相关时钟配置结构体,包含6个参数
.init 配置是否使能HSI,可选true、false。 .locked配置是否锁存寄存器,可选true、false。 .div1分频配置时钟一HSICLKDIVCFG1CLK .div2分频配置时钟二HSICLKDIVCFG2CLK .regulator HIS时钟调节器使用 .range HSI范围选择,此固定选择48MHZ
4、SYSPLL相关时钟配置结构体,包含8个参数
.init 配置是否使能,可选true、false。 .locked配置是否锁存,可选true、false。 .src时钟源选择,0固定选择SYSOSC .div1分频配置时钟一SYSPLLDIVCFG1CLK .div2分频配置时钟二SYSPLLDIVCFG2CLK .monitorMode是选择SYSPLL监控模式,这里选择不开启 .prediv SYSPLL时钟分频 . mul SYSPLL时钟倍频因子
5、通过上面的基础时钟配置之后,下面就配置系统运行模式时钟
.src时钟源选择,可选择SYSOSC、HSI、LSI .divSlow分频配置时钟之FLASHCLK/SCGSLOWCLK .divBus分频配置时钟之BUSCLK时钟 .divCore分频配置时钟之CORECLK时钟
五、结束语 时钟配置部分是关键部分,这里只是将SDK里每个参数做解释,实际使用的时候根据实际情况修改即可。
|