无线传感网络 --ZigBee2-1 时钟

ZigBee2-1 时钟

  1. CC2530在正常运行的时候需要一个高频时钟信号和一个低频的时钟信号
    高频时钟信号,主要供给CPU,保证程序的运行。
    低频时钟信号,主要供给看门狗、睡眠定时器等偏上外设。
  2. 时钟信号的来源:
    高频信号有2个,芯片内部的16M RC电路;外接的32M石英晶振
    低频信号也有2个来源,芯片内部的32K RC电路,外接的32.768K石英晶振。
  3. CC2530芯片默认上电的时候,是内部的2个RC电路作为高频和低频的时钟来源。
  4. 如果我们在用串口,特别是无线通信的时候,必须要用32M的石英晶振作为高频时钟来源。
  5. 高频时钟源特点:
    2个高频时钟源可以同时起振产生高频时钟信号;
    而2个低频时钟源,某一时刻只能有1个起振,并且起振的这个时钟源供给CC2530.
  6. 32MHz表示不分频输出
    16MHz表示2分频输出
    以此类推

时钟

系统高频时钟源切换步骤:

  1. 让2个高频时钟源起振;
  2. 等待目标时钟源振荡稳定;
  3. 延时一小段时间63us;
  4. 不分频输出;
  5. 选中目标高频时钟源作为系统主时钟;
  6. 确认一下当前工作的系统时钟是不是所选的高频时钟;

相关寄存器:
SLEEPCMD、CLKCONCMD(命令寄存器)
SLEEPSTA、CLKCONSTA(状态寄存器)

  1. 让2个高频时钟源起振;

让SLEEPCMD的第2位为0;

在这里插入图片描述
2. 等待目标时钟源振荡稳定;

SLEEPSTA寄存器的第6位为1表示32M 时钟源稳定,如果为0表示还没有稳定

在这里插入图片描述
在这里插入图片描述

  1. 超过63微秒延时
  2. 不分频输出

把寄存器CLKCONCMD的低3位 设置为000,表示不分频输出

  1. 选中目标高频时钟源作为系统主时钟;

把寄存器CLKCONCMD的第6位 清0,设置32M作为系统主时钟

在这里插入图片描述
6. 确认一下当前工作的系统时钟是不是所选的高频时钟;

如果读CLKCONSTA这个寄存器的第6位为0,表示32M的时钟源已经作为了当前的系统主时钟,程序可以往下运行了。
在这里插入图片描述

例子

验证工作32MHz的模块和16MHz的模块从0数到9的的速度关系
在这里插入图片描述
默认为16MHz的程序

void delay()
{
  int i,j;
     for(i=0;i<1000;i++)
       for(j=0;j<800;j++);
}
void main()
{
     char i;
     LS164_Cfg();
     while(1)
     {
         for(i=0;i<10;i++)
         {
            LS164_BYTE(i);
            delay();
         }
     }
}

设置为32MHz的程序

#include<iocc2530.h>
#include"74LS164_8LED.h"
void delayus()
{
    char k=63;
    while(k--);
}

void delay()
{
  int i,j;
     for(i=0;i<1000;i++)
       for(j=0;j<800;j++);
}

void Init32M()
{
   SLEEPCMD &=0xFB;//1111 1011 开启2个高频时钟源
   while(0==(SLEEPSTA & 0x40));// 0100 0000 等待32M稳定
   delayus();
   CLKCONCMD &=0xF8;//1111 1000 不分频输出
   CLKCONCMD &=0XBF;//1011 1111 设置32M作为系统主时钟
   while(CLKCONSTA & 0x40); //0100 0000 等待32M成功成为当前系统主时钟
}
void main()
{
     char i;
     LS164_Cfg();
     Init32M();
     while(1)
     {
         for(i=0;i<10;i++)
         {
            LS164_BYTE(i);
            delay();
         }
     }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值