时钟

瑞萨电子近日宣布推出适用于有线基础设施、数据中心和工业应用的全新超低25fs-rms时钟解决方案——FemtoClock™ 3,从而扩展其时钟解决方案产品阵容。新的产品家族包含8路和12路差分输出的超低抖动时钟发生器及抖动衰减器,可为下一代高速互连系统实现高性能、简单易用和高性价比的时钟树设计。新产品的目标应用包括电信交换机和路由器、机架式数据中心交换机、医疗影像、广播音视频等。

1713492512202643.jpg

瑞萨超低抖动FemtoClock™ 3产品家族

时钟发生器和抖动衰减器实现25fs-rms的业界超低抖动

FemtoClock 3产品具有行业领先的超低的相位噪声和抖动,可满足112Gbps SerDes速率的需要,以及在48MHz至73MHz频率的无源晶振输入时,满足下一代224Gbps SerDes设计需求。本高集成度产品可具有多达四个时钟域,并提供具有出色信噪比(PSRR)的集成LDO(低压差稳压器),从而降低了电路板的复杂度与成本。

Zaher Baidas, Vice President of the Timing Division for Renesas表示:“瑞萨电子凭借数十年的经验和专利技术,致力于提供高品质的时钟解决方案,推动行业的进步。FemtoClock 3产品通过在单个器件中实现超低抖动的多时钟与同步功能,极大的优化印刷电路板设计、降低解决方案的面积及成本,从而支持行业的持续发展与创新。”

Vincent Ho, CEO at UfiSpace表示:“FemtoClock 3是一款能为我们提供超低抖动性能,同时还能保持低功耗、优化印刷电路板设计并降低下一代交换机解决方案的PCB板面积的时钟解决方案。借助瑞萨打造的时钟解决方案,让我们有能力以高效率和低成本的方式推出先进产品。”

瑞萨全新FemtoClock™ 3时钟解决方案演示:https://mp.weixin.qq.com/s/6iQBTWoExwyn4qz7eiY_Pw 

FemtoClock 3产品家族的关键特性

  • 业界领先的25fs-rms抖动性能超过下一代112Gbps和224Gbps SerDes参考时钟要求

  • 支持多达4个时钟域,允许从单个器件生成所有系统时钟

  • 产品型号多样,可提供抖动衰减、时钟同步和时钟产生功能,并具有8或12个差分输出端

  • 功耗低至1.2W,使用1.8V单电源供电

  • 集成非易失性存储器,可在工厂进行器件出厂定制且客户无需承担额外费用

  • 小型7mm×7mm 48引脚VFQFPN封装,和9mm×9mm 64引脚VFQFPN封装

  • 符合ITU-T G.8262和G.8262.1标准,用于增强型同步以太网

  • 支持多种工作模式的单芯片方案,极大的简化了整体时钟树

FemtoClock 3支持多种工作模式,包括同步、抖动衰减和时钟发生。客户可将全新FemtoClock 3解决方案与瑞萨公司的ClockMatrix™、VersaClock、时钟驱动器和有源晶振等时钟解决方案组合在一起,以满足高性能有线基础设施和数据中心的高要求、高可靠性复杂时钟设计需求。

FemtoClock 3与瑞萨IC Toolbox(RICBox)应用程序无缝结合,使用户能够对评估板上的器件进行配置及编程。此外,RICBox还可与云平台上的瑞萨实验室(Renesas Lab)连接,为用户带来虚拟连接至真实实验室环境的能力。

成功产品组合

瑞萨将FemtoClock 3与其产品组合中的众多兼容器件相结合,创建了广泛的“成功产品组合”,包括1600G固定外形交换机。这些“成功产品组合”基于相互兼容且可无缝协作的产品,具备经技术验证的系统架构,带来优化的低风险设计,以加快产品上市速度。瑞萨现已基于其产品阵容中的各类产品,推出超过400款“成功产品组合”,使客户能够加速设计过程,更快地将产品推向市场。更多信息,请访问:https://www.renesas.cn/cn/zh/applications 

