DSP学习3)时钟及系统控制
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了实现看门狗的各项功能,内部有3个功能寄存器
17
第十七页,编辑于星期三:十八点 六分。
OSCCLK
第2章 CPU内部结构与时钟系统
WDCR(WDPS(2:0))
WDCR(WDDIS)
/512
看门狗 定标器
WDCLK
清除计数器
WDCNTR(7:0)
8位看门狗 计数器CLR
WDKEY(7:0)
看门狗55+AA 钥匙检测器 XRS
一、时钟及系统控制
看门狗及其应用
F2812的看门狗与240x的基本相同,当8位的看门狗计数器计数 到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。 如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周 期向看门狗复位控制寄存器写“0x55+0xAA",该寄存器能够使看
门狗计数器清零。
坏的钥匙 好的钥匙
集电极 开路 WDRST
匙
XPPLDIS
101
看门狗功能框图
通用输出脉冲 (512 OSCCLKs)
WDRST WDINT
SCSR(WDENINT)
18
第十八页,编辑于星期三:十八点 六分。
2、看门狗及其应用
8位的看门狗计数器(WDCNTR),当计数到最大值时看门狗模块产生 一个输出脉冲(512个OSCCLK时钟宽度),并可以中断或复位DSP。
Timer->RegsAddr->TCR.bit.FREE = 1; // Timer Free Run
Timer->RegsAddr->TCR.bit.TIE = 1; // 1 = Enable Timer Interrupt
}
12
第十二页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
SYSCLKOUT
TCR.4
(定时器起始状态)
16位预定标计数器 PSCH:PSC
借位
32位计数器 TIMH:TIM
借位
TINT
定时器功能框图
13
第十三页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
定时器
▲ 工作原理
√在每个SYSCLKOUT脉冲后PSC减1,一直减到0。 √在下一个SYSCLKOUT周期 ,TDDR加载新的除数值到PSC,并使TIM减1。
主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。各
种时钟和复位电路的内部结构:
4
第四页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
5
第五页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
HISPCP 高速外设时钟 PLLCR 设置寄存器
√重复前两步操作,即PSC每次减到0后,TIM进行一次减1操作,直到TIM减为0 √在下一个SYSCLKOUT周期,将定时器中断(TINT)送到CPU,和TOUT引脚。同时TIM装载
来自PRD的新的定时 计数器值,并使PSC再次减1。
每经过(TDDR+1)个SYSCLKOUT 周期,TIM减1。当PRD、TDDR或两者都不为零时,定时 器中断频率即TINT的频率(fTINT)为:
fTINT
fCLKOUT
1
(TDDR
1 1)
(
PRD
1)
fCLKOUT1为SYSCLKOUT的频率。
14
第十四页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
定时器
▲ 计数器——TIM
D15
D15
▲ 周期寄存器——PRD
D15
D15
TIM
R/W-0
TIMH
R/W-0
PRD
R/W-0
Timer->RegsAddr->PRD.all = temp;
Timer->RegsAddr->TPR.all = 0; // Set pre-scale counter to divide by 1
Timer->RegsAddr->TPRH.all = 0;
// Initialize timer control register:
▲ TIM —— 16位的计数寄存器,重新装载PRD的值。 ▲ PRD —— 16位周期寄存器。 ▲ TCR —— 16位的定时器控制寄存器。 ▲ PSC —— 16位的预定标寄存器,重新装载TDDR的值。 ▲ TDDR —— 16位的分频寄存器。
9
第九页,编辑于星期三:十八点 六分。
F281×器件上有3个32位CPU定时器(TIMER0/1/2) TIMER0可以在用户程序中使用,TIMER1/2预留给DSP BIOS或其
写1到WDDIS,屏蔽看门狗模块;写0使能看门狗模块。
WDCHK(2~0)必须写101,其它值会引起DSP复位。
WDPS(2~0)配置看门狗计数时钟:
WDCLK=OSCCLK/512/(1~64)。
21
第二十一页,编辑于星期三:十八点 六分。
// This function disables the watchdog timer.
PRDH
R/W-0
D0 D0
D0 D0
15
第十五页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
定时器
▲ 控制寄存器——TCR0
TCR功能: √控制定时器模式 √重新加载定时器
√启动和停止定时器
D15 D14 D13~D12 D11 D10 D9~D6 D5 D4 D3~ D0
TIF TIE 保留 FREE SOFT 保留 TRB TSS 保留
1
第一页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制 二、程序地址产生 三、转移、调用和返回 四、重复指令
2
第二页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
3
第三页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
使用内部振荡器。
X1/XCLKIN 片内振荡器 (OSC)
X2
XRS
OSCCLK (PLL被禁止)
PLL 旁路
PLL
0
CLKIN
(送至CPU)
/2
1
4位PLL选择
当XPLLDIS为低电平,系统直接采用时钟或晶振直接作为系统时钟; 当XPLLDIS为高电平,外部时钟经过PLL倍频后,为提供时钟。
8
第八页,编辑于星期三:十八点 六分。
一、时钟及系统控制
晶体振荡器及锁相环
XF_PLLDIS
预存器
XPLLDIS
时钟模块提供两种操作模式:
▲ 内部振荡器:如果使用内部振荡器,
则必须在X1/XCLKIN和X2两个引
脚之间连接一个石英晶体。
▲ 外部时钟源:如果采用外部时钟,
可以将输入的时钟信号直接接到X1/ XCLKIN引脚上,而X2悬空。在这种情况下,不
6
第六页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
时钟寄存器
▲ 外设时钟控制寄存器 PCLKCR —— 数据存储空间 0x0000701C
D15 D14
D13 D12
D11
D10
D9 D8
保留 ECANENCLK 保留 MCBSPENCLK SCIBENCLK SCIAENCLK 保留 SPIENCLK
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频系数
D15
D4 D3
D0
Reserved
DIV
定时器
R-0
R/W-010
有3个32位CPU定时器(TIMER0/1/2):
√定时器0用户可以在应用程序中使用。
√定时器1和定时器2预留给实时操作系统使用(例如 DSPBIOS)。
PLL控制寄存 器
LOSPCP PCLKCR
慢速外设时钟 SCSR 设置寄存器
HISPCCPP
外设时钟控制 WDCNTR 寄存器
系统控制和 状态寄存器
看门狗计数 寄存器
LPMCR0 低功耗模式控 WDKEY 看门狗复位
制寄存器0
key寄存器
LPMCRl 低功耗模式控 WDCR 制寄存器1
看门狗控制 寄存器
一、时钟及系统控制
工作过程:首先用32位计数寄存器(TIMH:TM)装载周期寄存器(PRDH:PRD)内部
定 的值。计数寄存器根据SYSCLKOUT时钟递减计数。当计数寄存器等于0时,定时器
时 中断输出产生一个中断脉冲。
器
复位 定时器重新装载
16位定时器分频 TDDRH:TDDR
32位周期寄存器 PRDH:PRD
WDINTS WDENINT WDOVERRIDE
R-0
R-1
R/W-0
R/W1C-1
▲ 高低速外设时钟寄存器 HISPCP/LOSPCP —— 0x0000701A/B
D15
D3 D2
D0
Reserved
R-0
HSPCK/LSPCK
R/W-010
7
第七页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
{
unsigned long temp;
Timer->CPUFreqInMHz = Freq;
// Initialize timer period
Timer->PeriodInUSec = Period;
temp = (long) (Freq * Period);
// 150MHz×100us=15000
Timer->RegsAddr->TCR.bit.TSS = 1/0; // 1 = Stop timer, 0 = Start Timer
Timer->RegsAddr->TCR.bit.TRB = 1; // 1 = reload timer
Timer->RegsAddr->TCR.bit.SOFT = 1;
如果不希望产生脉冲信号,用户可以屏蔽看门狗模块,或者通过软件周期性的向看
门狗复位寄存器(WDKEY)写“0x55+0xAA”,使得WDCNTR清零。
应用说明:
使能看门狗或屏蔽看门狗模块?看门狗时钟倍率?WDCR
希望看门狗中断(从低功耗模式唤醒)还是复位(程序失控)?SCSR 程序运行过程周期性的复位WDCNTR。向WDKEY 写“0x55+0xAA” 如果程序失控,则复位或中断DSP;否则看门狗不影响程序执行。
R-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R-0
R/W-0
D7
D4
D3
D2
D1
D0
保留
ADCENCLK
保留 EVBENENCLK EVAENCLK
R-0
R/W-0
R-0
R/W-0
R/W-0
▲ 系统控制和状态寄存器 SCSR —— 数据存储空间 0X00007022
D15
D3 D2
D1
D0
Reserved
并输出一个中断脉冲(TINT0)。
11
第十一页,编辑于星期三:十八点 六分。
配置CPU定时器
下面的函数中周期寄存器由给定的DSP时钟频率Freq(MHz)和定时器周期 Period(µs) 两个参数确定。初始化后定时器处于停止状态。
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
提示:看门狗作为提高系统抗干扰能力的措施之一,是一种补救措施。
19
第十九页,编辑于星期三:十八点 六分。
看门狗模块框图
看门狗模块
20
第二十页,编辑于星期三:十八点 六分。
看门狗控制寄存器WDCR
看门狗中断状态标志位WDFLAG: 读:1--看门狗复位(WDRST);0--器件复位 写:1--将WDFLAG清零;0--WDFLAG状态不变
R/W-0 R/W-0 R-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R-0
▲ 预定标寄存器——PSC/TDDR
D15
D8 D7
PSC
R-0
D15
D8 D7
PSCH
R-0
D0
TDDR
R/W-0
D0
TDDRH
R/W-0
16
第十六页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
TRB-Timer Reload Bit
TSS-Timer Stop Status Bit
10
第十页,编辑于星期三:十八点 六分。
通用定时器
定时器的工作过程:
1)用32位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)中的
计时常数; 2)计数寄存器根据SYSCLKOUT时钟递减计数(16+32位); 3)当计数寄存器等于0时,定时器的计数器寄存器重载周期寄存器值,
void DisableDog(void)
{
使能/屏蔽看门狗模块 EALLOW;
它RTOS使用(如果不用DSP BIOS,可以供用户使用)。
每个定时器有4个寄存器:
1)计数寄存器(TIMH:TIM):32位 2)周期寄存器(PRDH:PRD):32位 3)预定标寄存器(TPR): 32位(预定标计数器PSC+分频寄存器TDDR) 4)控制寄存器(TCR):16位
TIF-Timer Interrupt Flag TIE-Timer Interrupt Enable
17
第十七页,编辑于星期三:十八点 六分。
OSCCLK
第2章 CPU内部结构与时钟系统
WDCR(WDPS(2:0))
WDCR(WDDIS)
/512
看门狗 定标器
WDCLK
清除计数器
WDCNTR(7:0)
8位看门狗 计数器CLR
WDKEY(7:0)
看门狗55+AA 钥匙检测器 XRS
一、时钟及系统控制
看门狗及其应用
F2812的看门狗与240x的基本相同,当8位的看门狗计数器计数 到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。 如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周 期向看门狗复位控制寄存器写“0x55+0xAA",该寄存器能够使看
门狗计数器清零。
坏的钥匙 好的钥匙
集电极 开路 WDRST
匙
XPPLDIS
101
看门狗功能框图
通用输出脉冲 (512 OSCCLKs)
WDRST WDINT
SCSR(WDENINT)
18
第十八页,编辑于星期三:十八点 六分。
2、看门狗及其应用
8位的看门狗计数器(WDCNTR),当计数到最大值时看门狗模块产生 一个输出脉冲(512个OSCCLK时钟宽度),并可以中断或复位DSP。
Timer->RegsAddr->TCR.bit.FREE = 1; // Timer Free Run
Timer->RegsAddr->TCR.bit.TIE = 1; // 1 = Enable Timer Interrupt
}
12
第十二页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
SYSCLKOUT
TCR.4
(定时器起始状态)
16位预定标计数器 PSCH:PSC
借位
32位计数器 TIMH:TIM
借位
TINT
定时器功能框图
13
第十三页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
定时器
▲ 工作原理
√在每个SYSCLKOUT脉冲后PSC减1,一直减到0。 √在下一个SYSCLKOUT周期 ,TDDR加载新的除数值到PSC,并使TIM减1。
主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。各
种时钟和复位电路的内部结构:
4
第四页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
5
第五页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
HISPCP 高速外设时钟 PLLCR 设置寄存器
√重复前两步操作,即PSC每次减到0后,TIM进行一次减1操作,直到TIM减为0 √在下一个SYSCLKOUT周期,将定时器中断(TINT)送到CPU,和TOUT引脚。同时TIM装载
来自PRD的新的定时 计数器值,并使PSC再次减1。
每经过(TDDR+1)个SYSCLKOUT 周期,TIM减1。当PRD、TDDR或两者都不为零时,定时 器中断频率即TINT的频率(fTINT)为:
fTINT
fCLKOUT
1
(TDDR
1 1)
(
PRD
1)
fCLKOUT1为SYSCLKOUT的频率。
14
第十四页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
定时器
▲ 计数器——TIM
D15
D15
▲ 周期寄存器——PRD
D15
D15
TIM
R/W-0
TIMH
R/W-0
PRD
R/W-0
Timer->RegsAddr->PRD.all = temp;
Timer->RegsAddr->TPR.all = 0; // Set pre-scale counter to divide by 1
Timer->RegsAddr->TPRH.all = 0;
// Initialize timer control register:
▲ TIM —— 16位的计数寄存器,重新装载PRD的值。 ▲ PRD —— 16位周期寄存器。 ▲ TCR —— 16位的定时器控制寄存器。 ▲ PSC —— 16位的预定标寄存器,重新装载TDDR的值。 ▲ TDDR —— 16位的分频寄存器。
9
第九页,编辑于星期三:十八点 六分。
F281×器件上有3个32位CPU定时器(TIMER0/1/2) TIMER0可以在用户程序中使用,TIMER1/2预留给DSP BIOS或其
写1到WDDIS,屏蔽看门狗模块;写0使能看门狗模块。
WDCHK(2~0)必须写101,其它值会引起DSP复位。
WDPS(2~0)配置看门狗计数时钟:
WDCLK=OSCCLK/512/(1~64)。
21
第二十一页,编辑于星期三:十八点 六分。
// This function disables the watchdog timer.
PRDH
R/W-0
D0 D0
D0 D0
15
第十五页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
定时器
▲ 控制寄存器——TCR0
TCR功能: √控制定时器模式 √重新加载定时器
√启动和停止定时器
D15 D14 D13~D12 D11 D10 D9~D6 D5 D4 D3~ D0
TIF TIE 保留 FREE SOFT 保留 TRB TSS 保留
1
第一页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制 二、程序地址产生 三、转移、调用和返回 四、重复指令
2
第二页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
3
第三页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
使用内部振荡器。
X1/XCLKIN 片内振荡器 (OSC)
X2
XRS
OSCCLK (PLL被禁止)
PLL 旁路
PLL
0
CLKIN
(送至CPU)
/2
1
4位PLL选择
当XPLLDIS为低电平,系统直接采用时钟或晶振直接作为系统时钟; 当XPLLDIS为高电平,外部时钟经过PLL倍频后,为提供时钟。
8
第八页,编辑于星期三:十八点 六分。
一、时钟及系统控制
晶体振荡器及锁相环
XF_PLLDIS
预存器
XPLLDIS
时钟模块提供两种操作模式:
▲ 内部振荡器:如果使用内部振荡器,
则必须在X1/XCLKIN和X2两个引
脚之间连接一个石英晶体。
▲ 外部时钟源:如果采用外部时钟,
可以将输入的时钟信号直接接到X1/ XCLKIN引脚上,而X2悬空。在这种情况下,不
6
第六页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
时钟寄存器
▲ 外设时钟控制寄存器 PCLKCR —— 数据存储空间 0x0000701C
D15 D14
D13 D12
D11
D10
D9 D8
保留 ECANENCLK 保留 MCBSPENCLK SCIBENCLK SCIAENCLK 保留 SPIENCLK
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频系数
D15
D4 D3
D0
Reserved
DIV
定时器
R-0
R/W-010
有3个32位CPU定时器(TIMER0/1/2):
√定时器0用户可以在应用程序中使用。
√定时器1和定时器2预留给实时操作系统使用(例如 DSPBIOS)。
PLL控制寄存 器
LOSPCP PCLKCR
慢速外设时钟 SCSR 设置寄存器
HISPCCPP
外设时钟控制 WDCNTR 寄存器
系统控制和 状态寄存器
看门狗计数 寄存器
LPMCR0 低功耗模式控 WDKEY 看门狗复位
制寄存器0
key寄存器
LPMCRl 低功耗模式控 WDCR 制寄存器1
看门狗控制 寄存器
一、时钟及系统控制
工作过程:首先用32位计数寄存器(TIMH:TM)装载周期寄存器(PRDH:PRD)内部
定 的值。计数寄存器根据SYSCLKOUT时钟递减计数。当计数寄存器等于0时,定时器
时 中断输出产生一个中断脉冲。
器
复位 定时器重新装载
16位定时器分频 TDDRH:TDDR
32位周期寄存器 PRDH:PRD
WDINTS WDENINT WDOVERRIDE
R-0
R-1
R/W-0
R/W1C-1
▲ 高低速外设时钟寄存器 HISPCP/LOSPCP —— 0x0000701A/B
D15
D3 D2
D0
Reserved
R-0
HSPCK/LSPCK
R/W-010
7
第七页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
{
unsigned long temp;
Timer->CPUFreqInMHz = Freq;
// Initialize timer period
Timer->PeriodInUSec = Period;
temp = (long) (Freq * Period);
// 150MHz×100us=15000
Timer->RegsAddr->TCR.bit.TSS = 1/0; // 1 = Stop timer, 0 = Start Timer
Timer->RegsAddr->TCR.bit.TRB = 1; // 1 = reload timer
Timer->RegsAddr->TCR.bit.SOFT = 1;
如果不希望产生脉冲信号,用户可以屏蔽看门狗模块,或者通过软件周期性的向看
门狗复位寄存器(WDKEY)写“0x55+0xAA”,使得WDCNTR清零。
应用说明:
使能看门狗或屏蔽看门狗模块?看门狗时钟倍率?WDCR
希望看门狗中断(从低功耗模式唤醒)还是复位(程序失控)?SCSR 程序运行过程周期性的复位WDCNTR。向WDKEY 写“0x55+0xAA” 如果程序失控,则复位或中断DSP;否则看门狗不影响程序执行。
R-0
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R-0
R/W-0
D7
D4
D3
D2
D1
D0
保留
ADCENCLK
保留 EVBENENCLK EVAENCLK
R-0
R/W-0
R-0
R/W-0
R/W-0
▲ 系统控制和状态寄存器 SCSR —— 数据存储空间 0X00007022
D15
D3 D2
D1
D0
Reserved
并输出一个中断脉冲(TINT0)。
11
第十一页,编辑于星期三:十八点 六分。
配置CPU定时器
下面的函数中周期寄存器由给定的DSP时钟频率Freq(MHz)和定时器周期 Period(µs) 两个参数确定。初始化后定时器处于停止状态。
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
提示:看门狗作为提高系统抗干扰能力的措施之一,是一种补救措施。
19
第十九页,编辑于星期三:十八点 六分。
看门狗模块框图
看门狗模块
20
第二十页,编辑于星期三:十八点 六分。
看门狗控制寄存器WDCR
看门狗中断状态标志位WDFLAG: 读:1--看门狗复位(WDRST);0--器件复位 写:1--将WDFLAG清零;0--WDFLAG状态不变
R/W-0 R/W-0 R-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R-0
▲ 预定标寄存器——PSC/TDDR
D15
D8 D7
PSC
R-0
D15
D8 D7
PSCH
R-0
D0
TDDR
R/W-0
D0
TDDRH
R/W-0
16
第十六页,编辑于星期三:十八点 六分。
第2章 CPU内部结构与时钟系统
TRB-Timer Reload Bit
TSS-Timer Stop Status Bit
10
第十页,编辑于星期三:十八点 六分。
通用定时器
定时器的工作过程:
1)用32位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)中的
计时常数; 2)计数寄存器根据SYSCLKOUT时钟递减计数(16+32位); 3)当计数寄存器等于0时,定时器的计数器寄存器重载周期寄存器值,
void DisableDog(void)
{
使能/屏蔽看门狗模块 EALLOW;
它RTOS使用(如果不用DSP BIOS,可以供用户使用)。
每个定时器有4个寄存器:
1)计数寄存器(TIMH:TIM):32位 2)周期寄存器(PRDH:PRD):32位 3)预定标寄存器(TPR): 32位(预定标计数器PSC+分频寄存器TDDR) 4)控制寄存器(TCR):16位
TIF-Timer Interrupt Flag TIE-Timer Interrupt Enable