C54x 的片内外设

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Chapter8C54x的片内外设主要内容C54x的时钟发生器C54x的中断系统C54x的定时器及应用C54x的主机接口和串行口(略)C54x的外部总线(略)2片内外设概述片内外设是指集成在DSP芯片内部的扩展功能模块,包括时钟发生器、中断、定时器、主机接口、串行口等片内外设主要用于与外部器件进行数据交换和通信,其优势在于:对片外设备进行访问一般需要借助外部总线和中断机制,而对片内外设的访问直接通过片内总线就可以完成,无需插入等待状态,效率更高;将模数/数模转换、定时器等常用模块集成在芯片中简化了电路板设;可以实现一些特殊功能,如JTAG、等待状态发生器等CPU通过读写相应的控制寄存器来访问和控制片内外设片内外设寄存器被映射到数据存储空间的第0页(地址20h~5Fh)3时钟发生器时钟发生器为C54x提供时钟信号,其结构包括内部振荡器和PLL锁相环电路时钟发生器有两种驱动方式使用内部振荡电路产生时钟信号在Xl和X2/CLKIN引脚之间接入一个晶体,用于启动内部振荡器驱动能力弱,频率范围小(20K~60MHz)使用外部时钟源驱动将外部时钟信号直接加到DSP芯片的X2/CLKIN引脚,而X1引脚悬空驱动能力强,频率范围大(1~200MHz)4硬件配置PLLC541/C542/C543/C545/C546等DSP支持通过硬件设置来配置PLL5引脚状态时钟方式CLKMD1CLKMD2CLKMD3方案一†方案二†000工作频率=外部时钟源3工作频率=外部时钟源5110工作频率=外部时钟源2工作频率=外部时钟源4100工作频率=内部时钟器3工作频率=内部时钟器5010工作频率=外部时钟源1.5工作频率=外部时钟源4.5001工作频率=外部时钟源2工作频率=外部时钟源2111工作频率=内部时钟器2工作频率=内部时钟器2101工作频率=外部时钟源1工作频率=外部时钟源1011停止工作‡停止工作†不同芯片支持不同配置方案;‡停止工作等效于IDLE3省电模式C545A/C546A/C548等芯片支持用软件编程的方法控制PLL锁相环软件可编程PLL提供两种形成时钟信号的方式PLL方式(倍频方式)工作频率=输入时钟(CLKIN)系数系数的范围为0.25~15,共有31个系数可供选择DIV方式(分频方式)工作频率=输入时钟(CLKIN)系数,系数为2或4在DIV方式下,包括PLL在内的所有模拟电路都会被关断,以降低功耗PLL的行为通过设置时钟方式寄存器CLKMD来定义(STM指令)6软件可编程PLLPLLSTATUS:PLL状态位;为0/1表明时钟发生器处于DIV/PLL模式PLLNDIV:决定时钟发生器的工作方式;为0/1表明要采用DIV/PLL方式PLLON/OFF:与PLL_NDIV一起决定PLL工作与否;两标志位都为0时,PLL关闭PLLCOUNT:设定PLL为CPU提供时钟信号前需要的牵引时间;为一减法计数器,以16倍的输入时钟周期作为递减周期(即每16个时钟周期减1)PLLDIV:与PLL_MUL和PLL_NDIV一起决定频率扩大或缩小的系数PLLMUL:与PLL_DIV和PLL_NDIV一起决定频率扩大或缩小的系数7时钟方式寄存器CLKMD的结构牵引时间:PLL锁定频率(提供稳定时钟信号)所需要的时间8频率缩放系数可编程PLL的频率缩放系数由上表可以推知,可编程PLL共有31个可供选择的系数,分别是:0.25,0.5,0.75,1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4,4.5,5,5.5,6,6.5,7,7.5,8,9,10,11,12,13,14,15例如:STM#0xF7FF,CLKMD;CLKMD=1111011111111111B,系数为1C54x根据引脚CLKMD1~CLKMD3的状态来决定芯片复位之后如何设置时钟方式寄存器CLKMD,以及如何产生时钟信号9CLKMD的复位CLKMD1CLKMD2CLKMD3CLKMD的复位值时钟方式000E007HPLL×150019007HPLL×100104007HPLL×51001007HPLL×2110F007HPLL×11110000H2分频(PLL无效)101F000H4分频(PLL无效)011——保留若要改变PLL的倍频系数,必须先将PLL的工作方式从倍频(PLL方式)切换到分频(DIV方式);具体步骤如下:10倍频切换1.复位PLLNDIV,选择DIV方式;2.检测PLLSTATUS标志位,以确定PLL工作方式是否已顺利切换;3.根据所需时钟频率,确定倍频系数;4.根据时钟频率确定牵引时间,即PLLCOUNT;5.重新设定CLKMD寄存器倍频切换例程STM#00H,CLKMDstatus:LDMCLKMD,AAND#01H,ABCstatus,ANEQSTM#03EFH,CLKMDPLL_NDIV=1,PLL_DIV=0,PLL_NUL=0,倍频系数为1若要在二分频和四分频之间进行切换,则必须先将PLL切换到整数倍频方式11牵引时间的确定PLLCOUNTLockup_Time/(16T_CLKIN)中断系统概述C54x的中断类型按照中断源的性质,可分为软件中断和硬件中断软件中断:利用INTR,TRAP,RESET指令发出;无优先级之分硬件中断:由片内外设中断信号或外部中断信号触发;有优先级之分按照处理方式,可分为可屏蔽中断和不可屏蔽中断可屏蔽中断:能用软件屏蔽或开放;C54x最多支持16个可屏蔽中断不可屏蔽中断:不能用软件屏蔽;包括所有软件中断和两个外部硬件中断,即RS和NMI(注意:硬件中断服务程序也可以用软件方式启动)12中断就是CPU暂时中止当前操作,转而去处理某个特殊事件的过程;引发中断的事件称为中断源,中断源发出的处理请求称为中断请求,处理中断源的程序称为中断处理程序或中断服务程序中断寄存器中断标志寄存器IFR(InterruptFlagRegister)IFR中保存的是各种可屏蔽硬件中断的即时状态;当且仅当某一硬件中断被触发时,IFR中相应的标志位才会被置为1;IFR标志位不会被清零,除非中断请求得到处理,或者出现下列三种情况之一:1.2.将1写入该标志位(将该标志位清0),相应的尚未处理完的中断被清除;3.利用对应的中断号执行INTR指令,同样可将相应标志位清0中断屏蔽寄存器IMR(InterruptMaskRegister)IMR用来屏蔽或开放可屏蔽中断;每个二进制码对应一种中断状态寄存器ST1中的INTM标志位为0时,若某一屏蔽位为0,则屏蔽对应的中断,若为1,则解除屏蔽(INTM相当于所有可屏蔽中断的总开关)13软件或硬件复位(执行RESET指令或RS变为低电平);C541只支持9种可屏蔽硬件中断INT0~INT3:外部硬件中断RINT0,XINT0,RINT1,XINT1:串行口中断和内部硬件中断TINT:定时器中断和内部硬件中断寄存器标志位与硬件中断的对应关系一致IFR中的标志位代表是否有该类硬件中断请求等待处理IMR中的标志位代表是否要将该类硬件中断屏蔽1415~9876543210保留INT3XINT1RINT1XINT0RINT0TINTINT2INT1INT0C541的中断寄存器的结构接收中断请求接收中断请求中断请求可以来自于硬件器件或者软件指令硬件中断请求由外部接口信号或片内外设信号自动产生;每接收到一个硬件中断请求,不管这个请求最终是否会被应答,与之对应的IFR寄存器中的标志位都会被置为1,并将维持到请求被应答或标志位被重置软件中断请求来自于程序中的INTR,TRAP或者是RESET指令INTR:可以启动任意中断服务程序;当CPU响应INTR发出的中断请求时,会将INTM标志位置为1,屏蔽其它可屏蔽中断TRAP:功能与INTR相同,但不改变INTM标志位RESET:执行软件复位,令CPU返回某一预定状态(INTM1)15C54x的中断处理过程可以大概划分为三个步骤:接收中断请求,应答中断,和执行中断服务程序中断应答接收到中断请求后,CPU必须首先决定是否要响应这一请求;若响应,CPU会暂停当前操作,执行中断服务程序(ISR),发出中断响应信号IACK(外部可见的引脚信号),并清除IFR标志位不可屏蔽的中断请求(软件+RS&NMI)会被立刻应答,而可屏蔽中断请求只有在满足下述条件时才会被应答该中断请求的优先级最高队列中有多个中断请求时,CPU按优先级排定响应次序;ST1中的INTM标志位为0INTM为1意味着所有可屏蔽中断均被屏蔽中断屏蔽寄存器IMR中的对应位为1IMR中的屏蔽标志为1表明该中断未被单独屏蔽16执行中断服务程序CPU响应中断请求后,会顺序执行以下操作1.保护现场,将程序计数器PC的当前值压入堆栈;2.将中断向量的地址加载到PC;3.从中断向量指定地址开始取指;4.执行分支转移,进入中断服务程序;5.执行中断服务程序直到遇到返回指令;6.从堆栈中弹出返回地址,加载到PC中;7.返回被中断的程序继续执行17保护和恢复现场时要注意:必需保护所有会被ISR改变的寄存器;恢复和保护现场时的方向相反;如果需要保护块重复参数,那么在恢复时应先恢复块重复计数器BRC,再恢复ST1中的块重复标志位BRAF(BRC为0时,BRAF会被自动清零)中断操作流程中断向量跳转指令B+对应的ISR的地址中断向量表中断向量表示所有中断向量的集合每个中断向量在向量表中占四个字各中断向量在向量表中的相对位置固定,或者说序号INDEX固定5位序号INDEX由指令(INTR/TRAP)或CPU(RESET/硬件中断)提供向量表起始地址由状态寄存器PMST中的9位IPTR决定(基地址)中断向量地址:IPTR7+INDEX2配置中断向量表定义中断向量表.titlevectors.asm******RESET******.refstart.sect.RESETBstart*******INT2*******.refINT2.sect.INT2BINT2.end19定义中断处理函数.titletest.asm.mmregs.defstart,INT_2…….start:.……RSBXINTM…….end:BendINT2:SFTAA,8RETE.end装载中断向量表.……MEMORY{PAGE0:……vec:org=0FF80H,len=04Hvec1:org=0FFC8H,len=04H……}SECTIONS{…….RESET:vecPAGE1.INT2:vec1PAGE1……}定时器的结构和工作流程20周期寄存器PRD定时寄存器TIM借位13预定标计数器PSC借位预定标分频系数TDDR12111&SRESETTRBCLKOUTTSSTINTTOUTCLKTINTT(TDDR1)(PRD1)的周期1.PSC在CPU时钟CLKOUT作用下进行减1计数;2.PSC减至0后,产生借位信号,并将TDDR重新加载到PSC;3.在PSC借位信号作用下,TIM进行减1计数;4.TIM减至0后,产生定时中断TINT和定时输出TOUT,同时将PRD重新加载到TIM定时器的工作流程PMST中的CLKOFF标志位控制TOUT输出与否定时器的寄存器C54x的片内定时器包括三个MMR,分别是TIM(TimerRegister):存储定时器的当前值PRD(TimerPeriodRegister):存储TIM的初始值,TIM递减归零后,CPU会自动将PRD的值加载到TIM;可用来调整TINT/TOUT周期TCR(TimeControlRegister):包含定时器的控制位和状态位21保留位软件调试控制位预定标计数器重新加载位停止状态位分频系数决定调试过程中遇到断点时定时器的工作状态减1计数器,不

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功