1600G固定外形交换机解决方案的更多信息请访问:

https://www.renesas.cn/cn/zh/applications/communications-infrastructure/networking-fixed-access/1600g-fixed-form-factor-switch 

供货信息

FemtoClock 3产品和评估板现可从瑞萨及其分销合作伙伴处购买。了解样品订购和工厂定制等的更多信息,请点击文末阅读原文访问查看。

关于瑞萨时钟解决方案

瑞萨提供业界理想的广泛且深层次的芯片时钟产品组合,包括各种时钟缓冲器、有源晶振、时钟发生器、抖动衰减器和时钟同步器产品,可应对众多应用中的时钟挑战。瑞萨凭借在模拟和数字时钟产品领域超过20年的成熟专业知识,打造了具有极低相位噪声和超高性能,并采用先进时钟技术的产品组合。瑞萨带来业内唯一的“一站式”时钟解决方案,涵盖从全功能系统解决方案到简单时钟组件所需器件的专业知识及产品。

有关瑞萨时钟解决方案的更多信息请访问:

https://www.renesas.cn/cn/zh/products/clocks-timing 

来源:瑞萨电子

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 14

01、车规MCU为什么需要考虑时钟的功能安全

ISO 26262 要求汽车整车厂及其零件供应商必须遵循并记录功能安全开发流程(从开始制定规格直到量产发布),以使汽车获得运行资格。根据定义,功能安全要大幅降低发生故障的风险,这些故障可分为两类:系统故障和随机故障,前者只能通过变更制造过程、操作流程、文档的设计或其它相关因素消除。后者是在硬件的生命周期内发生的不可预知的故障,按照概率分布,这些故障可能是由于永久性或短暂的干扰环境,也可能是在系统的生命周期中,由内部技术的性能导致。

MCU作为汽车的重要控制元件之一,归类为ISO 26262中的特殊类型元素(SEooC, Safety Elements out of Context),其功能安全在定义直至量产阶段需严格遵循ISO 26262,SEooC要求使用假设(AoU)来反映将使用的预期安全概念,要求和机制。MCU内部时钟架构复杂,时钟信号的频率对芯片的工作的正确性和性能至关重要,如果频率超出指定的限制,则可能导致性能、协议和定时故障。如下是FC7300系列中部分时钟架构:

1.png

FC7300系列支持的时钟源包括内部晶振(SIRC/SIRC32K/FIRC)、外部晶振(SOSC/FOSC)和锁相环(PLL0/1, 其参考时钟可以是FIRC和FOSC),由SCG统一管理,其中FIRC/FOSC/PLL0可以作为系统时钟,所有的时钟源可以作为功能时钟。当MCU系统时钟频率出现问题,可能会导致对内部外设资源的访问不成功或者因为不满足FLASH时序导致指令读取失败等;如果系统时钟丢失时则会导致整个芯片停止工作影响与其他系统的交互。而当功能时钟频率出现问题或者丢失时,依赖于功能时钟的外设,如串口,CAN,PWM等功能受到影响,从而导致与其他系统的通信或者电机的控制出现错误等。

因此,车规MCU为了保证使用过程中的功能安全等级,需要在芯片设计过程中考虑一种或多种有效的安全机制保证:在芯片的时钟信号因受到辐射或其他真实使用场景中其他因素导致的时钟频率误差或者丢失时,在不影响使用的前提下可以产生事件让系统复位或让用户感知介入操作,从而保证安全。

02、我们如何实现时钟的功能安全

FC全系列支持CMU,CMU模块用于保证芯片上时钟信号频率的稳定性,其可以检测被监控时钟(Monitor Clock)的频率是否在用户指定的可编程频率范围内。CMU用一个时钟(Reference Clock)作为频率检查操作的基准参考,假定这个参考时钟的频率在规定的范围内,则CMU可以正确运行,反之如果参考时钟在运行参数之外,CMU则不能保证的行为。因此在FC系列中,FOSC/RTC/FIRC的频率监测使用SIRC,同时使用FIRC来保证SIRC的频率安全。

