




已阅读5页,还剩126页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章F2812的系统控制与中断,3.1F2812的存储器,F2812的存储空间:Flash128kX16bOTP存储器只能一次编程,不能擦除表4.1flash和OTP配置寄存器寄存器受EALLOW位保护(保护寄存器)执行EALLOW指令后,可将数据写入寄存器执行EDIS指令后,写操作禁止,3.2时钟,3.2.1时钟单元基本结构,TMS320F2812处理器内部集成了振荡器、锁相环、看门狗及工作模式选择等控制电路。振荡器、锁相环主要为处理器CPU及相关外设提供可编程的时钟,每个外设的时钟都可以通过相应的寄存器进行编程设置;看门狗可以监控程序的运行状态,提高系统的可靠性。,F2810和F2812内部的各种时钟和复位电路,3.2.2锁相环电路,锁相环是一种控制晶振使其相对于参考信号保持恒定相位的电路,在数字通信系统中使用比较广泛。目前微处理器或DSP集成的片上锁相环,主要作用则是通过软件实时地配置片上外设时钟,提高系统的灵活性和可靠性。此外,由于采用软件可编程锁相环,所设计的系统处理器外部允许较低的工作频率,而片内经过锁相环微处理器提供较高的系统时钟。好处:可以有效地降低系统对外部时钟的依赖和电磁干扰,提高系统启动和运行的可靠性,降低系统对硬件的设计要求。,3.2.2锁相环电路,TMS320F2812处理器的片上晶振和锁相环模块为内核及外设提供时钟信号,并且控制器件的低功耗工作模式。片上晶振模块允许使用2种方式为器件提供时钟,即采用内部振荡器或外部时钟源。(1)使用内部振荡器,在Xl/XCLKIN和X2这两个引脚之间连接一个石英晶体,一般选用30MHz。(2)采用外部时钟,将输入的时钟信号直接接到Xl/XCLKIN引脚上,而X2悬空,不使用内部振荡器。,晶体振荡器及锁相环模块,锁相环配置模式,处理器内部时钟电路,锁相环模块除了为C28x内核提供时钟外,还通过系统时钟输出提供快速和慢速2种外设时钟,而系统时钟主要通过外部引脚XPLLDIS及锁相环控制寄存器进行控制。,如果XPLLDIS为高电平,使能芯片内部锁相环电路,则可以通过控制寄存器PLLCR软件设置系统的工作频率。注意:1.在通过软件改变系统的工作频率时,必须等待系统时钟稳定后才可以继续完成其他操作。2.可以通过外设时钟控制寄存器使能外设时钟。在具体的应用中。为降低系统功耗,不使用的外设最好将其时钟禁止。外设时钟包括快速外设和慢速外设两种,分别通过HISPCP和LOSPCP寄存器进行设置。,CLKIN(经过PLL后送往CPU的时钟信号)经过CPU分发,作为SYSCLKOUT送至各个外设。DSP将外设分成两种:低速外设:SCI,SPI,McBSP高速外设:EV,ADC两种外设时钟一起提供。给各个外设提供时钟前,使能用到的外设的时钟。不用的外设时钟不使能。PCLKCR寄存器使能相应的外设时钟SysctrlRegs.PCLKCR.bit.SCIAENCLK=1;/使能SCIA时钟,二其他外设时钟,系统时钟SYSCLKOUT经过低速预定标寄存器LOSPCP,产生低速外设时钟LSPCLK提供给低速外设。系统时钟SYSCLKOUT经过高速预定标寄存器HISPCP,产生高速外设时钟HSPCLK提供给高速外设。LOSPCP寄存器HISPCP寄存器,二其他外设时钟,/为降低系统功耗,不使用的外设时钟需要屏蔽。但如果使用外设必须首先使能相应的外设时钟voidInitsysctrl()uint16i;EALLOW;SysctrlRegs.WDCR=0 x0068;/关看门狗SysctrlRegs.PLLCR=0 x0008;/初始化锁相环,系统时钟30MX4=120Mfor(i=0;iPeriodInUSec=Period;temp=(long)(Freq*Period);Timer-RegsAddr-PRD.all=temp;/设置预定标参数(SYSCLKOUT):Timer-RegsAddr-TPR.all=0;Timer-RegsAddr-TPRH.all=0;,/初始化定时器控制寄存器Timer-RegsAddr-TCR.bit.TSS=1;/1=Stoptimer,0=Start/RestartTimerTimer-RegsAddr-TCR.bit.TRB=1;/1=reloadtimerTimer-RegsAddr-TCR.bit.SOFT=1;Timer-RegsAddr-TCR.bit.FREE=1;/TimerFreeRunTimer-RegsAddr-TCR.bit.TIE=1;/0=Disable/1=EnableTimerInterrupt/复位中断计数Timer-InterruptCount=0;,3.5通用I/O,3.5.1功能概述F28x系列有56个独立可编程复用的通用I/O(GPIO)引脚。其中绝大部分是通用I/O和专用功能复用引脚。通常情况下,TMS320F2812的大多数I/O引脚都用作专用功能引脚。,F28x模块图,数字量I/O端口模块采用了一种灵活的配置方法控制复用引脚的功能:GPIOMux功能选择寄存器用来选择F281x和C281x器件的引脚操作模式,可以通过该寄存器独立设置每个引脚的功能(数字量I/O或外设专用I/O)。如果选择数字量I/O模式,可以通过GPxDIR方向控制寄存器配置数字量I/O的方向,并通过输入限定控制寄存器GPxQUAL进一步消除数字量I/O引脚的噪声信号。此外,处理器提供GPxSET和GPxCLEAR寄存器对数字量进行置位或清零,还可以通过GPxDAT寄存器独立读/写I/O信号。,3.5.2端口配置,TMS320F2812DSP对所有数字量I/O进行分组,每组作为一个端口,分别是GPIOA、B、D、E、F和G。A、B组各16个,D组4个,E组3个,F组15个,G组2个。C28x的绝大多数引脚内部都连接多个功能单元,但并不是所有功能单元都能同时工作。也就是说,一个物理引脚可以有多种不同的功能。可以通过软件进行功能设置,但在某一时刻只能用作一种功能。,TMS320F2812复用引脚功能对照,TMS320F2812复用引脚功能对照,GPIO控制寄存器,所有GPIO端口由各自的GPxMUX复用寄存器控制,控制位设置为0时,相应引脚作为通用数字量I/O使用;设置为1时,相应引脚作为专用引脚使用。EALLOW;GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=1;/将PWM1引脚设置为PWM波的输出引脚GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=0;/将PWM1引脚设置为通用数字I/O口EDIS;,当设置为数字量I/O功能时,寄存器GPxDIR确定I/O端口的方向:控制位清零引脚配置为数字量输入;置1配置为数字量输出。GpioMuxRegs.GPADIR.bit.GPIOA0=0;/输入引脚,端口A、B、D、E作为数字量输入端口时具有输入量化功能,使用该功能时,输入脉冲必须达到一定的时钟周期长度才被认为是有效的输入信号,否则将被忽略。用户可以定义量化时间长度以消除不必要的干扰信号。GPxQUAL:输入限定控制寄存器158:系统保留70:QUALPRD,指定受限制的输入周期采样0 x00无限制,与SYSCLKOUT同步0 x01QUALPRD=2个SYSCLKOUT周期0 x02QUALPRD=4个SYSCLKOUT周期0 xffQUALPRD=2*255个SYSCLKOUT周期,复用功能引脚图,处理器中GPIO内部结构图,3.5.3数字量I/O寄存器及其应用,F2812处理器的所有外设寄存器全部分组为外设帧PF0、PF1和PF2,这些帧都映射到处理器的数据区。外设帧PF0包括控制访问内部Flash和SARAM速度的控制寄存器;外设帧PF1包括绝大部分外设控制寄存器;外设帧PF2主要用于CAN模块的控制寄存器。,外设帧存储空间映射关系,1I/O复用寄存器及其应用,GPIO复用控制寄存器,采用C/C+编程,GPIO复用寄存器的结构体定义(在DSP281x_Gpio.h中),StuctGPIO_MUX_REGSunionGPAMUX_REGGPAMUX;unionGPADIR_REGGPADIR;unionGPAQUAL_REGGPAQUAL;Uint16rsvd1;unionGPBMUX_REGGPBMUX;unionGPBDIR_REGGPBDIR;unionGPBQUAL_REGGPBQUAL;Uintl6rsvd25;unionGPDMUX_REGGPDMUX;unionGPDDIR_REGGPDDIR;unionGPDQUAL_REGGPDQUAL;Uintl6rsvd3;,unionGPEMUX_REGGPEMUX;unionGPEDIR_REGGPEDIR;unionGPEQUAL_REGGPEQUAL;Uintl6rsvd4;unionGPFMUX_REGGPFMUX;unionGPFDIR_REGGPFDIR;Uintl6rsvd52;unionGPGMUX_REGGPGMUX;unionGPGDIR_REGGPGDIR;Uintl6rsvd62;,用结构体定义后,对外部引脚进行初始化操作。,voidGpio_select(void)Uint16var1;Uint16var2;Uint16var3;/设置GPIOMux寄存器,使相关I/O工作在GPIO模式var1=0 x0000;/设置GPIODIR寄存器,使相关I/O工作在GPIO输出模式var2=0 xFFFF;var3=0 x0000;/配置量化功能,EALLOW;GpioMuxRegs.GPAMUX.all=var1;GpioMuxRegs.GPBMUX.all=var1;GpioMuxRegs.GPDMUX.all=var1;GpioMuxRegs.GPFMUX.all=var1;GpioMuxRegs.GPEMUX.all=var1;GpioMuxRegs.GPGMUX.all=var1;/GPIOPORT配置为输出GpioMuxRegs.GPADIR.all=var2;GpioMuxRegs.GPBDIR.all=var2;GpioMuxRegs.GPDDIR.all=var2;,GpioMuxRegs.GPDDIR.all=var2;GpioMuxRegs.GPEDIR.all=var2;GpioMuxRegs.GPFDIR.all=var2;GpioMuxRegs.GPGDIR.all=var2;/配置量化器的值GpioMuxRegs.GPAQUAL.all=var3;GpioMuxRegs.GPBQUAL.all=var3;GpioMuxRegs.GPDQUAL.all=var3;GpioMuxRegs.GPEQUAL.all=var3;EDIS;,由于引脚的输出缓冲直接连接到输入缓冲,当前GPIO引脚上的任何信号都会同时传送到外设模块。因此当一个引脚配置为普通的数字I/O时,必须禁止相应的能产生中断的外设模块功能,否则可能产生意外的中断。,由于所有多功能复用引脚都可以通过相应的控制寄存器的位独立配置,因此在使用时需要详细了解各GPIO引脚对应的控制位。表给出相关寄存器位对应的被控引脚,并以C语言编程的结构体定义为例给出了采用C/C+编程时的定义方法。以GPIOA复用为例介绍位结构定义。,表7.3GPIOA复用引脚功能分配表,/GPIOA功能复用控制寄存器位结构定义structGPAMUX_BITS/位功能描述Uint16PWM1_GPIOA0:1;/0Uint16PWM2_GPIOA1:1;/1Uint16PWM3_GPIOA2:1;/2Uint16PWM4_GPIOA3:1;/3Uint16PWMS_GPIOA4:1;/4Uint16PWM6_GPIOA5:1;/5Uint16T1PWM_GPIOA6:1;/6Uint16T2PWM_GPIOA7:1;/7Uint16CAP1Q1_GPIOA8:1;/8Uint16CAP2Q2_GPIOA9:1;/9Uint16CAP3QI1_GPIOA10:1;/10Uint16TDIRAGPIOA11:1;/11Uint16TCLKINA_GPIOA12:1;/12Uint16C1TRIP_GPIOA13:1;/13Uint16C2TRIP_GPIOA14:1;/14Uint16C3TRIP_GPIOA15:1;/15,例:点亮LED的实验。,6个贴片LED由GPIOF端口的GPIOF8GPIOF13直接驱动。令6个贴片LED中的DS2、4、6点亮,DS1、3、5熄灭。试编写程序。,源程序编写如下:,/*功能描述:令6个贴片LED中的2、4、6点亮,1、3、5熄灭*/#includeDSP28_Device.hvoidIOinit()EALLOW;/将GPIOF8GPIOF13配置为一般I/O端口,输出GpioMuxRegs.GPFMUX.all=0 xc0ff;GpioMuxRegs.GPFDIR.all=0 x3f00;EDIS;,voidmain(void)InitSysCtrl();/系统初始化子程序,在DSP28_sysctrl.c中DINT;/关闭总中断IER=0 x0000;/关闭外设中断IFR=0 x0000;/清中断标志IOinit();/I/O初始化子程序while(1)GpioDataRegs.GPFDAT.all=0 xd500;,注意:,在CCS3.1的项目中应包含以下文件:库文件rts2800.lib;命令文件EzDSP_RAM_lnk.cmd;所有的*.h头文件;C文件:DSP28_GlobalVariableDefs.c,DSP28_SysCtrl.c。,2I/O数据寄存器及其应用,如果复用引脚配置为数字I/O模式,则可以直接利用数据寄存器对I/O操作(读/写),也以利用其他辅助寄存器对各I/O进行独立操作,如数字I/O置位(GPxSET寄存器)、数字I/O清零(GPxCLEAR寄存器)及数字I/O电平转换(GPxTOGGLE寄存器),如表所列。,2I/O数据寄存器及其应用,数据寄存器(GPxDAT):I/O设成输入,引脚有信号输入,读GPxDAT的值,可以读引脚的高低电位。I/O设成输出,写入GPxDAT的值,可以输出高低电位。置位寄存器(GPxSET):把寄存器内容置1清零寄存器(GPxCLEAR):把寄存器内容清0取反寄存器(GPxTOGGLE):把寄存器内容取反,2I/O数据寄存器及其应用,只能写,任何读操作都返回0。只能写1,写0无效GpioDataRegs.GPADAT.bit.GPIOA0=0;GpioDataRegs.GPACLEAR.bit.GPIOA0=1;GpioDataRegs.GPATOGGLE.bit.GPIOA0=1;,GPIO数据控制寄存器,voidGpio_example1(void)while(1)GpioDataRegs.GPADAT.all=0 xAAAA;GpioDataRegs.GPBDAT.all=0 xAAAA;GpioDataRegs.GPDDAT.all=0 x0022;GpioDataRegs.GPEDAT.all=0 x0022;GpioDataRegs.GPFDAT.all=0 xAAAA;GpioDataRegs.GPGDAT.all=0 x0020;delay_loop();,例:使用数据寄存器设置I/0的输出,或者通过数据寄存器读取外部引脚的状态信息,GpioDataRegs.GPADAT.all=0 x55555;GpioDataRegs.GPBDAT.all=0 x55555;GpioDataRegs.GPDDAT.all=0 x0041;/只有4个I/0GpioDataRegs.GPEDAT.all=0 x0005;/只有3个I/0GpioDataRegs.GPFDAT.all=0 x5555;GpioDataRegs.GPGDAT.all=0 x0010;/只有2个I/0delay_loop();,3.5.4数字量I/O应用举例,GPIO_application文件结构,/#/文件名称:GPIO_application.C/功能描述:DSP28GPIO-PortB7.B0:8-BitLED/CPUTimer0ISR周期50ms/看门狗使能,在定时器中断及主程序的循环中处理/#includeDSP281x_Device.h/使用的函数原型声明voidGpio_select(void);voidInitSystem(void);interruptvoidcpu_timer0_isr(void);/定时器0中断服务程序声明,voidmain(void)unsignedinti;unsignedintLED8=0 x0001,0 x0002,0 x0004,0 x0008,0 x0010,0 x0020,0 x0040,0 x0080;InitSystem();/初始化DSP内核寄存器Gpio_select();/设置GPIO复用寄存器,选择GPIO功能InitPieCtrl();/初始化PIE单元(代码:DSP281x_PieCtrl.c)InitPieVectTable();/初始化PIE中断向量表(代码:DSP281x_PieCtrl.c)/为Timer0中断重新分配中断EALLOW;/解除寄存器保护PieVectTable.TINT0=/使能寄存器保护,InitCpuTimers();/配置CPU-Timer0周期50ms-/150MHzCPU频率,50000us中断周期ConfigCpuTimer(,while(1)for(i=O;iG14;i+)if(i7)GpioDataRegs.GPBDAT.all=LEDi;elseGpioDataRegs.GPBDAT.all=LED14-i;while(CpuTimer0.InterruptCount3);/等待Timer0CpuTimer0.InterruptCount=0;EALLOW;SysCtrlRegs.WDKEY=OxAA;/看门狗处理EDIS;,/GPIO引脚功能选择函数voidGpio_select(void)EALLOW;GpioMuxRegs.GPAMUX.all=0 x0;/所有GPIO口设置为I/O模式GpioMuxRegs.GPBMUX.all=0 x0;GpioMuxRegs.GPDMUX.all=0 x0;GpioMuxRegs.GPFMUX.all=0 x0;GpioMuxRegs.GPEMUX.all=0 x0;GpioMuxRegs.GPGMUX.all=0 x0;GpioMuxRegs.GPADIR.all=0 x0;/GPIOPORT作为输入GpioMuxRegs.GPBDIR.all=0 x00FF;/GPIO口B15-B8输入,B7B0输出,GpioMuxRegs.GPDDIR.all=0 x0;/GPIOPORT输入GpioMuxRegs.GPEDIR.all=0 x0;/GPIOPORT输入GpioMuxRegs.GPFDIR.all=0 x0;/GPIOPORT输入GpioMuxRegs.GPGDIR.all=0 x0;/GPIOPORT输入GpioMuxRegs.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业公民报告2025下半年发展报告监护类器械
- 建筑材料市场推广合同(2025年)-CF-2008-0111
- 2025年直播带货平台内容创作者服务合同协议
- 起货机安装合同5篇
- 国际贸易实务合同样本及解析
- 电商平台委托发货合同范本
- 搬运装卸承包合同7篇
- 杉木地板运输合同5篇
- 墙面宣传广告合同8篇
- 合同风险评估与预防策略
- 韩国历史文化课件
- 船舶管路修理技术要求
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 中建土木-基础设施工程安全生产管理标准化图册(试行)
- 生育支持政策效果评估-洞察及研究
- 医学检验科PDCA质量改进案例解析
- 《汽修维修业务接待实务》课件项目1-任务3-积累保养知识(保养+养护用品)
- 思想道德与法治(2023年版)电子版教材第一章 领悟人生真谛 把握人生方向
- 中国银行笔试英语真题
- 2025年宪法知识竞赛试题库及答案(共500题)
- 医学知识 并行心律心电图 学习课件
评论
0/150
提交评论