中科芯CKS32K148系列MCU SCG寄存器配置以及相关示例(二)
中科芯CKS32K148系列MCU SCG(系统时钟发生器)模块应用指南(一)
六、SCG寄存器配置
在前文中,已经对中科芯CKS32K148 MCU SCG时钟进行了整体介绍,下面以RUN模式下配置SPLL为系统时钟源为例,对时钟配置的具体方法进行讲解。
图5 SYSCLK生成流程
在RUN模式下选择SPLL作为系统时钟源时,应对SPLL时钟进行相关使能操作,同时应保证SPLL的输出信号频率在正常工作频率90~160MHz范围内。在对SPLL的配置中,有两个较为重要的寄存器,分别是SCG_SPLLCSR和SCG_SPLLCFG。
图6 SCG_SPLLCSR寄存器
在SCG_SPLLCSR寄存器中,我们应重点关注如下几位:
图11 SPLL分频系数位
可知,SPLL对参考时钟信号能够进行16~47倍频和最大8分频。
由于SPLL以SOSC作为参考时钟源,还应在寄存器SCG_SOSCCSR中对SOSC时钟使能。
图12 SCG_SOSCCSR寄存器
SCG_SOSCCSR寄存器中,SOSC时钟使能的相关位如下:
在完成上述时钟配置后,在寄存器SCG_RCCR中配置RUN模式下的系统时钟源。
除SPLL时钟外,还应保证生成的内部时钟SYS_CLK、BUS_CLK和FLASH_CLK工作在安全频率范围内。下图为系统时钟源信号(紫色)生成内部时钟信号的流程图。
图17 内部时钟生成流程
生成的内部时钟信号频率由寄存器SCG_RCCR中如下相关位调控:
七、SCG结构体初始化
在标准库中,所有时钟的初始化均可通过CLOCK_DRV_Init()实现:
CLOCK_DRV_Init(&clockMan1_InitConfig0);
其中使用的参数结构体指针clockMan1_InitConfig0,其结构体类型为clock_manager_user_config_t,结构体定义如下:
typedef struct
{
scg_config_t scgConfig; /*!< SCG Clock configuration. */
sim_clock_config_t simConfig; /*!< SIM Clock configuration. */
pcc_config_t pccConfig; /*!< PCC Clock configuration. */
pmc_config_t pmcConfig; /*!< PMC Clock configuration. */
} clock_manager_user_config_t;
需要注意的是,由于SCG相关时钟的配置仅需在第一个成员结构体scgConfig中进行,对于其余的成员结构体的使用本文中将不进行介绍。
SCG的初始化结构体类型为scg_config_t,下面是相关结构体的定义:
typedef struct
{
scg_sirc_config_t sircConfig; /*!< Slow internal reference clock configuration.*/
scg_firc_config_t fircConfig; /*!< Fast internal reference clock configuration. */
scg_sosc_config_t soscConfig; /*!< System oscillator configuration. */
scg_spll_config_t spllConfig; /*!< System Phase locked loop configuration. */
scg_rtc_config_t rtcConfig; /*!< Real Time Clock configuration. */
scg_clockout_config_t clockOutConfig; /*!< SCG ClockOut Configuration. */
scg_clock_mode_config_t clockModeConfig; /*!< SCG Clock Mode Configuration. */
} scg_config_t;
在本文中,我们需要使用上述结构体中的成员结构体soscConfig、spllConfig以及clockModeConfig完成对内部时钟输出的配置。
对于SOSC时钟,初始化结构体类型为scg_sosc_config_t,结构体定义如下:
typedef struct
{
uint32_t freq; /*!< System OSC frequency. */
scg_sosc_monitor_mode_t monitorMode; /*!< System OSC Clock monitor mode. */
scg_sosc_ext_ref_t extRef; /*!< System OSC External Reference Select.*/
scg_sosc_gain_t gain; /*!< System OSC high-gain operation. */
scg_sosc_range_t range; /*!< System OSC frequency range. */
scg_async_clock_div_t div1; /*!< Asynchronous peripheral source. */
scg_async_clock_div_t div2; /*!< Asynchronous peripheral source. */
bool enableInStop; /*!< System OSC is enable or not in stop mode. */
bool enableInLowPower; /*!< System OSC is enable or not in low power mode.*/
bool locked; /*!< System OSC Control Register can be written. */
bool initialize; /*!< Initialize or not the System OSC module.*/
} scg_sosc_config_t;
该结构体中共有11个成员变量,我们仅需配置其中的第1、4、5和11号变量即可完成对SOSC时钟的使能,其功能分别如下:
变量一freq:应配置为当前SOSC使用的时钟源频率。
变量四gain:用于控制晶振操作的功耗模式,可选高增益或低增益。
变量五range:用于为OSC选择频率范围,作为SPLL的时钟源,本文中SOSC只能选择高频率范围。
变量十一initialize:用于对SOSC时钟进行使能,决定了时钟是否有效。
对于SPLL时钟,初始化结构体类型为scg_spll_config_t,结构体定义如下:
typedef struct
{
scg_spll_monitor_mode_t monitorMode; /*!< Clock monitor mode selected. */
uint8_t prediv; /*!< PLL reference clock divider. */
uint8_t mult; /*!< System PLL multiplier. */
uint8_t src; /*!< System PLL source. */
scg_async_clock_div_t div1; /*!< Asynchronous peripheral source.*/
scg_async_clock_div_t div2; /*!< Asynchronous peripheral source.*/
bool enableInStop; /*!< System PLL clock is enable or not in stop mode. */
bool locked; /*!< System PLL Control Register can be written. */
bool initialize; /*!< Initialize or not the System PLL module. */
} scg_spll_config_t;
该结构体中共有9个成员变量,我们需配置其中的第2、3、4和9号变量以完成对SPLL时钟的使能以及输出频率调控,其功能分别如下:
变量二prediv:用于配置SPLL参考时钟频率的分频系数。
变量三mult:用于配置SPLL参考时钟频率的乘法因子。
变量四src:用于配置SPLL的输入时钟源,在本文中仅能选择参考时钟SOSC作为时钟源。
变量九initialize:用于对SPLL时钟进行使能,决定了时钟是否有效。
对于RUN模式下的内部时钟配置,初始化结构体类型为scg_system_clock_config_t,结构体定义如下:
typedef struct
{
scg_system_clock_div_t divSlow; /*!< Slow clock divider. */
scg_system_clock_div_t divBus; /*!< BUS clock divider.*/
scg_system_clock_div_t divCore; /*!< Core clock divider. */
scg_system_clock_src_t src; /*!< System clock source. */
} scg_system_clock_config_t;
该结构体中共有4个成员变量,其功能分别如下:
变量一divSlow:用于控制FLASH时钟分频比。
变量二divBus:用于控制总线时钟分频比。
变量三divCore:用于控制内核时钟分频比。
变量四src:用于在运行模式下,选择产生系统时钟的时钟源。
八、时钟配置代码
依据前文中对寄存器与SCG时钟结构体的基本介绍,即可在函数CLOCK_DRV_Init()中对系统时钟进行相关配置。本文以SPLL为时钟源,配置输出56MHz的SYSCLK、28MHz的BUSCLK以及14MHz的FLASHCLK。相关结构体代码如下:
clock_manager_user_config_t clockMan1_InitConfig0 =
{
.scgConfig =
{
.soscConfig =
{
.initialize = true,
.freq = 8000000U, /* System Oscillator frequency: 8MHz */
.extRef = SCG_SOSC_REF_OSC, /* Internal oscillator of OSC requested. */
.range = SCG_SOSC_RANGE_HIGH, /* High frequency range selected for the crystal oscillator of 8 MHz to 40 MHz. */
},
.spllConfig =
{
.initialize = true,
.prediv = (uint8_t)SCG_SPLL_CLOCK_PREDIV_BY_1,/* Divided by 1 */
.mult = (uint8_t)SCG_SPLL_CLOCK_MULTIPLY_BY_28,/* Multiply Factor is 28 */
.src = 0U, /*Clock Source SOSC*/
},
.clockModeConfig =
{
.initialize = true,
.rccrConfig =
{
.src = SCG_SYSTEM_CLOCK_SRC_SYS_PLL, /* System PLL */
.divCore = SCG_SYSTEM_CLOCK_DIV_BY_2, /* Core Clock Divider: divided by 2 */
.divBus = SCG_SYSTEM_CLOCK_DIV_BY_2, /* Bus Clock Divider: divided by 2 */
.divSlow = SCG_SYSTEM_CLOCK_DIV_BY_4, /* Slow Clock Divider: divided by 4 */
},
}
}
};
- |
- +1 赞 0
- 收藏
- 评论 0
本文由wenxia转载自中科芯MCU公众号,原文标题为:MCU微课堂|CKS32K148 SCG(二),本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
【经验】中科芯CKS32F1系列MCU替代其他厂牌产品兼容性问题处理注意事项
中科芯基于ARM Cortex-M3的CKS32F1系列MCU功耗较国外品牌低20%,有多种低功耗模式。多重、多样化保护机制,自定义分级读写保护更是提高了产品的安全性。但是在与其他品牌产品进行替换时会遇到一些兼容性问题,在此将常见的问题和解决办法进行说明。
设计经验 发布时间 : 2020-03-08
解析中科芯CKS32F107xx MCU的DAC模块
DAC即数模转换器,它可以将数字信号转换为模拟信号。在常见的数字信号系统中,传感器信号被ADC模块把电压模拟信号转换成易于计算机存储、处理的数字信号,由计算机处理完成后,再由DAC模块转化输出电压模拟信号来驱动某些执行器件。本文将为您解析CKS32F107xx MCU的DAC特点和结构。
设计经验 发布时间 : 2024-08-28
解析中科芯CKS32F107xx系列MCU的GPIO配置
本文中中科芯来给大家介绍CKS32F107xx系列MCU的GPIO配置,希望对各位工程师有所帮助。GPIO是通用输入输出端口的简称,也是CKS32可控制的引脚,CKS32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
设计经验 发布时间 : 2024-06-12
中科芯(CETC)32位MCU选型指南
目录- 公司简介 MCU MCU型号定义&封装参考 MCU开发工具 LoRa/ NB-IoT LoRa/ NB-IoT产品简介 MCU应用案例
型号- CKS32F103V8T6,CKS32F031K6U6,CKS32F102C6T6,CKS32F417ZET6,CKS32F105VDT6,CKS32F107,SX1262,CKS32F105,CKS32F102R4T6,CKS32F103,CKS32F101,CKS32F102,CKS32F101R6T6,CKS32F103C4T6,CKS32F051K6U6,CKS32F101ZCT6,CKS32F030F6P6,CKS32F101VET6,CKS32F417VGT6,SX1280,CKS32L063C8T6,CKS32F031F4P6,CKS32F101C8T6,CKS32F107V8T6,SX1278,CKS32F103RCT6,CKS32F107RBT6,CKS32F051K6T6,CKS32F405ZGT6,TP20L607,CKS32F103ZET6,CKS32L052R6T6,CKS32L052C8T6,CKS32F105VCT6,CKS32F107系列,CKS32F105RET6,CKS32L051系列,CKS32L051R8T6,CKS32L053C6T6,CKS32F101ZDT6,CRF-62,CKS32F072R6T6,CKS32F051系列,CKS32F103RDT6,CKS32F072C8T6,CKS32F103VBT6,CKS32F030K6T6,CKS32F042K8T6,CKS32F407VET6,CKS32F103R4T6,CKS32F415系列,CKS32F103ZDT6,CKS32F102C8T6,CKS32F417ZGT6,CKS32F042系列,CKS32F105VBT6,CKS32F030R8T6,CKS32F102R6T6,CKS32F105RDT6,CRF62-LKWAN-CY,CKS32F103C6T6,CKS32L052系列,CKS32F030K6U6,CKS32F102系列,CKS32F101R8T6,CKS32F030F4P6,CKS32F101ZET6,CKS32L063R8T6,CKS32F101CBT6,CKS32F031系列,CKS32F107R8T6,CKS32F031G6U6,CKS32F103RET6,CKS32L051K6T6,CRF1278系列,CKS32F415RGT6,CKS32L063系列,CKS32F103VCT6,CKS32F051C8T6,CKS32F103ZCT6,CKS32F417IET6,CKS32L052R8T6,CKS32F105RCT6,CKS32L053系列,CRF1278,CKS32F051R8T6,CKS32F101系列,CKS32L053C8T6,CKS32F072CBT6,CKS32F105V8T6,CKS32F407ZET6,CKS32F101RBT6,CKS,CKS32F030系列,CKS32F072R8T6,CRF62-L2,CRF62-L5,CKS32F042C6T6,CKS32F103VDT6,CKS32L053R6T6,CKS32F107VET6,CKS32F407VGT6,CKS32F103R6T6,CKS32F417系列,CKS32F030C8T6,CKS32F102R8T6,CKS32F105RBT6,CKS32F031C6T6,CKS32F103C8T6,CKS32F102CBT6,CKS32F405系列,CKS32F101RCT6,CKS32L052K6T6,CKS32F415VGT6,CKS32F031G4U6,CKS32F103VET6,CKS32F107VDT6,CKS32F051,CKS32F051C6T6,CKS32L051K8T6,CKS32F417IGT6,CRF-62系列,CRF62-WAN,CKS32,CKS32F103系列,CKS32F072RBT6,CKS32F042,CKS32F407IET6,CKS32F405RGT6,CRF1280-12S,CKS32F107RET6,CKS32F407ZGT6,CKS32F101VBT6,CKS32F102RBT6,CKS32F101RDT6,CKS32L053R8T6,CKS32F031,CKS32F103R8T6,CKS32F042C8T6,CKS32F107VCT6,CKS32F030,CRF1278-L3,CRF1278-L1,CKS32F030C6T6,XY1100,CRF1278-L4,CKS32F103CBT6,CKS32F030K6,CKS32F102C4T6,ASR6601,CKS32F101R4T6,CKS32F105R8T6,CKS32F051K8U6,CKS32F407系列,CKS32F107RDT6,CKS32F101VCT6,CKS32F415ZGT6,CKS32F101RET6,CKS32L052K8T6,CKS32F417,CKS32F417VET6,CKS32F101C6T6,CKS32F415,CKS32F031F6P6,CKS32F107VBT6,CKS32L051C6T6,CKS32F051K8T6,TP20H607,CKS32L051C8T6,CKS32F042K6T6,CKS32L052C6T6,ASR6505,CKS32F105VET6,CKS32F407,CKS32F405,ASR6501,ASR6502,CKS32X...,CKS32F105系列,CKS32L051R6T6,CKS32L063,CKS32F407IGT6,CKS32F405VGT6,CKS32F072,CKS32F101VDT6,CKS32F072系列,CKS32F031K6T6,CKS32F103RBT6,CKS32F072C6T6,CRF1100-N1,CKS32L052,CKS32F107RCT6,CKS32L051,CKS32L053
中科芯CKS32K148系列MCU SCG(系统时钟发生器)模块应用指南(一)
系统时钟发生器(SCG)是MCU中的重要模块,它能够为芯片提供多个灵活的时钟源,并支持各种时钟输出选项,实现对芯片内部各个模块的时钟供应。CKS32K148的时钟生成电路提供了各种时钟分频器和选择器,允许不同的模块以该模块特定的频率运行,而时钟生成逻辑实现了可以独立关闭的模块特定时钟门控,从而能够优化芯片性能以满足低功耗的需求。本文将围绕CKS32K148的SCG模块展开介绍。
技术探讨 发布时间 : 2024-09-27
Top Chinese 8/32-bit MCU Manufacturers with ARM Cortex-M0, M0+, M3, M4 and Stable Supply
In the face of rising semiconductor raw material prices and a continued shortage of production capacity, Sekorm has joined Civil Technology, Arteli, Chipsea, China Microelectronics, Fudan Microelectronics, Aerospace Shun, and other mainstream MCU manufacturers to provide stable MCU supply guarantees
活动 发布时间 : 2022-06-21
中科芯(CETC)CKS32F030C8/C6/K6/F4 32位MCU数据手册
描述- 本资料给出了中科芯CKS32F030 xx 微控制器产品的器件特性
型号- CKS32F030XX,CKS32F030C6,CKS32F030R8T6XXX,CKS32F030C8,CKS32,CKS32F030K6,CKS32F030F4
【选型】中科芯(CETC)CKS32通用32位MCU快速选型指南
目录- CKS32F030超值型-48Mhz/CKS32F031入门型-48Mhz CKS32F051入门型-48Mhz/CKS32F103系列-72MHz
型号- CKS32F051K8T6,CKS32F051K6T6,CKS32F030C6T6,CKS32F030C8T6,CKS32F031K6U6,CKS32F103CBT6,CKS32F030R8T6,CKS32F031C6T6,CKS32F103,CKS32,CKS32F030K6U6,CKS32F051R8T6,CKS32F103C8T6,CKS32F103TBU6,CKS32F103T8U6,CKS32F030F4P6,CKS32F051K8U6,CKS32F051K6U6,CKS32F030F6P6,CKS32F031K6T6,CKS32F031F4P6,CKS32F103RBT6,CKS32F103VBT6,CKS32F030K6T6,CKS32F031F6P6,CKS32F031,CKS32F051C8T6,CKS32F103R8T6,CKS32F051,CKS32F030
中科芯CKS32F107xx系列MCU内部温度传感器ADC采集应用指南
中科芯推出的CKS32F107xx系列MCU有一个内部的温度传感器,可以用来测量MCU及周围的温度(TA)。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。
设计经验 发布时间 : 2024-08-13
【产品】国产32位MCU、从M0到M4内核8大系列产品和STM32软硬件全兼容 | 视频
在2021年4年27日主控器件及存储专场|世强硬创新产品研讨会中,中科芯分享了其32位通用MCU,从M0到M4内核8大系列产品,同STM32软硬件全兼容,并且讲解了在工业、物联网、通信领域的应用。
新产品 发布时间 : 2021-04-29
【经验】中科芯CKS32F4xx系列MCU DAC功能应用指南
DAC模块作为中科芯CKS32F4xx系列MCU的一个常用外设,可以将数字信号转换成模拟信号,最高分辨率可达12位,且两个独立DAC输出通道转换互不影响,各个通道均能使用DMA功能,可由软硬件触发。因此,为了实现DAC输出正弦波,拟采用一定的时间向DAC的数据寄存器写入数据,随后进行数模转换输出不同的电压,最后在时间轴上显示出波形。
设计经验 发布时间 : 2023-08-19
中科芯MCU诚邀新老朋友莅临上海慕尼黑电子展交流指导
中科芯MCU诚邀新老朋友2024年7月8日-10日莅临上海慕尼黑电子展交流指导!望与客户朋友们洽谈合作、携手共赢!
原厂动态 发布时间 : 2024-07-08
中科芯CKS32F4xx系列MCU Flash模拟EEPROM的操作应用指南
中科芯CKS32F4xx系列芯片内部嵌入一个FLASH,若FLASH存储了用户的应用程序后仍留有空间,剩余空间可被当作EEPROM使用,这比访问外部FLASH速度优势更为明显。在本章节中,将会向大家简要介绍内部FLASH,并通过一个例程来演示FLASH模拟EEPROM的操作。
设计经验 发布时间 : 2024-02-22
【经验】中科芯CKS32F4xx系列MCU SPI通信配置及读写SPI FLASH指南
中科芯CKS32F4xx系列MCU的SPI外设可用作通讯的主机及从机,支持最高的SCK时钟频率为fpclk/2,完全支持SPI协议的4种模式。本文介绍利用CKS32F4xx系列固件库来完成对SPI的配置使用及SPI FLASH实验。
设计经验 发布时间 : 2023-04-24
解析CKS32F107xx系列MCU的中断和事件
本章节首先将以MCU开发人员常接触到的“中断”、“事件”和“中断事件”三个名词的概念展开,然后去阐述彼此的主要区别,最后借助MCU的GPIO外部中断/事件控制器(EXTI)的传输路径来加深对上述概念的理解。
设计经验 发布时间 : 2024-06-18
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论