2.png

如图,CMU实现的基本原理是在编程的采样时间内计算被监控时钟的翻转次数,两个内部计数器(Reference Counter和Monitor Counter)在监测使能之后在不同的时钟域内并行计数,采样完成后和用户定义的阈值进行比较,当采样值不在用户期许的频率范围内时,即可配置产生中断。CMU支持频率阈值的自定义,内部实现两个寄存器以便用户编程指定被监测时钟频率的上下限值(MIN/MAX),同时CMU支持监测时间的可编程(REF_WINDOW),当在用户设定的监测时间范围内(称为一次测量),被检测时钟的频率不在用户定义的范围时,产生MIS事件;在两次测量内,时钟都没有进行过任何翻转则产生LOC事件。并且CMU可选的支持周期监测,7300系列中每1ms监测PERIOD[WINDOW]次后CMU停止工作,可用于降低系统的功耗。

FC7300支持5个CMU:CMU0-4,分别监测RTC_CLK(可选时钟,包括SIRC32K,SIRCDIV_32K,SOSC等),FOSC,FIRC,SIRC和系统时钟,监测系统时钟的参考时钟可选为SIRC和FOSC。所有CMU支持中断报警,CMU1/2/4还支持报告给全局故障监控模块FCSMU,可选的配置为中断报警或者系统复位,并且由于SIRC和系统时钟的特殊性,CMU3/4可选的支持复位整个系统。

为了保证CMU的功能有效性,在每次系统上电之后,可以对CMU进行自检,在计算完期待的频率阈值之后,给定一个阈值范围外的配置使能CMU,检测系统的响应,在收集到期许 的故障反应之后,失能CMU然后重新给予正确的配置进入系统主程序,否则报错进入到故障状态。并且在系统运行过程中可以使用同样的方式定时自检,以确保在整个运行过程中该安全机制始终有效。

除了CMU之外,FC系列的SCG内部还支持对FOSC/SOSC/PLL以及系统时钟进行监测,在对应的时钟丢失之后,即在设定的时间内时钟没有翻转时,可以产生中断或者直接对MCU进行复位。

总之在系统工作的过程中,尤其是在使用timer定时调度的系统中,时钟在预定的频率范围内直接影响到正常的功能流转,在MCU设计过程中,实现多种有效的安全机制保证时钟出现非预期的故障时能被发现在功能安全生命周期中至关重要。

来源:旗芯微Flagchip

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 46

很多应用场合需要检测系统时钟是否在正常范围内,以保证MCU能正常工作,CLASS B功能安全实现系统时钟自检的方法是采用两个独立时钟源交叉检查来进行测量,可使其中一个作为定时器的时钟源,另一个作为定时器的输入。SPIN0280含有微控制器时钟输出(MCO)功能,允许时钟输出到外部 MCO 引脚上,可以很便捷的输出HSI内部时钟信号到引脚上,配置外部时钟HSE为MCU的系统时钟,使用Timer3对引脚上的HSI信号进行捕获,以实现内部HSI和外部HSE交叉检测的功能。

微控制器时钟输出(MCO)

微控制器时钟输出(MCO)允许时钟输出到外部 MCO引脚上。相应 GPIO端口的配置寄存器必须被配置为复用输出功能。可以选择以下五个时钟信号中的一个作为 MCO输出时钟:

1.png

MCO 与时钟源对应关系

微控制器时钟输出(MCO)配置为在PA8引脚上输出,此时PA8引脚需配置为AF0复用模式。

2.png

TIM3 通用定时器

由一个16位可实时编程预分频器和一个16位计数方向可调的自动装载计数器组成,可以为用户提供便捷的计数定时功能,计数器时钟由预分频器分频得到。

TIM3具有多种用途:输入功能(测量输入信号的脉冲宽度、频率,PWM输入等),输出功能(PWM输出、单脉冲模式输出等)。

本次主要使用TIM3的输入捕获功能,输入捕获部分包括数字滤波器、多路复用、预分频器等,结构如下:

3.png

输入捕获模式下,当检测到信号ICx上的有效边沿后,计数器的当前值被锁存到对应的影子寄存器上,再复制到对应的捕获比较寄存器中。当开启了中断或DMA使能,发生捕获事件时,将产生相应的中断或DMA请求。发生捕获事件时,会将状态寄存器(TIM3_SR)中的捕获标志位 CCxIF 置 1,通过配置 CCxIF=0或读取TIM3_CCRx中的数据,清除CCxIF标志位。当CCxIF未被清零时,发生输入捕获事件,重复捕获标志位CCxOF将会被置1,通过配置CCxOF=0,可以清除CCxOF标志位。

SPIN0280的通用定时器TIM3有4路输入捕获通道,本文采用TIM3_CH2对HSI进行捕获。

4.png

SPIN0280 Timer3捕获内部HSI时钟具体步骤

1. 使用外部HSE时钟(8M)并倍频到96M作为系统时钟

2. TIM3_CH2的引脚配置,配置为PA7的AF1复用功能

3. TIM3挂载在APB1上,使能TIM3时钟

4. 配置TIM3,计数器清空,由低向高计数,上升沿触发,时钟不分频

5. 配置MCO输出在PA8引脚上,配置PA8为AF0复用功能,HSI信号128分频输出

6. 开启TIM3的时钟中断,并配置NVIC和编写中断函数

7. 开启Timer3外设

示例代码如下:

5.png

6.png

7.png

8.png

示例输出结果:

9.png

10.png

与实际硬件测试的结果相符。

来源:灵动MM32MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 9

资料链接如下:

BD网盘链接:

https://pan.baidu.com/s/1IsFqi-bdPQcilu71JMrsVA 

提取码:n99y

1. DS1302是一款集成了实时时钟(RTC)功能的芯片。RTC是一种能够精确测量和跟踪时间的电子设备,可以提供准确的日期和时间信息。DS1302实时时钟芯片由Maxim Integrated(美信半导体)生产,具有以下主要特点:

①时钟精度:DS1302采用32.768kHz的晶体振荡器来提供基准时钟信号。它具有较高的时钟精度,使得它可以提供准确的时间信息,每月的时间偏差非常小。

②时钟和日历功能:DS1302可以跟踪秒、分钟、小时、日期、月份和年份。它提供了完整的时钟和日历功能,可以准确地记录时间和日期。

③低功耗设计:DS1302芯片采用了低功耗设计,因此在电池供电时可以提供长时间的运行时间。

④数据保持功能:DS1302具有数据保持功能,使得即使在电源断电的情况下,时钟和日历数据仍然可以得到保持,确保数据的可靠性和连续性。

⑤简化的接口:DS1302通过串行接口(2线或3线),与微控制器或其他外部设备进行通信。这种简化的接口使得它更容易与其他系统集成,实现实时时钟功能。

DS1302实时时钟芯片被广泛应用于各种应用领域,如电子设备、仪器仪表、自动化系统、安防系统等需要准确时间信息的场合。它的易用性、低功耗以及稳定的性能使得它成为常用的实时时钟解决方案之一。

2.本实验用到了CW32 Cortex-M实训套件实验箱、DS1302实时时钟模块及Keil5开发环境。

1.png

CW32 Cortex-M实训套件

2.png

DS1302实时时钟模块实物

3.png

DS1302原理图

3.DS1302具体工作原理可观看视频,或参考以下链接中的文章

https://blog.csdn.net/u013184273/article/details/78843881

4.核心代码

/*
用TFT屏幕显示年、月、日、星期、时、分、秒
显示界面如下:
----------------
DS1302 Real Time 

Year :xxxx
Month:xx
Day  :xx
Week :xx
xx:xx:xx

----------------
*/

#include "main.h"
#include "config.h"
#include "Ds1302.h"        //DS1302底层驱动代码
#include "Lcd_Driver.h"
#include "LCD_calculate.h"

