F2812的时钟和控制系统Word文档格式.docx

上传人:b****2 文档编号:3874111 上传时间:2023-05-02 格式:DOCX 页数:11 大小:65.53KB
下载 相关 举报
F2812的时钟和控制系统Word文档格式.docx_第1页
第1页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第2页
第2页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第3页
第3页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第4页
第4页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第5页
第5页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第6页
第6页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第7页
第7页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第8页
第8页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第9页
第9页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第10页
第10页 / 共11页
F2812的时钟和控制系统Word文档格式.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

F2812的时钟和控制系统Word文档格式.docx

《F2812的时钟和控制系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《F2812的时钟和控制系统Word文档格式.docx(11页珍藏版)》请在冰点文库上搜索。

F2812的时钟和控制系统Word文档格式.docx

锁相环中有4位倍频设置位,以此来提供各种速度的时钟信号。

基于PLL的时钟模块可以采用两种操作模式:

(1)内部振荡器:

在PLL未被禁止的情况下,使用外部晶振给2812提供时钟信号,则必须使用X1/XCLKIN引脚和X2引脚,在这两引脚之间连接一个石英晶体,即外部晶振。

(2)外部时钟源:

在PLL被禁止的情况下,旁路片内振荡器,由外部时钟源提供时钟信号,这时候讲外部振荡器的信号直接输入到X1/XCLKIN引脚上,此时X2引脚不使用。

外部

引脚可以选择系统的时钟源。

为低电平时,系统直接采用时钟或晶振直接作为系统时钟;

为高电平时,外部时钟经过PLL倍频后,为系统提供时钟。

系统可以通过锁相环控制寄存器来选择锁相环的工作模式和倍频的系数。

下面的表格列出了各种PLL的配置模式下,时钟输入信号XCLKIN和时钟模块输出信号,即送至CPU的信号CLKIN之间的关系:

PLL模块

功能描述

CLKIN

PLL被禁止

上电复位时如果

引脚是低电平,则PLL完全被禁止。

此时,输入CPU的时钟是由外部振荡器直接通过X1/XCLKIN引脚输入的信号。

XCLKIN

PLL旁路

如果PLL未处于不使能的状态,上电默认的PLL配置(PLLCR的值为0)。

PLL自身被旁路,从X1/XCLKIN引脚输入的时钟信号先除以2,然后再送去CPU。

XCLKIN/2

PLL使能

通过给PLLCR寄存器写一个不为0的值来实现PLL的使能,时钟信号需要进入PLL模块进行n倍频,然后再除以2,最后送至CPU。

(XCLKIN*n)/2

锁相环PLL中有锁相环控制寄存器PLLCR,作用是用来选择锁相环的工作模式和倍频的系数。

上面提到过锁相环中有4位倍频设置位DIV,即为0~3位,往里面写入0000~1010用来确定倍频的系数,其他为保留。

锁相环控制寄存器PLLCR如下:

15430

保留

DIV

在PLL模式中,平常使用的是PLL使能模式,从图1可以看到,通常采用30M的晶振来给2812提供时基。

当PLLCR的DIV位被置为最大值1010的时候,CPU的时钟将达到150MHz,是2812所能支持的最大时钟频率,这也是为什么我们会选用30M晶振的原因。

时钟频率具体的计算如下所示:

晶振为30M,PLLCR的DIV位被置为1010时的时钟频率

CLKIN=(OSCLKIN*10)/2=(30M*10)/2=150MHz

2、2812芯片中各种时钟信号的产生情况

2812芯片内各种时钟信号的产生情况如图2所示。

CLKIN是经过PLL模块后送往CPU的时钟信号,进过CPU分发,作为SYSCLKOUT送至各个外设。

因此,SYSCLKOUT=CLKIN。

图22812芯片内各种时钟信号的产生情况

我们在使用2812开发的时候,通常会用到一些外设,例如SCI,EV,AD等,要使得这些外设工作,首先的就是向其提供时钟信号。

因此,我们再系统初始化的时候,就需要对使用到的各个外设的时钟进行使能,在这里和时钟使能相关的寄存器是外设时钟控制寄存器PCLKCR。

