DSP学习笔记----时钟发生器/通用定时器
更多请参考官方文档: 5509 DSP Timers Reference Guide (Rev. C).pdf
一.时钟发生器
概述:
通过锁相环 分频/倍频 输入频率 供CPU和外设使用.
时钟模式寄存器(CLKMD) :
位 | 字段 | 说明 |
---|---|---|
15 | Rsvd | 保留 |
14 | IAI |
退出Idle状态后, 决定PLL是否重新锁定. 0: PLL将使用与进入Idle状态之前相同的设置进行锁定 1: PLL将重新锁定过程 |
13 | IOB |
处理失锁. 0: 时钟发生器不中断PLL, PLL继续输出时钟 1: 时钟发生器切换到旁路模式, 重新开始PLL锁相过程 |
12 | TEST | 必须保持为0 |
11-7 | PLL MULT | 锁定模式下的PLL倍频值: 0-31 |
6-5 | PLL DIV | 锁定模式下的PLL分频值: 0-3 |
4 | PLL ENABLE |
PLL使能 0: 关闭PLL, 进入旁路模式 1: 打开PLL, 进入锁定模式 |
3-2 | BYPASS DIV | 旁路下的分频值. 00: 1分频 01: 2分频 10,11: 4分频 |
1 | BTRAKLN |
PLL失锁标志. 0: 已经失锁 1: 锁定状态, 或处于读写操作 |
0 | LOCK |
锁定模式标志. 0: 时钟发生器处于旁路模式 1: 时钟发生器处于锁定模式 |
时钟发生器有三种工作模式: 旁路模式 锁定模式 Idle模式:
1.旁路模式: 见寄存器位 4和位3-2
2. 锁定模式: 寄存器位4, 此时输出频率公式:
输出频率=( PLL MULT/(PLL DIV+1) ) * 输入频率
3. Idle模式; 用于降低功耗, 需要配置Idle配置寄存器(ICR)
示例程序:
#include<csl_pll.h>
void CLK_init() //时钟初始化
{
ioport unsigned int *clkmd;
clkmd=(unsigned int *)0x1c00;
*clkmd=0x2613; //设置CPU时钟为144MHz
}
PLL_Config myConfig ={ //PLL配置
0, /*IAI*/
1, /*IOB*/
24, /*PLL MULT*/
1 /*BYPASS DIV*/
};
main()
{
CLK_init();
PLL_config(&myConfig); //设置系统运行速度为144MHz
}
二.通用定时器
概述:
DSP5509A具有两个相同的20位软件可编程定时器
定时器有两个计数寄存器: 预值计数器(Prescaler Counter)和主计数器(TIM)
定时器结构框图:
寄存器说明: (未翻译):
工作原理:
学习完善中......
//发现一个博客大佬: https://blog.csdn.net/app_12062011/article/details/7867716
上一篇: zigbee按键中断点亮流水灯
下一篇: 基于tiny4412按键中断编程