tag 标签: 时钟系统

相关博文
  • 热度 4
    2022-4-1 10:43
    1740 次阅读|
    0 个评论
    作为智能电网的的基本数据采集设备,智能电表除了必须的采集、计量和传输功能外,还因该具有双向多种费率计量、用户端控制、多种数据传输模式的双向数据通信、防窃电等智能化功能。这就要求核心器件——MCU具有LCD接口、RTC实时时钟、各类通信等外设,如RS485、PLC、无线模块等接口,具有良好的性价比和超低功耗。 由于特殊工作模式和超低功耗要求,智能电表MCU属于一种专用芯片。以下以FM3318为例,说明电表类MCU的实用方法。 1. 性能特点 电表MCU电源范围2.0~5.5V,工作温度-40°C~+85°C,具有低电压检测报警功能,其特殊性主要体现在时钟和模数转换方面。 (1)时钟系统 FM3318带有两路内部时钟,高速时钟RCHF工作电流典型值为70μA,最大值为100μA,高速振荡频率最小值为8MHz,最大值为32MHz。低速时钟RCLF频率125kHz,工作电流为5μA。 FM3318支持两路外部晶体振荡器,高速外部振荡频率XTHF采用外接的1-12MHz石英晶体作为时钟源,振荡频率最小为1MHz,最大为12MHz,工作电流为750-2000μA。 FM3318 MCU的6种工作模式 低速外部振荡频率XTLF由外接32768Hz石英晶体产生。为降低智能电表的系统功耗,该晶振提供4种工作模式,工作电流分别为: 弱振:0.8μA 次弱振:1.6μA 次强振:4μA 强振:10μA 由于如此苛刻的工作模式和超低功耗要求,FM3318 MCU采用了由日本精工专门定制的32768Hz石英晶体作为时钟源。 PLL方面,FM3318 MCU的输入时钟频率为32kHz,输出时钟频率典型值为16MHz,最大值24MHz,最小值为8MHz,锁定时间2ms,抖动峰峰值为500ps。 (2)ADC MCU带有高分辨率ADC,典型值为11bits,DNL差分非线性度为+-1LSB,INL积分分线性度为+-2,失调误差典型值+-1,最大值+-3,转换时间不超过2048个时钟,转换速率为500Sps。 2. 使用事项 为了满足智能电表的低功耗要求,FM3318 MCU采用了由日本精工专门定制的32768Hz石英晶体作为时钟源。安排生产时,必须注意以下事项: (1)采用FM3318 MCU芯片进行生产时,与FM3318匹配的32768Hz晶振必须采用复旦微定制的精工晶体,具体型号为VT-200-F(匹配电容12.5pF,20ppm)。 (2)32768Hz晶振外壳在进行固定时,不得采用点锡方式将外壳与地进行固定,点锡时过高的温度会导致32768Hz晶体的永久性损伤。 =25mil。 (4)若采用超声波工艺对电表模块进行清洗时,32768Hz晶振不得焊接,必须在超声波清洗工艺完成以后,再焊接上32768Hz晶振,否则超声波会导致32768Hz晶体的永久性损伤。 (5)不得采用超声波进行表壳焊接,否则也会导致32768Hz晶体的永久性损伤。另外,如果对引脚进行焊接,温度要控制在300摄氏度以下,加热时间要控制在5秒以内,外壳受热部位温度要控制在150摄氏度以内。
  • 热度 5
    2013-4-7 17:33
    4214 次阅读|
    2 个评论
     上图是 STM32 的时钟树。从树上我们可以看到, STM32 的时钟有两个来源——内部时钟和外部时钟。按时钟频率来分,又分为高速时钟和低速时钟。所以 STM32 的时钟有四个来源——高速外部时钟信号( HSE )、低速外部时钟信号( LSE )、高速内部时钟信号( HSI )和低速内部时钟信号( LSI ),图中分别用蓝色的 ①~④ 标注。 ①HSE 高速外部时钟:由外部 4~16MHz 的晶体或有源晶振提供,通常采用 8MHz , ST 三合一板上的也是 8MHz 。 ② LSI 低速外部时钟:外部晶体提供,主要是给实时时钟( RTC ),一般为 32.768kHz 。 ③ HSI 高速内部时钟:由内部 RC 振荡器产生的 8MHz 时钟,但不够稳定。 ④ LSI 低速内部时钟:内部 RC 振荡器产生的供给 RTC 的时钟,频率在 30kHz~60kHz 之间,通常约 40kHz 。 时钟在 STM32 内部最终是供给四大块,图中用红色椭圆圈出—— USB 的 48MHz 时钟、系统时钟 SYSCLK 、实时时钟模块 RTC 、独立看门狗的时钟 IWDGCLK 。其中最主要的,也是最大头是系统时钟 SYSCLK ,它可以是内部或外部高速时钟直接接过来,也可以内、外部高速时钟是 PLL 倍频后提供的,系统时钟再分别供给 Cortex 内核、 SDIO 、 AHB 总线、 DMA 、 APB1 、 APB2 等。。 我们通常是采用外部 8MHz 高速时钟( HSE ),所以着重说 HSE 。我们以前面的 GPIO 上的时钟为例,由 ST 的 Datasheet 可知, GPIO 是在 APB2 高速外设总线上的,图中绿色的线就是时钟的流程,我们一步步地来看。 8MHz 外部晶体(或晶振)输入后,先经过一个开关 PLLXTPRE ( HSE divider for PLL entry ),此开关决定对 HSE 进行 2 分频再输入到 PLL 或直接到 PLL 。我们选择不分频。 这样时钟又到了第二个开关 PLLSRC ( PLL entry clock source ),此开关决定 PLL 的时钟来源,是内部高速时钟二分频的时钟还是 PLLXTPRE 的输出。我们选择后者,这时的时钟在进入 PLL 前还是 8MHz ,因为在 PLLXTPRE 我们没有分频。 到了 PLL 倍频器,由 PLLMUL 决定倍频系统数,可以选择 2~16 倍频输出,但记住, PLL 输出频率最高 72MHz ,所以我们选择 9 倍频,这样 PLL 输出就是最高 72MHz 的 PLLCLK 时钟了。这时的 PLLCLK 为 USB 提供时钟。 开关 SW 来决定 SYSCLK 的时钟来源,前面已经提到,这里我们由 PLLCLK 做为 SYSCLK 的来源,这样系统时钟 SYSCLK 就是 72MHz 了。 在供给外设前,先经过 AHB 预分频,我们选择不分频;在供给 GPIO 前,还要再经过 APB2 预分频,因为 APB2 为高速外设,所以我们选择不分频,这样 GPIO 的时钟就是 72MHz 了。注意,低速外设 APB1 最高频率为 36MHz ,所以在使用 APB1 的外设时,要注意设置好分频系统。还要注意,要使用外设,先要对外设时钟进行使能,见图中黄色云形框。这是因为 STM32 采用了低功耗的设计,对不使用的外设,其时钟不使能,以达到降低功耗的效果。 时钟的设置在程序中是怎么来实现的呢?这里我们以前面 GPIO 的程序来一步步分析。当然,前面的程序是基于 ST 库的,其实也就是分析 ST 的官方库了。 我们看到 main ()函数中的第一行代码是调用了一个函数: SystemInit(); 这个函数是在 system_stm32f10x.c 中: void SystemInit (void) {    /* Reset the RCC clock configuration to the default reset state(for debug purpose) */   /* Set HSION bit */   RCC-CR |= (uint32_t)0x00000001;     /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ #ifndef STM32F10X_CL   RCC-CFGR = (uint32_t)0xF8FF0000; #else   RCC-CFGR = (uint32_t)0xF0FF0000; #endif /* STM32F10X_CL */        /* Reset HSEON, CSSON and PLLON bits */   RCC-CR = (uint32_t)0xFEF6FFFF;     /* Reset HSEBYP bit */   RCC-CR = (uint32_t)0xFFFBFFFF;      /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */   RCC-CFGR = (uint32_t)0xFF80FFFF;   #ifdef STM32F10X_CL    /* Reset PLL2ON and PLL3ON bits */   RCC-CR = (uint32_t)0xEBFFFFFF;      /* Disable all interrupts and clear pending bits  */   RCC-CIR = 0x00FF0000;     /* Reset CFGR2 register */   RCC-CFGR2 = 0x00000000; #elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)   /* Disable all interrupts and clear pending bits  */   RCC-CIR = 0x009F0000;      /* Reset CFGR2 register */   RCC-CFGR2 = 0x00000000;      #else    /* Disable all interrupts and clear pending bits  */   RCC-CIR = 0x009F0000; #endif /* STM32F10X_CL */     #if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)   #ifdef DATA_IN_ExtSRAM     SystemInit_ExtMemCtl();   #endif /* DATA_IN_ExtSRAM */ #endif      /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */   /* Configure the Flash Latency cycles and enable prefetch buffer */   SetSysClock();   #ifdef VECT_TAB_SRAM   SCB-VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ #else   SCB-VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ #endif }   我们可以看到,程序前面一系统 Reset 或 Disable ,最后调用了(红色标记出来) SetSysClock();   SetSysClock() 函数也位于 system_stm32f10x.c 源文件中: static void SetSysClock(void) { #ifdef SYSCLK_FREQ_HSE   SetSysClockToHSE(); #elif defined SYSCLK_FREQ_24MHz   SetSysClockTo24(); #elif defined SYSCLK_FREQ_36MHz   SetSysClockTo36(); #elif defined SYSCLK_FREQ_48MHz   SetSysClockTo48(); #elif defined SYSCLK_FREQ_56MHz   SetSysClockTo56();  #elif defined SYSCLK_FREQ_72MHz   SetSysClockTo72(); #endif     /* If none of the define above is enabled, the HSI is used as System clock     source (default after reset) */ }   因为我们使用的是 72MHz 时钟,那肯定我们定义了宏 SYSCLK_FREQ_72MHz ,所以才调用的函数 SetSysClockTo72() 。我们继续跟踪,会发现在源文件开头,我们的确定义了: #define SYSCLK_FREQ_72MHz  72000000 在 SetSysClockTo72() 函数中详细地对 72MHz 进行设置,这里就不一步步分析。 前面已经提到,在使用外设时,要使能相应的外设时钟,例如,在使用 GPIOB 进行流水灯实验时,程序中调用了下面的库函数,对外设时钟进行设置: RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);   另外, STM32 还可以把时钟输出,如图左下角的咖啡色方框里面,可以由 MCO 决定, PLL 时钟二分频或 HIS 或 HSE 或系统时钟作为主时钟输出。
  • 热度 18
    2012-12-9 21:42
    1313 次阅读|
    0 个评论
    1.  C280X 系统内部有两个片上得振荡器 10Mhz  可以分别 为看门狗,CPU ,CPU定时器2      提供时钟,可以分别配置。 片上得时钟在使用前需要校正片内好像自带校正功能(出厂      的时候会把校正的值放到ROM中),需要自己调用。还可以使用外部晶震和外部振荡器   (有源晶震)。     片内时钟的校正值被存储在otp中,在系统启动的时候 bootroom  会把这个值加载到对应寄存器中。可以调用下面代码。 # define Device_cal (void(*)(void))0x3D7C80 (*Device_cal)();   如果是从BOOTROOM引导启动的话 就不用自己写代码,否则需要自己添加上面的代码  可以选择不同的PIN 作为XCLKIN   同时使分频后的SYSCLKOUT  在XCLKOUT 脚输出    选择好时钟源后,直接经过分频给CPU提供时钟CLKIN ,或经过PLL ,在经过分频给CPU 好像这个时钟就是SYSCLKOUT ,可以在XCLKOUT输出。  
  • 热度 20
    2012-11-28 18:22
    2419 次阅读|
    2 个评论
    上文提到动态偏移对使用了去偏移(DeSkew)技术的源同步时序系统影响更大,这里我们重点来讨论下这些动态偏移。 首先就是同步开关噪声(Simultaneous Switch Noise,简称SSN),是指当器件处于开关状态时,随时间变化的电流(di/dt)经过回流途径上的电感时,形成的交流压降,也称为Δi噪声。而同步开关输出(SSO,即Simultaneous Switch Output)是其中的主要因素,开关速度越快,瞬间电流变化越显著,相应的SSN就越严重。 计算公式为:VSSN=N*L*(dI/dt), N是同时开关的Buffer数目,L是回流路径上的电感,计算得到的VSSN就是同步开关噪声。公式的原理看起来很简单,实际上SSN的仿真一直是难点,不管是电路建模,还是IBIS模型对于SSN仿真的支持,都存在不少问题。实际上,这也是制约DDR3仿真精度的主要因素之一。 从图一能看到,当一个单独的DQ信号在切换时,SSN噪声大约在28MV左右,当一组DQ和DM同时在切换时,能产生大约170MV的SSN噪声。由此带来的对时序的影响高达73PS。   图一 DQ信号的同步开关噪声(仿真结果引用自Synopsys) 源同步总线如DDR3,同步开关切换是不可避免的,那么我们怎么来减少SSN的影响呢?从SSN产生的机理可以看出,当N固定,dI也不可控制的时候,我们需要减少L。电源地回路的电感和PCB设计密切相关。 首先,我们要减小滤波电容设计的安装电感,一博科技的仿真结果标明,一个良好的电容Fan out设计,可以有效减小安装电感,如图二所示:几种方式效果排名  (2/6)- 1 – (3 / 5 )– (4/ 8/7)。 图二 电容设计Fan out比较 其次,在布线和打孔的排列上,也要考虑信号以及电源地回路的电感。如图三所示,参考DDR颗粒的电源地管脚和信号管脚的比例关系以及相对位置关系,并在PCB布线打孔的时候保持这些比例关系   图三 电源地管脚和信号管脚的比例关系以及相对位置关系 总结来说,就是要关注源同步总线系统尤其是DDR3以及更高速率的总线系统的电源地设计。电源地设计要点包括良好的滤波电容布局布线;细心考虑电源地以及信号的回流路径;准确的Vref;足够功率支持的VTT等。 串扰(Crosstalk)也是非常重要的一个动态偏移。考虑串扰,就必须考虑信号传播的奇偶模式,如图四所示,在不同模式下,信号间的电场与磁场分布是不同的。     图四 信号传播的奇偶模式 这种电场与磁场分布的不同也会引起传输延时的变化,如果是带状线,由于导线上下的介质比较均匀(有时候Core与PP也会有轻微的介电常数和损耗角差别),所以不同信号模式下的传输延时基本一致。但是微带线由于上下结构的不对称性,不同信号模式下的传输延时差别很大。仿真表明,如果是这样的表面微带的结构,线宽4mil,和其他信号线的间距为8mil ,到平面层的距离是4mil,绿油整体厚度为2.5mil,5英寸的布线长度,在不同传输模式下会带来极限大约82ps的传输延时差别。   图五 不同传输模式下微带线的传输延时差别 虽然图五是极限情况下的例子,实际工作中基本上不会出现这样的最恶劣情况。但是从此也能看出表面微带下,不同传输模式带来的延时差别已经不可忽视。在设计上,我们可以尽量拉大线间距,既可以减少串扰,也能同时减弱这种传输延时的差别,适当的增加阻焊层的厚度也是一个办法。当然,在层数足够的情况下,使用内层带状线布线也可以避免这样的传输延时变化。 其他诸如ISI的影响,虽然也是动态偏移,但是更多是在仿真的时候予以考虑,这里就不再详细讨论。适当的OTD选择,也对时序影响很大,这部分内容可以参考研讨会的相关材料(见 http://www.edadoc.com/cn/jswz/show_337.html ) 总结一下,DDR3等高速源同步总线的设计,除了常规考虑的分组等长之外,还需要注意以下问题: 1、    电源地设计带来的SSN问题,需要仔细考虑滤波电容布局布线,电源地以及信号的回流路径,关注Vref和VTT的设计 2、    串扰(Crosstalk)的影响以及奇偶模式下微带线传输延时的差别,尽量拉大线间距 3、    上一条引伸开来,就是关注等长后面的等时,很多因素都会导致做到了等长,其实没有等时,比如不同层传输延时的差别,垂直方向过孔的有效长度带来延时差别(又叫Z Delay) 4、    合适的ODT选择     高速PCB设计系列文章: 高速PCB设计之一 何为高速PCB设计 高速PCB设计 - 高速会带来什么问题 高速PCB设计 时序问题(一)共同时钟系统 高速PCB设计 时序问题(二)内同步时钟系统 高速PCB设计 时序问题(二)共同时钟系统时序案例 高速PCB设计 时序问题(三)源同步时钟系统 (上篇) 高速PCB设计 时序问题(三)源同步时钟系统 (下篇) 高速PCB设计 各种高速问题归类
  • 热度 26
    2012-11-28 18:20
    2953 次阅读|
    2 个评论
    经过之前对共同时钟系统和内同步时钟系统的总结,可以发现建立时间的关系式和时钟频率, 也就是Tcycle有关,同时由于工艺以及其他一些因素,Tco很难做到很小。随着频率的提升,共同时钟系统很快就遇到瓶颈,时序余量无法满足,在这种形 势下,源同步时钟系统就应运而生,并很快取代共同时钟系统占领了市场需求。直到今天,随着DDR4规范的发布以及相关产品的蓄势待发,源同步时钟系统的市 场还在继续发展。   源同步时钟的典型案例就是DDR了,由于时钟选通信号和数据同步发送,增加了时序窗口,提升了总线频率。现在DDR3的最高速率已经突破1600MHz。而DDR4技术也已经成熟,随着9月底JEDEC相关规范的推出,预计2014年左右就全面取代DDR3的地位了。   源同步的原理和主要关注点如图一所示,在采用了时钟和数据发自同一源的方式,使得时钟和 数据信号相关,他们具备相同的工艺条件,Tco带来的影响也相同并互相抵消。同时由于数据和时钟在板上有同样的布线结构,在实行了等长控制之后,他们之间 的Skew也比较容易控制,所以源同步总线能在更高的速率下运行。   图一 源同步设计   源同步系统的时序计算公式如图二所示,其实在源同步系统设计时,已经很少人会采用静态时序计算的方式来解决问题了,所以这个公式只是一个参考。更多的设计考虑因素参考图一的描述,由于采用了源同步设计,速率提升很快,DDR4已经能达到3.2G的设计速率,这时候Tcycle只有300多PS。在这么小的时钟周期内,我们要考虑PI带来的电源完整性影响,信号之间的串扰,ISI码间干扰,封装、线路板上的工艺能力偏差等因素带来的影响。     图二 源同步系统的时序计算公式   一博科技在今年三月份的研讨会上明确提出DDR3设计、仿真需要关注的一些方面,总结如图三所示,从这个总结可以看出,走线之间的等长只是一个基本要求,而带来影响更大,更需要关注的是等长之外的要求。关于ODT,容性负载补偿等技术可以参考研讨会的相关材料(见 http://www.edadoc.com/cn/jswz/show_337.html ),这里不做更多讨论。 图三 DDR3时序举例以及设计仿真总结   随着频率的提升,源同步总线的时序余量也变得越来越紧张,设计难度也随着提升。这时候,DDR3等源同步总线也退出各种新的技术来解决时序问题。比如读写均衡(read write leveling)和去偏移(DeSkew)就是这样的一些新技术。   我们可以把影响时序的因素分为静态偏移(SKEW)和动态偏移。静态偏移指的是不随信号开关状态以及信号开关数量而变化的时序因素。比如走线不等长带来的时序偏差,印制电路板工艺带来的时序偏差等……这些偏差一旦产生,就相对固定,和信号的变化影响不大。这类偏差的特点就是大部分情况下可以使用Deskew技术来消除,如图四所示,通过采用可变的输入和输出延时来跟踪长度失配和电气去偏移。新一代的FPGA采用更加精细的输入和输出延时分辨率(可以达到50PS步进)来进行更精细的DQS间去偏移(独立于均衡功能)。     图四 去偏移(DeSkew)技术       这时候,动态的偏移对时序系统带来影响会更严重,这些动态偏移有:串扰(Crosstalk),码间干扰(ISI),同步开关噪声(SSO)等。这些偏移基本上很难被Deskew捕获并解决,因为偏移会随着信号每一个比特(Bit)的变化而不同。在下篇我们重点来讨论下动态偏移,以及如何降低他们带来的影响。     高速PCB设计系列文章: 高速PCB设计之一 何为高速PCB设计 高速PCB设计 - 高速会带来什么问题 高速PCB设计 时序问题(一)共同时钟系统 高速PCB设计 时序问题(二)内同步时钟系统 高速PCB设计 时序问题(二)共同时钟系统时序案例 高速PCB设计 时序问题(三)源同步时钟系统 (上篇) 高速PCB设计 时序问题(三)源同步时钟系统 (下篇) 高速PCB设计 各种高速问题归类  
相关资源
  • 所需E币: 1
    时间: 2023-7-10 15:23
    大小: 8.41MB
    上传者: 张红川
    DAY6-STM32时钟系统.rar
  • 所需E币: 4
    时间: 2022-10-6 09:21
    大小: 326.62KB
    上传者: ZHUANG
    高速公路视频监控下RX-8025实时时钟系统研究与设计
  • 所需E币: 0
    时间: 2022-3-25 13:33
    大小: 68KB
    上传者: 东亚安防
    民用机场航站楼时钟系统工程设计规范Designcodeforclocksystem engineeringofcivilairportterminalbuilding
  • 所需E币: 0
    时间: 2021-3-17 16:57
    大小: 4.84MB
    上传者: Argent
    arm公司设计的内核在电子产品MCU中仍占据主流,其设计的armcortex内核有多个系列,根据产品设计需求选择相应的类型,而Cortex-M系列是面向具有确定性的微控制器应用的成本敏感型解决方案,分享关于Cortex-M3的综合性讲解资料,欢迎下载阅读。
  • 所需E币: 0
    时间: 2021-3-17 16:57
    大小: 4.79MB
    上传者: Argent
    arm公司设计的内核在电子产品MCU中仍占据主流,其设计的armcortex内核有多个系列,根据产品设计需求选择相应的类型,而Cortex-M系列是面向具有确定性的微控制器应用的成本敏感型解决方案,分享关于Cortex-M3的综合性讲解资料,欢迎下载阅读。
  • 所需E币: 0
    时间: 2020-9-10 03:49
    大小: 494.18KB
    上传者: Goodluck2020
    STM32F4_时钟系统例程.rar