写在前面

32.768kHz晶振一般应用于精准计时,比如RTC万年历、蓝牙的同步时钟等都是用的该低速时钟。
以下说明适用:基于TI-RTOS实时操作系统开发的芯片模组

一、检测原理

将时钟脉冲映射到IO口输出,再通过频率计或者示波器等仪器进行检测

二、源码

需要添加路劲:
cc26x0r2$SIMPLELINK_CORE_SDK_INSTALL_DIR$\source\ti\devices\cc26x0r2
cc13x0$SIMPLELINK_CC13X0_SDK_INSTALL_DIR$\source\ti\devices\cc13x0

源码说明

本文源码实现将外部低速晶振的时钟映射到IO0输出
若需要映射到其他IO口,可以修改一下参数:

  1. IOC_O_IOCFG0
  2. GPIO_DIO_0_MASK

比如改成IO2输出

  1. IOC_O_IOCFG2
  2. GPIO_DIO_2_MASK

test32_768kHzClock.c

#include <driverlib/osc.h>
#include <driverlib/aon_ioc.h>
#include <ti/drivers/pin/PINCC26XX.h>
#include "test32_768kHzClock.h"//MeasureStartup()
//Returns the startup time as 65536 * number of 1/2 LF clock cycles elapsed during startup
//To get result in seconds divide this number by 2^32
//Must have these includes:
//#include <driverlib/osc.h>
//#include <driverlib/aon_ioc.h>
//HF clock source should not already be XOSC_HF when function is called (e.g. function can be placed near beginning of main())
//Must initialize I/Os before running this routine: e.g. PIN_init(BoardGpioInitTable);
//This function may not work correctly if compiler optimizations are turned on
uint32_t MeasureStartup()
{uint32_t Count = 0;uint32_t PollCount = 0;uint32_t PrevPollCount=0;uint32_t State = 0;uint32_t PrevState = 0;//Route SCLK_LF to DIO24, with DIO24 configured as input.AONIOC32kHzOutputEnable();HWREG(IOC_BASE+IOC_O_IOCFG0) = 0x20006307;//Enable IOC input, connect DIO 24 to SCLK_LFif (OSCClockSourceGet(OSC_SRC_CLK_HF) != OSC_RCOSC_HF) {OSCClockSourceSet(OSC_SRC_CLK_HF, OSC_RCOSC_HF);while (!OSCHfSourceReady());OSCHfSourceSwitch();}// Set XOSC_LF as SCLK_LF sourceOSCClockSourceSet(OSC_SRC_CLK_LF, OSC_XOSC_LF);//wait forever for SCLK_LF to be sourced from XOSC_LFwhile((HWREG(AUX_DDI0_OSC_BASE+DDI_0_OSC_O_STAT0)&DDI_0_OSC_STAT0_SCLK_LF_SRC_XOSCLF)!=DDI_0_OSC_STAT0_SCLK_LF_SRC_XOSCLF) {};State = HWREG(GPIO_BASE+GPIO_O_DIN31_0)&GPIO_DIO_0_MASK;PrevState=State;while(State != 0 && PrevState !=GPIO_DIO_0_MASK )//Wait for negedge of XOSC_LF{PrevState=State;State = HWREG(GPIO_BASE+GPIO_O_DIN31_0)&GPIO_DIO_0_MASK;}PrevState=0;OSCHF_TurnOnXosc();while((HWREG(AUX_DDI0_OSC_BASE+DDI_0_OSC_O_STAT0)&DDI_0_OSC_STAT0_PENDINGSCLKHFSWITCHING)!=DDI_0_OSC_STAT0_PENDINGSCLKHFSWITCHING){//wait for pending bitState = HWREG(GPIO_BASE+GPIO_O_DIN31_0)&GPIO_DIO_0_MASK;PollCount=PollCount+1;//This counts number of polling cyclesif(State!=PrevState)//This increments on every edge of XOSC_LF{Count=Count+1;//increase the count of detected XOSC_LF edges. This occurs at a rate of 2 x freq of XOSC_LFPrevPollCount=PollCount;PollCount=0;}PrevState=State;}return 65536*Count+(65536*PollCount)/PrevPollCount;//(65536*PollCount)/PrevPollCount is to get the fractional part of XOSC_LF cycles remaining uncounted by Count
}

test32_768kHzClock.h

#ifndef __test32_768kHzClock_H_
#define __test32_768kHzClock_H_
/*** *将低速时钟32.768kHz的时钟映射到IO口输出*可用于测试低速时钟的精度*/
uint32_t MeasureStartup();#endif