PCLKCR控制各种时钟的工作状态,使能或禁止相关外设时钟,而PCLKCR各位的分配如下所示:

1514131211109

ECANENCLK

MCBSPENCLK

SCIBENCLK

SCIAENCLK

8743210

SPIENCLK

ADCENCLK

EVBENCLK

EVAENCLK

对PCLKCR中各种外设时钟有了基本的了解后,那么究竟是如何对项目中所需要的各个外设的时钟进行使能的呢?

假设要做的项目中用到了EVA、SCIB、SPI、AD这4个外设,那么就需要按照下面的程序对这4个外设进行时钟的使能。

使能外设时钟

SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;

SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;

SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;

SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;

从图2中也能看到,SYSCLKOUT信号经过低速外设时钟预定标寄存器LOSPCP(取值范围0~7,即000~111)变成了LSPCLK,提供给低速外设SCIA、SCIB、SPI、McBSP;

SYSCLKOUT信号经过高速外设时钟预定标寄存器HISPCP(取值范围0~7,即000~111)变成了HSPCLK,提供给高速外设EVA、EVB、ADC。

他们各位的分配如下:

高速外设时钟设置寄存器HISPCP

15320

HSPCLK

低速外设时钟设置寄存器LOSPCP

LSPCLK

在各个外设实际使用时钟的时候,LSPCLK或者HSPCLK需要经过各个外设自己的时钟预定标,如果外设自己的时钟预定标位的值为0的话,则外设实际使用的时钟就是LSPCLK或者HSPCLK。

LSPCLK计算公式

LOSPCP=0,LSPCLK=SYSCLKOUT

LOSPCP=1~7,LSPCLK=SYSCLKOUT/(2*LOSPCP)

HSPCLK计算公式

HOSPCP=0,HSPCLK=SYSCLKOUT

HOSPCP=1~7,HSPCLK=SYSCLKOUT/(2*HISPCP)

通过上面的2个计算公式,可能会产生疑问,LSPCLK的值有没有可能会比HSPCLK的值大?

也就是说提供给低速外设的时钟频率反而比提供给高速外设的时钟频率来的快?

从上面的LSPCLK和HSPCLK的计算公式可以看出,这两个时钟信号的频率是独立无关的,各自分别取决于LOSPCP或者HISPCP的值,和其他因素没有关系。

当我们给LOSPCP寄存器所赋的值小于给HISPCP寄存器所赋的值时,LOSPCP的值就会大于HSPCP的值。

虽然这完全取决于我们对于寄存器的初始化,但是一般情况下,也不会让这样的情况出现的,因为低速外设所需要的时钟毕竟要比高速外设所需要的时钟慢些,否则就没有必要区分高低速了,当然这些定义也都是相对而言的。

3、看门狗(WatchDog)

在学习DSP看门狗之前,先让我们来了解一下MCU(MicroprocessorControlUnit微处理器单元)中看门狗的原理,以便我们能更好的理解DSP中看门狗,因为两者之间的原理是类似的。

MCU中看门狗的原理

在有MCU构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”。

看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:

看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在他和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。

