航顺芯片HK32F03X系列采用的是Cortex-M0内核架构,该系列产品均支持内部高速时钟HSI,即设计上把内部8M时钟直接作为倍频基准。这是国外S**32F03X所不具备的功能,因为其只有HSI/2,也就是4M时钟,作为倍频基准,然后通过最大16倍的PLL锁相环倍频到64MHz。而很多客户应用对主频有要求,即希望使用内部晶振让系统跑72MHz,就没办法实现。今天对航顺HK32F03X系列如何实现系统主频升级到72M做一个简单介绍。
<strong><font color="#004a85">//HK32F0X系列的内部时钟树</font> </strong>
首先我们来看下HK32F0X系列的内部时钟树
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240629-1.png&…; alt=“图1 内部时钟树"></center><center><i>图1 内部时钟树</i></center>
从上面的时钟内部图我们可以看到内部产生的56MHz的时钟可以直接作为系统时钟,或者经过4分频成14MHz之后作为系统时钟和ADC时钟。本文重点介绍56M时钟经过7分频成8MHz作为HSI,然后倍频到72M的方法,这样可以省掉外部晶振,方便PCB布板,降低BOM成本。通过以下图示我们可以清晰地看到HK32F03X增加了寄存器RCC_CFGR4,其中PPSS位作为HSE和HIS的开关选择,所以我们通过设置此位为1以选择内部HSI时钟作为倍频的基准时钟。
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240630-2.png&…; alt=“图2 局部放大图"></center><center><i>图2 局部放大图</i></center>
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240631-3.png&…; alt=“图3 CFGR4 说明"></center><center><i>图3 CFGR4 说明</i></center>
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240632-4.png&…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
<strong><font color="#004a85">//下面以MDK5(Keil5.0以上版本)编译软件来做讲解</font> </strong>
首先我们来看下HK32F0X系列的内部时钟树
◆首先我们找到系统时钟初始化代码
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240633-5.png&…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
我们可以看到系统时钟在void SystemInit (void) 里面初始化,而工程的启动文件startup_stm32f0xx.s里面已经调用了此函数,如下图:
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240634-6.png&…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
所以我们只要修改SetSysClock函数里面的配置就可以了,这样不用在Main函数里面去做系统时钟的配置
<strong><font color="#004a85">◆其次定义寄存器RCC_CFGR4以及PPSS位</font> </strong>
可以直接在system_stm32f0xx.c 文件开头定义
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240636-7.png&…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
0x400210e8 是寄存器地址 0x00000100是位8为1 PPSS位为1
<strong><font color="#004a85">◆最后修改SetSysClock函数</font> </strong>
增加以下一行代码 选择HSI作为基准
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240637-8.png&…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
修改倍频基准RCC_CFGR_PLLSRC 这个是选择来自RCC_CFGR4.PPSS
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240638-9.png&…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
HSI作为基准时钟配置代码如下:
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240639-10.png…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
<center><img src="http://mcu.eetrend.com/files/2022-01/wen_zhang_/100557225-240640-11.png…; alt=“航顺HK32F03X内部8M时钟倍频成72M解决方案"></center>
<strong><font color="#FF0000"> 相关阅读:</font></strong>
<a href="http://mcu.eetrend.com/content/2021/100552393.html">HK32MCU应用笔记(一)| HK32F030X系列在PH测量笔的应用</a>
<a href="http://mcu.eetrend.com/content/2021/100552623.html">HK32MCU应用笔记(二)| 国外品牌采用航顺HK32F030R8T6代替出现串口不兼容解决方法</a>
<a href="http://mcu.eetrend.com/content/2021/100552985.html">HK32MCU应用笔记(三)| 航顺芯片在5G光纤测试仪的应用</a>
<a href="http://mcu.eetrend.com/content/2021/100553381.html">HK32MCU应用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误</a>
<a href="http://mcu.eetrend.com/content/2021/100553619.html">HK32MCU应用笔记(五)| 关于应用HK32F030延时效率问题</a>
<a href="http://mcu.eetrend.com/content/2021/100556182.html">HK32MCU应用笔记(六)| HK32MCU芯片调试心得</a>
<a href="http://mcu.eetrend.com/content/2022/100556837.html">HK32MCU应用笔记(七)| 航顺HK32MCU闩锁效应问题研究及预防措施</a>
来源:<a href="https://mp.weixin.qq.com/s/pZw-c4DRFloy0TooqZ__0A">航顺芯片 </a>
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。