【经验】CW32F030C8T6单片机如何通过看手册配置时钟树
本章针对CW32F030C8T6的时钟树进行详细解析,续第一章启动文件的相关讲解。在【技术】CW32F030C8T6时钟单片机启动以及库函数构成讲到,单片机的启动文件会使用单片机内部的RC振荡器作为单片机的启动时钟,并且该时钟频率被设置为48MHz。但讲解有疏漏,根据编程手册的描述,该48MHz仅为HSI频率,而非输送到时钟总线上的频率,在进入时钟总线之前,该时钟会被分频(也就是降低频率),在不进行任何配置的情况下,这个48M的信号会被6分频。
这个图包含很多信息,但是图中的彩色字信息并非全部来自此图,更多的信息需要结合代码和寄存器描述来获得:
1.HSI被配置为48M是通过启动文件中的SystemInit函数得知的。
2.系统选择HSI作为启动时钟是通过编程手册“时钟与复位”一章得知的。
3.HSI之后的预分频器被设置为6分频,是通过查看指示该分频器的寄存器得知的。
下面以信息3为例,讲解如何查看此图中的相关寄存器:
在经过SYSCTRL_CR0.SYSCLK寄存器选择之后,系统时钟SysClk会在经过分频后送入内核与各个外设,这一信息流程图与粉色箭头已经清晰展示。
在手写箭头指向的方框中,有1、...、16的字样,表示该预分频器可以进行这些倍数的分频。所谓分频比如48M,6分频,其分频结果就是48M/6 = 8M,2分频就是24M,简单的除法。
方框下方是该分频器对应的控制寄存器,寄存器的名字并不一定完全叫这个,但是这个名字可以很容易就被理解为预分频器控制相关的寄存器,该寄存器名字拆解版本是:SYS(系统)CTRL(控制)HSI.DIV(分频),这套命名系统是通用的,即使使用的是别的单片机,也可以根据这套命名规则快速确认寄存器的功能。
通过查看编程手册时钟与复位章节的寄存器描述,此寄存器DIV位的值默认为6。而HSI频率的设置则是该寄存[10:0]位的TRIM位决定的。
只需要沿着紫色箭头的方向配置相关的寄存器,单片机就能够正常启动,但这一步并不需要开发者亲自去做,芯片厂家提供的启动文件和库可以自动完成这一步。但不论怎么说RC振荡器的精度有限,且8M的速度放在48MHz主频的内核上也确实不够看,因此大部分时候,都需要使用外部晶振提供的时钟,通过锁相环倍频之后达到48M,最后通过时钟线送入内核和外设。下面讲解怎么配置才能得到48MHz的高精度高速时钟信号:
首先,电路板上需要有一个在范围内的晶体,晶体的两个引脚需要在外围电路的配合下连接到单片机的晶体输入引脚,同时IO需要工作在正确的工作模式。
硬件部分准备完成了,接下来就是配置HSE和PLL相关的寄存器了。下面是相关的配置代码:
首先需要打开HSE功能,允许单片机接收HSE提供的震荡信号。
然后配置PLL的分频系数,这将决定锁相环的输出频率,此处设置为1分频,也就是不分频。
使能PLL功能,并告知用到的时钟源、时钟频率、倍频系数,这对应三个入口参数。
将flash的等待周期设置为3个时钟周期,部分单片机需要进行这一步操作,原因会在后面细说。
进行时钟切换,按照注释完成准备工作之后即可切换。
先查看HSE使能函数:
仅展示主体部分,函数注释未列出,但CW32的时钟配置库函数注释相对来说很详细,推荐配置都写在函数注释里面,不懂得寄存器配置的小伙伴可以直接根据推荐进行配置,如果有更深入的需求,直接查看芯片手册对应的寄存器描述即可。后续的参数配置直接根据注释进行推荐配置即可,在PLL与HSE相关的寄存器配置完成之后,48M的时钟信号就已经产生了,只不过系统的时钟源还不是这个(记得那个梯形的选择器吗?),下一步就是切换时钟源,让系统工作在48M的频率下。切换时钟?我知道你很急,但是先别急,虽然一般情况下确实可以直接切换了,但是CW32有个需要注意的地方,那就是flash的配置。
为什么CW32需要进行flash配置之后才能切换时钟源?
我们都知道,写的程序都存储在flash中,等到需要执行程序的时候,CPU会和flash进行通信,取出flash中的指令然后执行。问题来了,既然程序需要通过某种通信方式传输到CPU,那这个通信传输的速度一定有个上限,这个上限就是flash的读写速度上限,当flash的实际读写速度与其允许的读写速度不匹配时,flash与CPU之间的通信就会出现问题,之后就可以理解为CPU有高速取指令需求,但是flash无法在这个速度下跟上CPU的请求速度,这个通信就断了,程序就不动了。因此我们需要设置flash,让他多等几个时钟周期再响应,这样flash就能适应更高频率的读取请求,并且在此程序的配置中,需要使能预取指令和缓存功能,这两个功能可以让flash与CPU更好地配合以实现单片机的高速运行。障碍都解决了,接下来真的只需要切换时钟即可。对比部分:这一部分会列出stm32f103c8t6单片机的标准库上电时钟设置代码进行对比。
这里的条件编译,我选择最后一条,如果需要上电设置为别的频率,只需要在同一个文件中把宏定义注释取消即可。
下面列出设置时钟到72M函数的一部分,此函数与CW32的时钟初始化顺序几乎是一模一样,首先需要将HSE使能并等待时钟稳定,之后设置PLL的参数,配置flash为2个等待周期,再使能PLL输出,等待PLL时钟稳定再切换时钟。
可以看出,即使是不同的芯片,他们在大部分地方的操作也是一样的,只是一些细节上有些许不同。
总结:
1.本章简单展示了如何查找手册来配置寄存器,且再次强调库函数的本质就是操作寄存器。
2.单片机都会有一个时钟树,时钟树的图可以在编程手册(不是数据表和内核手册)中找到。
3.部分单片机想要工作在高工作频率下,需要设置flash等待时间并打开缓存和预取指令使能。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由咪猫转载自CW32生态社区,原文标题为:【有那么点详细的CW32学习笔记】看手册配置时钟树,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】芯源CW32系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
武汉芯源CW32系列单片机数字电压电流表产品硬件设计指南
本文基于武汉芯源CW32系列单片机,介绍数字电压电流表产品硬件设计指南,希望对各位工程师有所帮助。
基于CW32F030C8T6芯片通过智能控制技术完成智能小车项目代码和功能说明
本文介绍了使用CW32F030C8T6芯片完成的全国电子竞赛H题智能小车项目。项目核心是利用CW32F030C8T6芯片的强大处理能力和丰富外设支持实现智能控制。硬件方面,包括PWM电机控制、五路循迹模块、OLED显示和角度传感器。软件部分采用结构化编程,涵盖底层驱动、外设控制和主程序逻辑。主程序包含变量定义、任务执行、硬件初始化等,支持模式切换以应对不同竞赛场景。
【应用】基于国产32位MCU芯片CW32F030C8T6的智能门锁方案,主频64MHz,具备低功耗多功能优势
智能门锁集成3D识别算法、接近检测、指纹输入模块,低功耗计算芯片等于一体,解锁快、功耗低、续航久,现武汉芯源推出一款MCU芯片CW32F030C8T6助力于智能门锁设计。
CW32F030C8T6 from Wuhan Core Source is Used in Combustible Gas Detector, Ensures Safe Operation in Harsh Electromagnetic Interference Environments
With the advancement of electronic science and technology, the combustible gas detector has become an essential tool for safety protection. This detector converts the concentration of leaked combustible gases into electrical signals and issues alarm signals to remind staff to take safety measures. The CW32F030C8T6, as the main control chip, provides excellent system protection with its high-precision ADC, fast conversion speed, high reliability, strong ESD protection, and strong anti-interference characteristics, ensuring safe operation in harsh electromagnetic interference environments.
2023年电赛A题——国奖开源分享
根据题目要求,本项目拟设计制作一个单相逆变器并联运行系统,本系统以CW32F030C8T6核心板为控制核心,由直流电源、隔离变压器、全桥逆变电路、采集电路、驱动电路、LC低通滤波电路和辅助电源组成。从机采用DQ锁相环进行相位追踪,通过生成双极性SPWM波对全桥逆变电路调制,产生正弦交流电。利用PID算法进行电流、电压闭环控制,逆变器实现稳流,稳压来实现并联,并网运行。
武汉芯源半导体邀您相约CITE2024中国电子信息博览会
CITE2024第十二届中国电子信息博览会将于2024年4月9-11日在深圳福田会展中心隆重开展,武汉芯源半导体将为电子行业参观者展示智能指纹锁、麦克风、燃气表、LED调光板、可燃气体报警器、筋膜枪、角磨机、血氧仪、温控器、BLDC无刷电机、永磁同步电机无感FOC控制方案等多款CW32单片机典型应用方案,诚邀您莅临9B122武汉芯源半导体展位参观交流!
基于武汉芯源CW32F003的无线充15W及一芯双充方案
芯联创新采用武汉芯源半导体的CW32F003推出支持无线充15W及一芯双充方案,支持PD与C口升级,可做5W、7.5W、10W、15W,数字解码,15W温度保持30~60℃。主控CW32F003为32位M0+内核,支持过温保护、过压保护和欠压保护,支持动态FOD和静态FOD,可根据定制客户需求更改功能。
【CW32模块使用】VL53L0X激光测距传感器
VL53L0X是ST公司推出的新一代 ToF 激光测距传感器,采用了第二代 FlightSenseTM技术,利用飞行时间(ToF)原理,通过光子的飞行来回时间与光速的计算,实现测距应用。本文的目标是在CW32F030C8T6开发板上能够实现测量距离的功能。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
基于CW32的无刷直流空心杯电机有感控制驱动方案
空心杯电机(Hollow-Cup Motor)是一种特殊类型的微型无刷直流电机,具有空心的旋转部分。它通常由外部固定的外壳和内部旋转的空心杯组成。空心杯电机具有较高的功率密度和扭矩输出,适用于一些特定的应用场景,如精密仪器、机器人、医疗设备等。空心杯电机的工作原理是基于无刷直流电机的原理。它采用无刷电机的结构,包括定子(固定部分)和转子(旋转部分)。
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
【CW32模块使用】红外测距传感器
GP2Y0A02YKOF是夏普的一款距离测量传感器模块。本文的目标是将例程移植至立创·CW32F030C8T6开发板上【能够判断前方障碍物的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
【经验】基于CW32的超声波模块的应用
C-SR04超声波模块是一种常用的测距模块,其通过发射超声波并接收其反射信号来实现测距功能。具有成本低、精度高、使用简便等特点。本实验用到了CW32F030C8T6小蓝板、0.96寸OLED显示屏、HC-SR04超声波模块及Keil5开发环境。
基于CW32的无刷直流空心杯电机无感方波控制驱动方案
本方案采用CW32F030C8T6作为主控芯片,采用无感方波控制算法控制无刷直流空心杯电机。CW32F030C8T6是一款高性能、低功耗的32位微控制器,具有丰富的片上外设资源,可以适合用于电机控制。无感方波控制算法是一种简单有效的电机控制算法,不需要使用霍尔传感器,可以降低硬件成本。
【CW32模块使用】TTP224触摸传感器
该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。本文目标是将例程移植至CW32F030C8T6开发板上【实现添加指纹、删除指纹和搜索指纹的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
电子商城
现货市场
服务
支持微型计算机 、便携式计算机显示设备、投影仪、打印设备、绘图仪、多用途打印复印机、扫描仪、计算机内置电源、电源适配器、充电器、服务器、收款机等产品中国强制性产品认证。
提交需求>
提供7~27寸工控机定制,支持嵌⼊式/ 壁挂式 /桌⾯式/悬挂式等安装方式,采用纯平⾯板IP65防尘防⽔等级,莫⽒7级硬度触摸屏,兼容多种操作系统:组态软件/安卓/XP/win7/8/10/Linux等,支持主板、接⼝、外观、⽀架、刷卡器、⾝份证阅读器、LOGO、⻨克⻛、系统、电池、蓝⽛、4G/5G、摄像头、GPS系统、⼆维码扫描器、指纹等特殊应⽤场景定制
最小起订量: 1台 提交需求>
登录 | 立即注册
提交评论