看门狗,又叫watchdogtimer,是一个定时器电路,一般有一个输入,叫喂狗(kickingthedogorservicethedog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给WDT清零,如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位。

防止MCU死机。

看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

图3看门狗功能框图

2812中的看门狗原理和上面讲诉的MCU的看门狗原理是类似的,其作用是为DSP的运行情况进行“把脉”,一旦发现程序跑飞或者状态不正常便立即使DSP复位。

为了实现看门狗的各项功能,需要准备设置其内部的3个功能寄存器,而这3个功能寄存器分别是看门狗计数寄存器WDCNTR、看门狗复位寄存器WDKEY、看门狗控制寄存器WDCR。

看门狗计数寄存器WDCNTR

15870

WDCNTR

在这里可以看到计数器一共有8位,当这个8位的计数器计数达到最大值256时,看门狗模块就会产生一个输出脉冲,脉冲宽度为512个振荡器时钟周期。

可能有疑问为什么要产生一个512倍振荡器时钟周期的宽脉冲信号?

因为需要是内核复位的信号和要唤醒处理器的中断信号的有效时间远大于振荡器的时钟周期。

为了防止看门狗加法计数器WDCNTR溢出,不想产生脉冲信号,这里我们通常可以采用两种方法:

(1)禁止看门狗,也即为屏蔽计数器,使得计数器WDCNTR无效。

则下面我们介绍另外一个寄存器。

看门狗控制寄存器WDCR

158765320

WDFLAG

WDDIS

WDCHK

WDPS

禁止看门狗,则只需要在WDCR中的WDDIS位置1即可,相反置0为使能看门狗。

跟着我们介绍其他功能位的作用:

看门狗复位状态标识位WDFLAG,如果置为1,则表示看门狗复位满足了复位条件;

如果置为0,则表示外部器件或上电复位条件。

WDCHK必须置为101,因为写其他任何值都会引起器件内核的复位,不过这一条件的实现要在看门狗已经使能的情况下。

最后看门狗预定标器WDPS,这里跟上面所学到的高低速预定标器是相同的道理,作用是配置看门狗计数时钟WDCLK的。

WDCLK计算公式

OSCCLK振荡时钟信号

WDPS=0,WDCLK=OSCCLK/512/1

WDPS=1~7,WDCLK=OSCCLK/512/

(2)定期进行“喂狗”,即通过软件周期性地向看门狗复位寄存器中WDKEY位写进“0x55+0xAA”,紧跟着0x55写入0xAA能够清除WDCNTR,写任何其他的值都会使看门狗立即复位。

看门狗复位寄存器WDKEY

WDKEY

4、如何写系统初始化函数

要使得2812能够工作,我们在上电开始的时候就需要对2812进行系统初始化,以提供其正常运行的基本条件,例如分配时钟信号。

系统初始化函数InitSysCtrl一般在工程的DSP28_SysCtrl.c文件中。

系统初始化函数分析

VoidInitSysCtrl(void)

{

Uint16i;

//定义16位int类型的变量i

EALLOW;

//允许访问受EALLOW保护的寄存器

//OnTMXsamples,togetthebestperformanceofonchipRAMblocksM0/M1/L0/L1/H0//internalcontrolregistersbithavetobeenabled.ThebitsareinDeviceemulationregisters.

//在TMX采样时,为了能够使得片内RAM模块M0/M1/L0/L1/H0能够获得最好的性能,//控制寄存器的位必须使能,这些位在设备硬件仿真寄存器内。

DevEmuRegs.M0RAMDFT=0x0300;

//固定格式

DevEmuRegs.M1RAMDFT=0x0300;

DevEmuRegs.L0RAMDFT=0x0300;

DevEmuRegs.L1RAMDFT=0x0300;

DevEmuRegs.H0RAMDFT=0x0300;

//Disablewatchdogmodule

//禁止看门狗模块

SysCtrlRegs.WDCR=0x0068;

//禁止看门狗,WDDIS位置1

//InitalizePLL

//设置PLL

SysCtrlRegs.PLLCR=0xA;

//使2812所能支持的最大时钟频率,如果外部晶振为//30MHz,则SYSCLKOUT=(30M*10)/2=150MHz

//WaitforPLLtolock

for(i=0;

i<

5000;

i++){}//延时,使得PLL能完成上面语句的操作

//HISPCP/LOSPCPprescaleregistersettings,normallyitwillbesettodefaultvalues

//设置HISPCP/LOSPCP,一般情况下他们会设置为默认值

SysCtrlRegs.HISPCP.all=0x0001;

//这里设定了高速时钟HSPCLK=150M/2=75MHz

SysCtrlRegs.LOSPCP.all=0x0002;

//这里设定了低速时钟LSPCLK=150M/(2*2)=37.5MHz

//Peripheralclockenablessetfortheselectedperipherals

//设置外设使能

SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;

//使能了EVA、SCIB、SPI、ADC的时钟,说明这个工程里将会用到这4个外设,一般//的工程中需要用到哪些外设,就对对应外设的时钟进行使能。

EDIS;

//禁止访问受EALLOW保护的寄存器

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2