char strings[2];         //储存要显示的数字

int main()
{  
    u8 value = 0;   
    
    RCC_Configuration(); //配置时钟   
    
    Lcd_Init();  
    Lcd_Clear(GRAY0);   
    
    Ds1302_GPIO_Init();  //GPIO配置 
    
    //  Ds1302_Config(23,7,7,5,14,58,55); //初始化DS1302,2023年7月7日星期五23点59分55秒   

    Gui_DrawFont_GBK16(0,0,WHITE,RED,"DS1302 Real Time"); //显示界面  
    Gui_DrawFont_GBK16(0,32,WHITE,RED,"Year :20  ");  
    Gui_DrawFont_GBK16(0,48,WHITE,RED,"Month:    ");  
    Gui_DrawFont_GBK16(0,64,WHITE,RED,"Day  :    ");  
    Gui_DrawFont_GBK16(0,80,WHITE,RED,"Week :    ");  
    Gui_DrawFont_GBK16(0,96,WHITE,RED,"  :  :    ");   

    while(1)  
    {        
        Ds1302_GetHour(&value);                  //小时    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(0,96,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(8,96,WHITE,RED,strings);     
    
        Ds1302_GetMinite(&value);                //分钟    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(24,96,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(32,96,WHITE,RED,strings);     
        
        Ds1302_GetSecond(&value);                //秒钟    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(48,96,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(56,96,WHITE,RED,strings);       
    
        Ds1302_GetDay(&value);                  //星期    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(40+8,80,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(48+8,80,WHITE,RED,strings);     
    
        Ds1302_GetDate(&value);                 //日期    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(32+16,64,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(40+16,64,WHITE,RED,strings);    
       
        Ds1302_GetMonth(&value);                //月份    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(48,48,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(55,48,WHITE,RED,strings);     
    
        Ds1302_GetYear(&value);                 //年份    
        sprintf(strings,"%d",value/10);    
        Gui_DrawFont_GBK16(56+8,32,WHITE,RED,strings);    
        sprintf(strings,"%d",value%10);    
        Gui_DrawFont_GBK16(64+8,32,WHITE,RED,strings);  
    }
}

5.实验最终现象

把程序下载进DS1302模块,DS1302经过程序初始化后将开始计时。

4.png

实验箱接线 

5.png

显示时间   

 6.png

断电30s重新上电  

来源:CW32生态社区

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 6

简介

时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文档就着重针对各系列的情况来详细介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。

以下介绍时钟配置的方法主要分两种:

1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配置。

2、采用时钟工具来配置并生成相应的源码文件。

时钟树

在进行时钟配置之前,应充分了解对应芯片的时钟树结构,这样在进行时钟配置时才会游刃有余。对于系统时钟频率及路径的配置我们需要关注时钟源、倍频及系统时钟部分。类似如下图:

1.png图1. 时钟框图

可由图中得到以下几个关键信息:

1) SCLKSEL:系统时钟可以由HEXT、PLLCLK、HICK三大时钟源提供。

2) HEXT:HEXT是外部高速时钟,其可以外接范围是4~25 MHz的晶振或时钟源。

3) HICK:HICK RC是内部高速振荡器,频率为48 MHz。HICK时钟由内部振荡器给出,但在初始情况下由HICKDIV控制并默认6分频后为8 MHz,亦可配置为不分频,保持48 MHz的频率。

4) PLLCLK:PLL时钟=PLL输入时钟*PLL倍频系数。

5) PLL输入时钟:PLL的输入时钟由PLLRCS及PLLHEXTDIV共同决定,其细分可分为三个来源:HICK 4MHz、HEXT和HEXTDIV,HEXTDIV由HEXT时钟2分频。

代码配置解析

以下将以库函数接口为核心来对时钟配置流程和方法进行说明。

函数接口

各系列产品对应提供的BSP中对硬件的时钟设置部分已封装好接口函数以供调用,以下罗列出时钟配置常用的函数接口,各函数的具体参数及返回值类型等请参考at32f425_crm.c/.h文件。