TI-RTOS实时操作系统开发之低速时钟32.768kHz晶振检测相关推荐

  1. 32.768kHz晶振

    转自 http://www.elecfans.com/yuanqijian/jingzhen/20180428669532.html 32.768KHZ晶振最初在日本开始它的大量发展,并形成全球之势. ...

  2. 32.768khz晶振在手表中的作用

    手表一直深受大家喜爱,尤其是男士对手表更是情有独钟,因为它代表这个人品位,不仅仅是一个装饰品,而且还可以起到计时器的作用.手表的基础组件时针.分针和秒针,三个指针的走动预示这时间的流逝和新生活的到来, ...

  3. 通过PPM计算MHz晶振频率偏差和32.768KHz晶振计时公式

    PPM是英文Parts Per Million的缩写,表示百万分之几.换句话说:1PPM则代表百万分之一的误差. 举例:若一颗晶振为12.000000MHz,即:12000000Hz 精度为±30pp ...

  4. 32.768KHz晶振的使用心得

    项目需求,使用少量器件搭建一个方波发生电路.找到了一个这样的电路,两个非门和阻容,晶振.图中用两个与非门代替非门. 搭好电路后,发现两个问题: 1. 输出不能发出方波,然后测量发现晶振不能起振.示波器 ...

  5. SYD8811 使用外部32.768Khz晶振作为时钟源

    要使用外部晶振作为时钟源有如下两点要注意: 1.4k中的时钟源配置项要和代码的配置项相同,4K中的时钟源通过studio的protocol界面的"Clock select"功能来配 ...

  6. 【晶振专题】案例:为什么对着STM32低速32.768K晶振哈口气就不起振了?

    本案例发现在一个工装产品上,首批一共做了10几台样机.发现有的样机在开机的时候读取不到RTC,有的样机却可以.读不到RTC是概率性出现的,发生在第一次上电的情况.开始他怀疑是环境问题,会不会和温度有关 ...

  7. 32.768K晶振通过CD4060分频后频率过高

    一. 刚学数电时序逻辑,萌生了个想做电子钟的念头,计数和显示部分还好,就是晶振搞了一会. 32.768K晶振用的CD4060振荡和分频电路图如下: 二. 上电后发现时间过得飞快,用示波器量10脚的波形 ...

  8. stm32F103采用内部晶振8MHz时钟和外部晶振初始化代码

    使用HSE配置系统时钟(stm32F10x 系列 外部晶振一般为4M–25MHz,具体见芯片手册) 首先需要复位RCC寄存器! 使能HSE 判断HSE是否启动成功 使能预取指 设置FLASH等待周期 ...

  9. 手机时钟电路中晶振的工作原理简介

    时钟信号是处理器电路开始工作的基本条件之一,在电路中有着非常重要的作用.当智能手机接上电源之后,电源电路两端就会产生3.7V的电压,这个电压直接为处理器内部的振荡器供电,随即时钟电路开始工作,为处理器 ...

最新文章

  1. vs2012下编码引起的一个神坑
  2. java类加载的表现形式
  3. Python 文件的详细操作
  4. 【学习笔记】求解简单递归式的一般方法
  5. boost::hana::basic_type用法的测试程序
  6. ubuntu升级python_Ubuntu 系统下可以做什么?——拥抱自由和安静
  7. Anaconda各版本安装包存档
  8. 默认适应窗口_PS教程基础之cs6默认快捷键汇总及补充
  9. 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
  10. 系统学习数字图像处理之图像复原与重建
  11. Linux学习笔记6 - 用户和组群账户管理
  12. ActiveMQ专题2 —— ActiveMQ下载和安装(Linux版)
  13. 班长团支书福音——爬虫+腾讯云短信平台实现自动提醒同学体温上报 【附源码】
  14. Android AMS 与 APP 进程通信
  15. 在线答题系统_在线题库管理系统v3.1.0
  16. 文本乱码怎么办?教你一招批量修改文本文件的编码格式,轻松解决乱码问题
  17. 当你感觉为时已晚的时候,恰恰是最早的时候。
  18. 裸金属服务器性能描述,金山云-文档中心-集群支持裸金属服务器
  19. Unity实现人物移动和镜头跟随
  20. android平板电脑的虚拟键盘,win10平板电脑不弹出虚拟键盘的两种解决方法

热门文章

  1. html实现轮播图--小圆圈呈中间大两边小的样式
  2. 实现https请求之旅
  3. 三观|腾讯马化腾年刊《三观》年度期刊前言
  4. S3 Drive支持以及FIPS 140-2兼容性
  5. 网络存储之NAS和SAN的区别
  6. FFT的C语言实现,对照MATLIB
  7. 防火墙——防火墙基础知识
  8. 【C++实训】实训总结
  9. 变量、存储过程与函数
  10. 使用kdevelop出现问题及解决