DSP学习 3)时钟及系统控制解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TIF-Timer Interrupt Flag TIE-Timer Interrupt Enable TRB-Timer Reload Bit TSS-Timer Stop Status Bit
10
通用定时器
定时器的工作过程:
1)用32位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)中的
HSPCK/LSPCK
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
晶体振荡器及锁相环
XF_PLLDIS 预存器 XPLLDIS
时钟模块提供两种操作模式: ▲ 内部振荡器:如果使用内部振荡
器,则必须在X1/XCLKIN和X2两个引 脚之间连接一个石英晶体。
XRS X1/XCLKIN 片内振荡器 (OSC) OSCCLK (PLL被禁止) PLL 旁路 PLL /2 0 CLKIN (送至CPU)
F281×器件上有3个32位CPU定时器(TIMER0/1/2) TIMER0可以在用户程序中使用,TIMER1/2预留给DSP BIOS 或其它RTOS使用(如果不用DSP BIOS,可以供用户使用)。 每个定时器有4个寄存器:
1)计数寄存器(TIMH:TIM):32位
2)周期寄存器(PRDH:PRD):32位 3)预定标寄存器(TPR): 32位(预定标计数器PSC+分频寄存器TDDR) 4)控制寄存器(TCR):16位
计时常数; 2)计数寄存器根据SYSCLKOUT时钟递减计数(16+32位); 3)当计数寄存器等于0时,定时器的计数器寄存器重载周期寄存器值, 并输出一个中断脉冲(TINT0)。
11
配置CPU定时器
下面的函数中周期寄存器由给定的DSP时钟频率Freq(MHz)和定时器 周期Period(µs) 两个参数确定。初始化后定时器处于停止状态。
看门狗计数 寄存器
看门狗复位 key寄存器 看门狗控制 寄存器
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
D15
R-0
时钟寄存器
—— 数据存储空间 0x0000701C D11 D10 D9 D8
R/W-0 R-0 R/W-0
▲ 外设时钟控制寄存器 PCLKCR
D14
R/W-0
D13
R-0
D12
1
第2章 CPU内部结构与时钟系统
一、时钟及系统控制 二、程序地址产生 三、转移、调用和返回 四、重复指令
第2章 CPU内部结构与时钟系统
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
主要介绍F2812的时钟、锁相环、看门狗和复位部结构与时钟系统
5
第2章 CPU内部结构与时钟系统
一、时钟及系统控制
高速外设时钟 PLLCR 设置寄存器 LOSPCP 慢速外设时钟 SCSR 设置寄存器 HISPCP PCLKCR 外设时钟控制 WDCNTR 寄存器 LPMCR0 低功耗模式控 WDKEY 制寄存器0 LPMCRl 低功耗模式控 WDCR 制寄存器1 HISPCP PLL控制寄 存器 系统控制和 状态寄存器
1
▲ 外部时钟源:如果采用外部时钟,
可以将输入的时钟信号直接接到X1/ XCLKIN引脚上,而X2悬空。在这种情 况下,不使用内部振荡器。
X2
4位PLL选择
当XPLLDIS为低电平,系统直接采用时钟或晶振直接作为系统时钟; 当XPLLDIS为高电平,外部时钟经过PLL倍频后,为提供时钟。
第2章 CPU内部结构与时钟系统
R/W-0 R/W1C-1
▲ 系统控制和状态寄存器 SCSR ——
D15 D3 D2
R-1
Reserved
R-0
WDINTS WDENINT WDOVERRIDE
—— 0x0000701A/B D2 D0
R/W-010
▲ 高低速外设时钟寄存器 HISPCP/LOSPCP
D15 D3
Reserved
R-0
一、时钟及系统控制
锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频系数
D15 D4 D3 D0
Reserved
DIV
R/W-010
定时器
R-0
有3个32位CPU定时器(TIMER0/1/2): √定时器0用户可以在应用程序中使用。 √定时器1和定时器2预留给实时操作系统使用(例如 DSPBIOS)。 ▲ TIM —— 16位的计数寄存器,重新装载PRD的值。 ▲ PRD —— 16位周期寄存器。 ▲ TCR —— 16位的定时器控制寄存器。 ▲ PSC —— 16位的预定标寄存器,重新装载TDDR的值。 ▲ TDDR —— 16位的分频寄存器。
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period) { unsigned long temp; Timer->CPUFreqInMHz = Freq; // Initialize timer period Timer->PeriodInUSec = Period; temp = (long) (Freq * Period); // 150MHz×100us=15000 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: 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; Timer->RegsAddr->TCR.bit.FREE = 1; // Timer Free Run Timer->RegsAddr->TCR.bit.TIE = 1; // 1 = Enable Timer Interrupt }
R/W-0
保留 ECANENCLK 保留 MCBSPENCLK SCIBENCLK SCIAENCLK 保留 SPIENCLK
R/W-0
D7 保留
R-0
D4
D3 ADCENCLK
R/W-0
D2 保留
R-0
D1
R/W-0
D0
R/W-0
EVBENENCLK EVAENCLK 数据存储空间 0X00007022 D1 D0