2.png

时钟配置流程

按常规应用来讲解时钟配置流程,其内容可大致分为如下步骤:

3.png

图2. 时钟配置流程图

复位(CRM Reset)

首先按规范流程应复位CRM配置参数,其主要是将系统时钟切换到HICK,其余的系统时钟配置寄存器写入默认值,待后续进行新配置参数的写入。函数调用的代码实现如下:

4.png

Flash等待周期(Set Flash Wait Cycle)

AT32F425片上采用的是嵌入式Flash,当运行在不同的主频下时需对应设定Flash等待周期。flash等待周期与运行主频关系如下:

5.png

函数调用的代码实现如下:

6.png

时钟源配置(Clock Source Configuration)

与系统时钟相关的高速时钟源主要包括HEXT和HICK,PLL也是使用以上时钟源来进行倍频。需要在配置使能PLL前将所使用的PLL参考时钟源开启并等待其稳定。

  • HEXT

外部高速时钟如采用外接有源时钟的方式时,可开启旁路模式来进行使用,采用晶振时,不能开启旁路模式,旁路模式应在外部高速时钟源使能前进行设定,其默认情况为关闭。旁路模式使能代码实现如下:

7.png

使能HEXT时钟源并等待HEXT时钟稳定,代码实现如下:

8.png

  • HICK

内部高速时钟是由芯片内部振荡器提供,使能HICK时钟源并等待HICK时钟稳定,代码实现如下:

9.png

PLL配置(PLL Configuration)

PLL配置主要包括:PLL时钟源、PLL倍频系数、PLL倍频频率范围等的设置。倍频时钟公式为:PLLCLK=PLL输入时钟*PLL倍频系数。

  • PLL时钟源

PLL时钟源细分有三个来源:1、HICK(4 MHz),2、HEXT,3、HEXT分频时钟,PLL时钟源应在PLL配置使能前开启并等待稳定。以上PLL时钟源在crm_pll_config函数中对应的参数定义如下:

10.png

当选择PLL时钟源为CRM_PLL_SOURCE_HEXT_DIV时,HEXT的分频系数默认为2分频。

  • PLL倍频系数

倍频系数为2~64倍可选,但应该注意最高主频限制,以此按实际情况来合适选择倍频系数,如8倍频使用参数CRM_PLL_MULT_8。

当PLL参数设置完成后,即可开启PLL并等待PLL稳定。示例:外部时钟晶振8 MHz,采用HEXT 2分频时钟作为PLL时钟源,PLLCLK倍频到96 MHz的代码实现如下:

11.png

总线分频(Set Bus Frequency Division)

总线分频包含SCLK到AHBCLK分频、AHBCLK到APB1CLK分频、AHBCLK到APB2CLK分频。AHB总线1分频、APB1/APB2总线1分频的代码实现如下:

12.png

切换系统时钟(Switch System Clock)

系统时钟来源主要有三个:HICK、HEXT、PLLCLK。在切换系统时钟到如上时钟源时应提前确保对应时钟源已稳定。

  • HICK系统时钟

内部高速时钟在系统复位重新运行时默认作为系统时钟,后期代码进行设定时,可有两种频率值来进行设定(8 MHz和48 MHz)。如图1所述HICK默认情况下用的是8 MHz,可配置为48 MHz。

HICK 8 MHz用作系统时钟的代码实现如下:

13.png

HICK 48 MHz用作系统时钟的代码实现如下:

14.png

  • HEXT系统时钟

外部高速时钟用作系统时钟时,其系统时钟频率以实际使用的外部时钟频率为准,范围为4~25 MHz。HEXT用作系统时钟的代码实现如下:

15.png

  • PLLCLK系统时钟

PLLCLK用作系统时钟时,其系统时钟频率以实际的PLL倍频结果为准。其最高频率应满足芯片规格为基础。PLLCLK用作系统时钟的代码实现如下:

16.png

更新核心频率(Update Core Frequency)

