一、概述
工作或学习中刚拿到一款芯片,往往会比较迷茫感觉无从下手,首先开发环境搭建、IDE工具使用这是最基础的,但是接触芯片手册就不知道从哪里看起了。个人开发习惯一般会看芯片的一些主频、基础外设驱动等,其中比较重要的部分就是:时钟。时钟是可以说是芯片的心脏,只有配置好时钟,芯片才能正常工作起来。因此本文来了解下FC7240芯片的时钟。
二、关键字说明
XTAL:晶振
EXTAL:外部晶振
FIRC(Fast Internal Reference Clock):快速内部参考时钟
SIRC(Slow Internal Reference Clock):慢速内部参考时钟
OSC :振荡器。振荡器是电路或设备,用于产生稳定的时钟信号或频率信号。在电子系统中,振荡器被广泛用于提供时钟信号,以同步系统中的各个组件的操作。
PLL :锁相环。锁相环是一种反馈控制系统,用于产生稳定的输出信号,其频率和相位与输入信号相关。锁相环通常由振荡器、频率比较器、相位调整器和反馈回路组成。它可以通过调整输出信号的相位和频率,使其与参考信号保持一致或特定的关系。
NOTE: 参考芯片手册chapter1、chapter2对关键字说明
三、code
简单描述下clock初始化和相关使用
void Bsp_Clock_Init(void)
{
SCG_Deinit();
Bsp_ClockScgInit();
Bsp_ClockPccInit();
}
3.1 SCG_Deinit();
该函数作用是失能所有的时钟源,一般不做修改
3.2 Bsp_ClockScgInit();
时钟源初始化,配置时钟FOSC、PLL0、PLL1等,涉及到更换外部晶振规格等会修改相关的配置
3.3 Bsp_ClockPccInit();
PCC(Peripheral Configuration Control):外设配置控制
以配置ADC0 PCC举例,通过结构体变量的配置ADC0时钟是否使能、时钟源选择以及分频系数设置。
typedef struct
{
PCC_ClkSrcType eClockName; /*!< Peripheral clock */
bool bEn; /*!< Peripheral clock enable or disable */
PCC_ClkGateSrcType eClkSrc; /*!< Peripheral function clock source select */
PCC_ClkDivType eDivider; /*!< Peripheral clock divider value */
} PCC_CtrlType;
static void Bsp_ClockPccInit(void)
{
PCC_CtrlType tPcc;
tPcc.eClockName = PCC_CLK_ADC0;
tPcc.bEn = true;
tPcc.eClkSrc = PCC_CLKGATE_SRC_FOSCDIV;
tPcc.eDivider = PCC_CLK_DIV_BY1;
PCC_SetPcc(&tPcc);
}
该配置是使用的比较多,配置串口、ADC、IIC等模块都会涉及到,因为比较简单这里不过多解释。
NOTE:本文主要是工作学习中日常知识点记录,有不对之处,烦请及时指出。