欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DSP学习笔记----时钟发生器/通用定时器

程序员文章站 2022-06-09 16:32:59
...

更多请参考官方文档: 5509 DSP Timers Reference Guide (Rev. C).pdf

一.时钟发生器

概述:

通过锁相环 分频/倍频 输入频率 供CPU和外设使用.

时钟模式寄存器(CLKMD) :

时钟模式寄存器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)

定时器结构框图:

DSP学习笔记----时钟发生器/通用定时器

 寄存器说明: (未翻译): 

DSP学习笔记----时钟发生器/通用定时器

DSP学习笔记----时钟发生器/通用定时器

工作原理:

DSP学习笔记----时钟发生器/通用定时器

学习完善中......

 

//发现一个博客大佬: https://blog.csdn.net/app_12062011/article/details/7867716