提供的BSP中,其代码框架内保留了一个表示系统核心频率的参数值system_core_clock,其保存的是CPU核心的运行频率值,应该在每次系统时钟配置完成后来进行更新。为的是在整个代码框架下,各外设驱动的频率配置能很快获取到当前核心运行频率值并使用。代码实现如下:

17.png

时钟配置示例

以下将以完整的时钟配置流程来进行说明,示例:由8 MHz外部时钟晶振作为时钟源,其2分频路径经PLL倍频到96 MHz并用做系统时钟,AHB采用1分频,APB1/APB2采用1分频。函数system_clock_config代码实现如下:

18.png

时钟工具

时钟配置工具是雅特力科技为方便对AT32系列MCU进行时钟配置而开发的一个图形化配置工具,其主旨是使用户清晰了解时钟路径和配置出期望的时钟频率并生成源码文件。

环境要求

  • 软件要求

需要Windows7及以上操作系统支持。

安装

  • 软件安装

本软件不需要安装,只需直接运行可执行程序AT32_New_Clock_Configuration.exe。

功能介绍

本章节将介绍此工具的基本操作,其主要的启动界面和配置界面如下所示

19.png

图3. 启动界面

20.png

图4. 配置界面

菜单栏

菜单栏内容如图所示:

21.png

图5. 菜单栏

  • “项目”(Project)菜单:

新建:新建时钟配置项目打开:打开已存在的配置项目保存:保存已打开的配置项目

  • “语言”(Language)菜单:

English:选择English作为显示语言简体中文:选择简体中文作为显示语言

  • “生成代码”(General code)菜单:

当在对应型号的操作配置界面将所期望的时钟路径和时钟频率配置完成之后,可点击“生成代码”菜单来选择源码文件的存储路径并生成相应的源码文件。

  • “帮助”(Help)菜单:

新版本下载:联网进行新版本下载版本:查看当前版本

新建配置项目

双击打开时钟配置工具,可看到图示的启动界面,可点击“项目”菜单-->“新建”,进行配置项目的新建,在新建配置项目的过程中需要对芯片的系列所属进行选择,操作方法如下图所示

22.png

图6. MCU选择界面

MCU系列的选择,可点击下拉框来进行选择,当选择好MCU后点击“确定”可进入到时钟配置界面。

配置界面的使用

配置界面主要用来进行时钟路径及参数的配置,以下的介绍将以AT32F425系列作为示例来展开进行,其余系列的配置方法与此类似。

整个配置界面主要可以分为四个大块,如下图所示

23.png

图7. 配置界面框架

1. 标题部分:用于展示当前配置项目所选择的MCU系列。

2. 配置部分:用于对时钟路径和时钟参数进行选择和配置,以达到期望的应用需求。

3. 输出部分:用于时钟输出(CLKOUT)的配置。

4. 在SCLK栏也可在选中PLL为系统时钟时作为输入框,可输入期望的系统时钟频率来反向自动配置出倍频参数。

5. 结果部分:用于显示当前外设所使用的时钟频率及总线上的外设。

接下来就着重介绍一下配置部分的使用。配置部分的流程界面是对应着MCU时钟树来进行的,各系列MCU的此部分可能存在着差异,但使用方式大同小异。时钟路径的配置可按流程对各开关进行点选来进行选择,配置部分如下图所示,将逐个流程点的功能及其注意事项进行介绍。

24.png

图8. 时钟配置框

1. ertc使能:ertc时钟代码配置的使能下拉框。

2. ertcsel:点选框,ertc时钟源选择。当ertc使能开启后,此点选框可配置。

3. lext bypass:外部低速时钟的旁路使能。

4. hext:此为输入框,8 MHz为所采用外部时钟源的默认频率,用户可根据实际使用的外部时钟源频率进行修改。(注:此8 MHz被修改为其他频率值时,对应的BSP中demo目录下的inc/at32f415_conf.h文件内的HEXT_VALUE宏定义也应该一致修改,也可以采用工具生成的at32f415_conf.h文件来进行使用)。

5. hext bypass:高速外部时钟的旁路使能。

