中科芯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%,有多种低功耗模式。多重、多样化保护机制,自定义分级读写保护更是提高了产品的安全性。但是在与其他品牌产品进行替换时会遇到一些兼容性问题,在此将常见的问题和解决办法进行说明。
中科芯CKS32F4xx系列MCU Flash模拟EEPROM的操作应用指南
中科芯CKS32F4xx系列芯片内部嵌入一个FLASH,若FLASH存储了用户的应用程序后仍留有空间,剩余空间可被当作EEPROM使用,这比访问外部FLASH速度优势更为明显。在本章节中,将会向大家简要介绍内部FLASH,并通过一个例程来演示FLASH模拟EEPROM的操作。
【经验】中科芯CKS32F4xx系列MCU SPI通信配置及读写SPI FLASH指南
中科芯CKS32F4xx系列MCU的SPI外设可用作通讯的主机及从机,支持最高的SCK时钟频率为fpclk/2,完全支持SPI协议的4种模式。本文介绍利用CKS32F4xx系列固件库来完成对SPI的配置使用及SPI FLASH实验。
中科芯(CETC)32位MCU选型指南
公司简介 MCU MCU型号定义&封装参考 MCU开发工具 LoRa/ NB-IoT LoRa/ NB-IoT产品简介 MCU应用案例
中科芯 - NB-IOT模组,开发板,32位MCU,无线模块,模组,32位MCU编程器,单片机,32-BIT MCU编程器,小体积系列模组,32位MCU芯片,工业级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,智能路灯控制器,移动通迅,OBD车窗控制系统,永磁同步电机驱动,电动工具控制器,智能安防,OBD车窗控制器,智能锁,云台控制,智能家居,电动牙刷,物联网,RFID读卡器,智能直流无刷电机控制器,终端传感数据采集,工业控制,楼宇自动化,物联网网关,平衡车,智慧城市,自动化抄表,物联网低功耗应用,血氧仪,自动抄表,智能电力网关,MCU&NB核心板,工业自动化,无线抄表,额温枪,医疗健康,新基建,无人机控制,激光扫码枪,物联网温度传感终端,汽车电子,水电表远传射频板,环境监测
中科芯解析CKS32K148芯片外设桥模块
外设桥模块是用于连接处理器内核与外围设备的关键组件,其中AIPS指的是“高级外设接口保护系统”,它通过硬件方式对外设接口进行访问控制和保护,用于避免芯片上的外设接口受恶意攻击或意外干扰,从而确保外设接口的安全运行和数据完整性。本文将向大家展开芯片外设桥模块的介绍。
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
中科芯联合创芯工坊推出MCU固件安全烧录解决方案,提供多重固件安全加密机制
基于众多客户对于固件安全烧录的需求,近期中科芯MCU事业部与其第三方生态合作伙伴创芯工坊推出PowerWriter系列调试烧录器产品及配套烧录工具,提供多重固件安全加密机制。该生态工具适配中科芯CKS32全系列MCU产品,有效地保护开发者知识产权权益。
MCU微课堂 | CKS32F107xx TIM
CKS32F107xx系列部分定时器在内部是相连的,可用于定时器同步或链接,方便用户配置不同的同步模式,以便在电机控制、数据采集和PWM信号生成等应用中,实现复杂的时间序列和多通道的同步操作。本节课我们将围绕定时器同步功能概述展开,并以其中一种功能为例——将定时器2给定时器3当预分频器,最终级联同步PWM输出。
中科芯CKS32K148系列MCU SCG(系统时钟发生器)模块应用指南(一)
系统时钟发生器(SCG)是MCU中的重要模块,它能够为芯片提供多个灵活的时钟源,并支持各种时钟输出选项,实现对芯片内部各个模块的时钟供应。CKS32K148的时钟生成电路提供了各种时钟分频器和选择器,允许不同的模块以该模块特定的频率运行,而时钟生成逻辑实现了可以独立关闭的模块特定时钟门控,从而能够优化芯片性能以满足低功耗的需求。本文将围绕CKS32K148的SCG模块展开介绍。
【经验】VSCode中搭建中科芯MCU CKS32F103系列的开发环境教程
中科芯的MCU CKS32F103系列主频可达72M,128K Flash,20K的SRAM,集成两个12位ADC,CAN2.0B,全速USB2.0,多达80个IO口均可映射外部中断,在工业、消费领域应用十分广泛。
【应用】主频72MHz的32位MCU CKS32F103RCT6用于跟焦器主控单元,具备闪存256KB
本文针对跟焦器主控单元应用,推荐中科芯推出的CKS32F103RCT6,这是一款性能极佳且超值型的基于ARM®Cortex™-M3的32位MCU,主频为72MHz,Flash大小为256KB,供电电压2.0V~3.6V;支持多种通讯接口。
解析中科芯CKS32F107xx MCU的DAC模块
DAC即数模转换器,它可以将数字信号转换为模拟信号。在常见的数字信号系统中,传感器信号被ADC模块把电压模拟信号转换成易于计算机存储、处理的数字信号,由计算机处理完成后,再由DAC模块转化输出电压模拟信号来驱动某些执行器件。本文将为您解析CKS32F107xx MCU的DAC特点和结构。
中科芯MCU选型官网的链接有吗,帮忙提供一下,感谢!
中科芯MCU选型链接如:【选型】中科芯(CETC)CKS32通用32位MCU快速选型指南 || /doc/2197228.html ,【选型】中科芯(CETC)CKS系列32位MCU选型指南 || /doc/2166381.html,中科芯(CETC)32位通用MCU与STM32替换对照表 || /doc/2197206.html 。
【经验】中科芯MCU CKS32F4xx系列产品GPIO口配置指南
GPIO(General-purpose input/output)是通用输入输出端口的简称,CKS32F4xx系列产品通过GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
中科芯CKS32F107xx系列MCU内部温度传感器ADC采集应用指南
中科芯推出的CKS32F107xx系列MCU有一个内部的温度传感器,可以用来测量MCU及周围的温度(TA)。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。
电子商城
现货市场
服务市场

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量:1000 提交需求>

可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
登录 | 立即注册
提交评论