




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Measuring our success is your success !第 6 课 F2812 的时钟和控制系统作者:顾卫钢 首先,祝朋友们五一劳动节快乐,也希望大家在节日之后别忘记来 HELLODSP 逛逛,呵呵。利用节假日,大家确实需要出去透透气,卸下平时的紧张与压力,让自己的身心得到放松,以便能够以更好的状态投入到工作和学习中去。我们知道,咱身体的动力源泉来自于心脏,正是心脏一刻不停有规律的跳动,我 们才能有个健康的身体去工作,去学习,去做我们想做的事情。如果我们的身体过度疲劳,或者受到了外 来细菌或者病毒的入侵,就会生病,这时候就会有医生来给我们检查身体,进行医治。其实,DSP 也一样, 当然不仅仅 DSP,其他的控制芯片都一样,都需要一个类似于心脏的模块来提供其正常运行的动力和节奏。 今天,我们就来和大家一起学习 F2812 的“心脏”F2812 的振荡器、锁相环 PLL 和时钟机制。除此之 外,我们还要学习给 DSP 做“身体检查”,以维持其正常工作的看门狗模块。在开始今天的主要内容之前,我们先来说明一点,在后续的课程中,我们会涉及到 2812 内部大量的寄存器单元,由于寄存器的内容和各个位的定义都是固定的,在我们的课程中将不会对寄存器做详细的介 绍,请大家各自参考手中的书籍,查询相关寄存器的内容。1. 振荡器 OSC 和锁相环 PLL为了能够让 F2812 按部就班的执行相应的代码,实现功能,我们得让 F2812“活“起来,得向它不断 的提供规律的时钟脉冲,这一功能就由 F2812 内部的振荡器 OSC 和基于 PLL 的时钟模块来实现了。让我们 一起来看下面的图:图 1 2812 芯片内的 OSC 和 PLL 模块如图所示,2812 基于 PLL 的时钟模块可以采用两种模式,一种是 PLL 未被禁止的情况下(旁路或使能), 使用外部晶振给 2812 提供时钟信号,使用 X1/CLKIN 引脚和 X2 引脚;另外一种 PLL 被禁止的情况下,旁 路片内振荡器,由外部时钟源提供时钟信号,即将外部振荡器的信号输入到 X1/XCLKN 引脚,此时 X2 引脚 不使用。通常情况下,我们都是采用前面的方式,由外部晶振通过片内 OSC 来产生时钟信号。下面的表格列出了各种 PLL 的配置模式下,时钟输入信号 XCLKIN 和时钟模块输出信号,即送至 CPU1HELLODSP 版权所有 请勿用于商业用途 违者必究的信号 CLKIN 之间的关系:PLL 模式说明CLKINPLL 禁止上电复位时通过将 XPLLDSIS(低电平有效)引脚置低来进入该模式,PLL 模块完全不使能。此时,输入 CPU 的时钟是由外部振荡器直接通 过 X1/XCLKIN 引脚输入的信号。XCLKINPLL 旁路如果 PLL 未处于不使能的状态,上电默认的 PLL 配置(PLLCR 的值为 0)。PLL 自身被旁路,从 X1/XCLKIN 引脚输入的时钟信号先被/2,然后再 送去 CPU。XCLKIN/2PLL 使能通过给 PLLCR 寄存器写一个不为 0 的值来实现 PLL 的使能,时钟信号需要进入 PLL 模块进行 n 倍频,然后再被/2,最后送至 CPU。(XCLKIN*n)/2我们平常使用的是第 3 种方式,即 PLL 使能,从图 1 我们可以看到,通常采用 30M 的晶振来给 2812提供时基。当 PLLCR 的 DIV 位被设置成最大值,即 1010 的时候,CPU 的时钟将达到 150MHZ,是 2812 所能 支持的最大时钟频率,这也是为什么我们会选用 30M 晶振的原因。时钟频率具体的计算如下面所示。 晶振为 30M,PLLCR 的 DIV 位被设置成 1010 时的时钟频率CLKIN=(OSCLKIN*10)/2=(XCLKIN*10)/2=(30M*10)/2=150M Hz2.2812 芯片中各种时钟信号的产生情况2812 芯片内各种时钟信号的产生情况如图 2 所示。CLKIN 是经过 PLL 模块后送往 CPU 的时钟信号,经 过 CPU 分发,作为 SYSCLKOUT 送至各个外设。因此,SYSCLKOUT=CLKIN。图 2 2812 芯片内各种时钟信号的产生情况我们在使用 2812 开发的时候,通常会用到一些外设,例如 SCI,EV,AD 等,要使得这些外设工作,首 要的就是向其提供时钟信号,因此,我们在系统初始化的时候,就需要对使用到的各个外设的时钟进行使 能,例如我的项目里用到了 EVA,SCIA 和 AD 这 3 个外设,那么我们就需要按照下面的程序对这个 3 个外设8HELLODSP 版权所有 请勿用于商业用途 违者必究进行时钟的使能。和时钟使能相关的寄存器是外设时钟控制寄存器 PCLKCR。 使能外设时钟SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1; SysCtrlRegs.PCLKCR.bit.EVAENCLK=1; SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;我们从图 2 上也能看到,SYSCLKOUT 信号经过低速外设时钟预定标寄存器 LOSPCP(取值范围 07)变成了 LSPCLK,提供给低速外设 SCIA、SCIB、SPI、McBSP;SYSCLKOUT 信号经过高速外设时钟预定标寄存器 HISPCP(取值范围 07)变成了 HSPCLK,提供给高速外设 EVA、EVB 和 ADC。当然在各个外设实际使用的时 候,LSPCLK 或者 HSPCLK 还需要经过各个外设自己的时钟预定标,如果外设自己的时钟预定标位的值为 0 的话,则外设实际使用的时钟就是 LSPCLK 或者 HSPCLK。LSPCLK 计算公式LOSPCP=0,LSPCLK=SYSCLKOUT LOSPCP=17,LSPCLK=SYSCLKOUT/(2*LOSPCP) 注:LOSPCP 表示的是 LOSPCP 寄存器中位 2-0 的值HSPCLK 计算公式HISPCP=0,HSPCLK=SYSCLKOUT HISPCP=17,HSPCLK=SYSCLKOUT/(2*HISPCP) 注:HISPCP 表示的是 HISPCP 寄存器中位 2-0 的值或许有朋友会问,LSPCLK 的值有没有可能会比 HSPCLK 的值来的大?也就是说提供给低速外设的时钟 频率反而要比提供给高速外设的时钟频率来的快?从上面的 LSPCLK 和 HSPCLK 的计算公式可以看出,这两 个时钟信号的频率是独立无关的,各自分别取决于 LOSPCP 或者 HISPCP 的值,和其他因素没有关系。当我 们给 LOSPCP 寄存器所赋的值小于给 HISPCP 寄存器所赋的值时,LOSPCP 的值就会大于 HSPCLK 的值。虽然 这完全取决于我们对于寄存器的初始化,但是一般情况下,我们也不会让这样的情况出现的,因为低速外 设的所需要的时钟毕竟要比高速外设所需要的时钟来的慢些,否则就不叫低速外设了或者高速外设了,当 然这些定义也都是相对而言的。3.看门狗(Watch Dog)在介绍 DSP 看门狗的内容之前,先让我们来了解一下 MCU 中看门狗的原理,以便我们能更好的理解 DSP中的开门狗,因为两者之间的原理是类似的。MCU 中看门狗的原理在由 MCU 构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰, 造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造 成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考 虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watchdog)。看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个 I/O 引脚相连,该 I/O 引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平 (或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程 序跑飞后而陷入某一程序段 进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看 门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复 位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自 动复位.看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗(kicking the do g or service the dog),一个输出到 MCU 的 RST 端,MCU 正常工作的时候,每隔一端时间输出一 个信号到喂狗端,给 W DT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),W DT 定时超 过,就回给出一个复位信号到 MCU,是 MCU 复位. 防止 MCU 死机. 看门狗的作用就是防止程序发 生死循环,或者说程序跑飞。2812 中的看门狗原理和上面讲述的 MCU 的看门狗原理是类似的,其作用是为 DSP 的运行情况进行“把 脉”,一旦发现程序跑飞或者状态不正常,便立即使 DSP 复位。2812 的看门狗电路有一个 8 位的看门狗加 法计数器 WDCNTR,无论什么时候,如果 WDCNTR 计数到最大值时,看门狗模块就会产生一个输出脉冲,脉 冲宽度为 512 个振荡器时钟宽度。为了防止看门狗加法计数器 WDCNTR 溢出,我们通常可以采用两种方法: 一种是禁止看门狗,即使得计数器 WDCNTR 无效;另一种就是定期的“喂狗”,通过软件向负责复位看门狗 计数器的看门狗密钥寄存器(8 位的 WDKEY)周期性的写入 0x55+0xAA,紧跟着 0x55 写入 0xAA 能够清除 WDCNTR。写任何其他的值都会使看门狗立即复位。4.如何写系统初始化函数要使得 2812 能够工作,我们在上电开始的时候就需要对 2812 进行系统初始化,以提供其正常运行的 基本条件,例如分配时钟信号。在这里,我们第一次真正开始涉及到程序的编写,开始之前,还是先给大 家介绍一下 CCS 下面 ,与 2812 寄存器设置相关的语句所常用的格式。我们在工程头文件中可以看到,2812 的各个寄存器是以结构体的形式来定义的,因此,对于寄存器相关位的设置语句也是采用的结构体的形式。2812 中相关寄存器设置的格式 通常分为下面三种格式:(1) 对计数器寄存器进行赋值,例如 EVA 下定时器 T1 的计数器 T1CNT。这类寄存器仅是用于存放数 据用的,各个位没有特殊的含义。这种情况下直接给寄存器赋值就可以。EvaRegs.T1CNT=0x0000;(2) 对功能性的寄存器进行设置,这类寄存器的每个位都有具体的功能,例如 EVA 下面的定时器控 制寄存器 T1CON。这时候写程序时通常有两种格式,一种是对整个寄存器进行赋值,用 all,一 种是对寄存器中某个指定的位进行赋值,用 bit,其实现的效果是一样的,都是对寄存器的某个 或者某些位进行了设置。例如将 T1CON 的 TMODE1-TMODE0 设置为 10(二进制),我们可以用下面的两种方式:EvaRegs.T1CON.all=0x1042;0xXXXX 的表示方法等同于 XXXXh,都是表示十六进制方式。我们将 0x1042 展开来变成0001 0000 0100 0010,此时与 TMODE1 对应的位设置成了 1,与 TMDE0 对应的位设置成了0, 这样实现了我们想要的功能,将定时器 T1 的计数模式设置成了连续增模式。(具体 位的定义请大家自行查阅相关寄存器,这里仅是举例说明编程格式) 当然,我们也可以这样写:EvaRegs.T1CON.bit.TMODE=2;这句话同样能够将 TMODE1 和 TMODE0 设置成 1 和 0 ,因为二进制下面的 10 转换成十进制 后就是 2。这种格式可以方便的对寄存器中的某些特定的位进行设置,而不用对同一寄存 内的其他位进行设置。有些朋友可能会郁闷了,寄存器那么多,而且每个寄存器也有那么多的功能位,写程序的时候自己输 的话那得多麻烦啊,怎么能记住这么多寄存器呢?这一点您大可不必烦恼,其实 CCS 里有感应功能,当您 输入相应的寄存器的时候,与其相关的结构下面的所有内容都会通过感应框给您列出来了,您只需要进行 选择就可以了,例如在 CCS 中书写上面对 T1CON 的 TMODE 位进行设置的语句:当输入“evar”的时候,就会有下面的提示:这时候按 TAB 键,刚才输入的“evar”就会被完整的“EvaRegs”代替,如下图所示, 这时候在”EvaRegs”的后面输入“.”则感应框出现,列出了 EVA 下面所有的相关寄存器,我们可以按住向上或者向下的箭头来进行选择哪一个寄存器,在这里,我们选择 T1CON 寄存器,然后 按回车键,T1CON 就被输入进来了,然后我们在 T1CON 的后面再输入“.”,这时候会出现感应框,让您选 择 all 或者 bit。在这里,通过向下键我们选择 bit,然后按回车,然后接着输入“.”,这时候感应框会将 T1CON 所有 的功能位都列出来,和前面的操作一样,我们选择 TMODE 就行了。怎么样?是不是很方便?赶紧打开 CCS 体验一下吧,呵呵。当然所有的这些结构都在工程的头文件里 进行定义了,所以做这些的前提就是工程内得含有相关的头文件。下面我们回归正题,来看看我们的系统初始化函数应该怎么写,需要在系统初始化函数中写哪些内容, 需要注意些什么。系统初始化函数 InitSysCtrl 一般在工程的 DSP28_SysCtrl.c 文件中。 系统初始化函数分析void InitSysCtrl(void)Uint16 i; EALLOW;/仿真读取使能。/ On TMX samples, to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 internal/ control registers bit have to be enabled. The bits are in Device emulation registers.DevEmuRegs.M0RAMDFT = 0x0300; DevEmuRegs.M1RAMDFT = 0x0300; DevEmuRegs.L0RAMDFT = 0x0300; DevEmuRegs.L1RAMDFT = 0x0300; DevEmuRegs.H0RAMDFT = 0x0300;/固定格式,未见资料介绍,英文说明翻译过来就是:在 TMX 采样时,为了能够使得片内 RAM 模块M0/M1/L0/L1LH0 能够获得最好的性能,控制寄存器的位必须使能,这些位在设备硬件仿真寄存器内。/ Disable watchdog moduleSysCtrlRegs.WDCR= 0x0068;/禁止看门狗,这一句和我们介绍的书写格式有些出入,我想具体的还 和头文件中寄存器的结构定义有关系。/ Initalize PLL SysCtrlRegs.PLLCR = 0xA;/如果外部晶振位 30MHz,则 SYSCLKOUT=(30M*10)/2=150MHz/ Wait for PLL to lockfor(i= 0; i 5000; i+)/延时,使得 PLL 能完成上面语句的操作/ HISPCP/LOSPCP prescale register settings, normally it will be set to default valuesSysCtrlRegs.HISPCP.all = 0x0001;/这一句设定了高速时钟 HSPCLK=150M/2=75M HzSysCtrlRegs.LOSPCP.all = 0x0002;/这一句设定了低速时钟 LSPCLK=150M/4=37.5M Hz/ Peripheral clock enables set for the selected peripherals.SysCtrlRegs.PCLKCR.bit.EVAENCLK=1; SysCtrlRegs.PCLKCR.bit.EVBENCLK=1; SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;/使能了 EVA、EVB、SCIA 的时钟,说明这个工程里将会用到这三个外设,一般您的工程中需要用到哪些外设,就对这些外设的始终进行使能。EDIS;/和 EALLOW 相对关于 EALLOW 和 EDIS 指令的说明,我们的网友 fxw451 在之前发了名为2812 中的 EALLOW 指令让大家对 dsp 有更深的认识一文,进行了详细的阐述,下面是这篇文章的引用,希望能帮助大家理解。2812 中的 EALLOW 指令让大家对 dsp 有更深的认识 开始了编程后,你就会发现了一个问题,为什么每次都有 EALLOW 和 EDIS,这个起什么作用,我们看了 DSP 原理和有关 DSP 的 C 语言编程后,怎么没有说明这个起什么作用呢,就是有的书里说了,也是含糊其辞的,不明白是什么意思。今天我就把 EALLOW 的资料给大家共享一下,一起学习。8 n1 2 _+ J, D7 N# 0 _! JTI 的 DSP 为了提高安全性能,将很多关键寄存器作了保护处理。通过状态寄存器 1(ST1)的位 6设置与复位,来决定是否允许 DSP 指令对关键寄存器进行操作。www.hello dsp. co m, Z1 P0 P! E* b6 C3 V3 w这些关键寄存器包括器件仿真寄存器、FLASH 寄存器、CSM 寄存器、PIE 矢量表、系统控制寄存器、GPIO MUX 寄存器、eCAN 寄存器的一部分。DSP 交流网 DSP 学习第一论坛 DSP 技术应用与推广平台 DS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麦当劳炸鸡的顾客满意度调查
- 一年级语文期末工作总结
- 2025标准个人劳务承包合同范本
- 节庆活动场地租赁合同终止及活动安排协调函
- 智能停车系统车辆车位租赁运营合同
- 2025合同模板宠物领养协议范本
- 2025船只租赁合同范本
- 2025技术研发委托合同
- 2025年全球贸易销售合同
- 房地产开发中的政策法规解读
- DB13-T 5266-2020 基于岩体基本质量BQ分级法的公路隧道围岩级别快速判定技术要求
- 《人工智能基础与应用》课件-实训任务18 构建智能体
- 2025猪蓝耳病防控及净化指南(第三版)
- 【课件】Unit+8+Section+B+(1a~2b)课件人教版(2024)初中英语七年级下册
- 红木文化知到智慧树期末考试答案题库2025年广西大学
- 山西省临汾市侯马市部分学校2025年中考二模化学试题(原卷版+解析版)
- 2025年山西云时代技术有限公司校园招聘160人笔试参考题库附带答案详解
- 海洋牧场建设项目可行性研究报告
- 交互装置设计课程介绍
- 2025-2030全球及中国三维激光扫描仪行业市场现状供需分析及投资评估规划分析研究报告
- 北京市朝阳区2024-2025学年七年级上学期期末考试数学试卷 (解析版)
评论
0/150
提交评论