6. pllhextdiv:点选框,当HEXT作为PLL时钟源时,可配置输入频率为HEXT分频或HEXT不分频。

7. pllrcs:点选框,可配置PLL时钟源为HEXT或HICK。

8. pll_mode:下拉框,可选择PLL的配置模式(normal或flexible)

9. 倍频系数:选择normal模式时使用PLL_MULT参数进行倍频,计算公式为:PLLCLK=PLL输入时钟*PLL_MULT,选择flexible模式时使用PLL_MS、PLL_NS和PLL_FR参数进行倍频,计算公式为:PLLCLK=PLL输入时钟/PLL_MS*PLL_NS/PLL_FR。为了用户的使用方便,在选定PLL输入时钟源后,结果部分的sclk框中输入目标时钟并按下键盘“Enter”键,会自动计算一组倍频参数以满足用户期望或相近的时钟频率sclk select:点选框,可配置HEXT、PLL或HICK作为系统时钟。

10. sclk select:点选框,可配置HEXT、PLL或HICK作为系统时钟。

11. sclk频率:当采用正向配置时,此作为系统时钟频率的配置结果显示,当将其用作输入框时,输入期望的频率后点击回车键,会根据此输入值反向计算一组合适的或最接近期望值的PLL配置参数。

12. hick to sclk:点选框,当sclk select选择HICK作为系统时钟时,可配置HICK的8 MHz或48MHz到系统时钟(注:当选择48 MHz HICK到系统时钟后,CLKOUT输出HICK时的频率也为48 MHz)。13. usbdiv:下拉框。当PLL时钟被选作为USB的时钟来源时,此处配置PLL时钟到USB时钟的分频系数。

14. USB使能:USB时钟代码配置的使能下拉框。

15. USB时钟频率的显示。此显示栏会实时计算USB时钟的频率并显示,如果配置出来的USB时钟不等于48 MHz时,显示出来的USB时钟频率会标注为红色,而实际应用中没有用到USB时选择disable则不会显示。(注:此部分只针对USB时钟频率的配置,USB外设时钟使能需自行额外打开)

生成代码

当时钟配置完成后,可点击生成代码,然后选择代码生成的路径并确认,最后会在所选目录下生成两个文件夹inc和src,源文件存放在src文件夹下,头文件存放在inc文件夹下。这些文件可结合到BSP_V2.x.x内的工程来进行使用。可以采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)将原BSP demo中的对应文件替换,在main函数中进行system_clock_config函数调用即可。

注意事项

外部时钟源(HEXT)修改

因本文档所示例的demo和配置工具都默认采用的8 MHz外部时钟频率,当实际硬件使用的外部时钟源是非8 MHz频率时需注意以下几点。

  • 代码修改

1、以实际的外部时钟频率按文中时钟配置流程章节所描述的时钟配置流程及方法来编写相应的代码,配置出期望的时钟配置及时钟路径。

2、修改对应demo工程中at32f4xx_conf.h文件的HEXT_VALUE值,以实际使用的外部时钟源频率值来进行修改。如实际外部高速时钟使用12.288 MHz的晶振或时钟源时,at32f4xx_conf.h文件应修改如下:

25.png

  • 工具修改

1、在时钟配置工具中的HEXT输入框内填入外部时钟源实际频率值并按“Enter”键确认。

2、配置好所需的时钟路径及时钟频率,生成代码。采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/ at32f4xx_conf.h)将原BSP demo中的对应文件替换或取其中函数内容进行替换,在main函数中进行system_clock_config函数调用即可。

工具使用

在使用本时钟配置工具时需注意:

1. 此工具生成的时钟配置源码文件需结合雅特力科技提供的BSP_V2.x.x进行使用。

2. 不同系列所生成的时钟配置源码文件不能型号混用,只能在相对应的工程项目中进行调用。

3. 配置工具中各输入框参数修改后,请以“Enter”键结束。

PS. 案例介绍可点击此处查看

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 73

页面

订阅 RSS - 时钟