第7章TMS320C54XDSP片内外设10.ppt_第1页
第7章TMS320C54XDSP片内外设10.ppt_第2页
第7章TMS320C54XDSP片内外设10.ppt_第3页
第7章TMS320C54XDSP片内外设10.ppt_第4页
第7章TMS320C54XDSP片内外设10.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 DSP技术与应用 学时 32 含8学时实验 2 第7章TMS320C54XDSP片内外设 3 本章内容 1 特殊功能寄存器 2 时钟发生器 3 硬件定时器 5 编程等待状态发生器 4 中断系统 6 HPI McBSP 通用I O口 4 1 特殊功能寄存器 C54x拥有众多的特殊功能寄存器 这些特殊功能寄存器非常重要 被用于对片内各功能模块进行管理 控制及状态监视 对于DSP的使用者来说 掌握了这些寄存器的用法 也就基本掌握了DSP的应用要点 VC5402DSP中众多的特殊功能寄存器分CPU映射寄存器和外设映射寄存器两大类 分布在一个特定的RAM区 00H 7FH 即数据存储区的第0页内 又称作存储器映像寄存器MMR 片上外设 所有的 C54x的CPU结构及功能完全相同 但片上外设的配置可能不同 完整的片上外设配置包括特殊功能寄存器 串行口 并行口 通用I O口 定时器 时钟发生器 软件可编程等待状态发生器 中断系统等等 5 6 7 外设映射寄存器 8 9 l辅助寄存器 AR0 AR7 8个16位的辅助寄存器 AR0 AR7 能被算术逻辑单元ALU访问 也能被辅助寄存器算术单元ARAU修改 其主要功能是产生16位的数据空间地址 也能用来作为通用寄存器和计数器 l循环缓冲寄存器 BK 循环缓冲寄存器 BK 被用来通过ARAU在循环寻址中确定数据循环区的大小 l块循环寄存器 BRC RSA REA 块循环寄存器 BRC 在块循环时确定一段代码所需循环的次数 块循环头地址寄存器 RSA 中存放循环程序块的开始地址 块循环尾地址寄存器 REA 中存放循环程序块的结束地址 常用特殊功能寄存器 片上外设 10 l堆栈指针寄存器 SP 堆栈指针是 个l6位的专用寄存器 被用来存放栈顶地址 指示出堆栈顶部在数据存储空间的位置 C54x的堆栈是向下生成的 SP总是指向压入堆栈的最后一个数据 系统复位后 SP初始化为0H 使得堆栈由0000H处开始 中断 调用 返回 PUSH POP等指令都要进行堆栈处理 l暂存器 TREG TREG被用来为乘法指令 乘法 累加指令存放一个乘数 或为带移位操作的指令 如ADD LD SUB 存放一个动态的移位计数值 也可为BITT指令存放一个动态位地址 EXP指令把计算出的数值存入TREG 而NORM指令则根据TREG中的值对累加器进行归一化处理 l中断寄存器 IMR IFR 中断屏蔽寄存器IMR在需要的时候独立屏蔽特定的中断 中断标志寄存器IFR则用来指明各个中断的当前状态 片上外设 常用特殊功能寄存器 11 2 时钟发生器时钟发生器为DSP提供时钟信号 由一个内部振荡器和一个锁相环电路组成 可通过晶振或外部的时钟驱动 时钟发生器工作时需要的参考时钟输入可有两种选择方式 1 由内部晶体振荡器产生 在DSP引脚X1和X2 CLKIN之间接一枚晶体 使能内部晶体振荡电路 2 由外部参考时钟源产生 外部时钟直接从X2 CLKIN引脚输入X1引脚悬空 片上外设 12 VC5402DSP内部高稳定性能的锁相环 PLL 电路能够锁定时钟振荡频率 并有信号提纯和频率放大作用 故可以选择一个频率比CPUCLK低的高稳定时钟源 降低对频率的要求 PLL的倍频大小与时钟模式寄存器的软件配置以及DSP管脚的硬件连接有关 即有软件 硬件两种配置方法 片上外设 13 1 软件配置PLLPLL的软件配置是指通过设置 C54xDSP时钟模式寄存器CLKMD的各状态位来选择配置PLL的倍频 分频系数 不仅能通过其时钟定标器配置各种乘法器系数 还可以直接开通或关断PLL CLKMD属存储器映像寄存器 位于数据存储区的第0页上 地址为0058H 15 121110 3210例 STM 9007H CLKMD 片上外设 PLL乘数 PLL除数 PLL计数器 PLL通 断位 PLL方式选择 PLL状态位 14 15 PLL倍频 分频系数配置方法 CPU时钟频率 CLKOUT CLKIN 实际倍频 分频系数 片上外设 16 2 硬件配置PLLPLL的硬件配置是指通过连接设置C54xDSP三个引脚CLKMD1 CLKMD2 CLKMD3的电平状态来选择配置PLL的倍频大小 需要指出的是 DSP复位时首先根据这3个引脚状态硬件配置PLL 芯片复位时 首先采样CLKMD1 CLKMD2和CLKMD3的管脚电平这三个管脚的状态同时决定了时钟模式寄存器CLKMD的初始值 芯片复位后 则可以通过编程修改CLKMD的内容 重新设置时钟方式以获得所需的PLL倍频 分频系数 VC5402DSP复位时的CLKMD初始值如下表所示 17 VC5402DSP复位时的时钟方式 18 3 硬件定时器 C5402内含2个带预定标器的16位定时器 最多扩展至20位 可通过编程设置特定的状态位实现停止 重启 复位或禁止等操作 定时 计数器在每一个时钟周期中减1 减至零则产生一个定时中断TINT 片上外设 三个定时器寄存器TIMPRDTCR控制定时器操作 启动位 加载位 19 3个与定时器相关的寄存器用来控制定时器操作 它们都是存储器映像寄存器 位于数据存储区的第0页上 片上外设 20 TCR寄存器所包含的各状态位主要用来设置硬件定时器的各控制位 15 1211109 6543 0 片上外设 21 正常情况下硬件定时器工作过程 当CLKOUT时钟信号沿到来时 触发4位预定标器PSC减1 直至PSC为0 然重装PSC参数 最大为1111B 同时TIM减1 当TIM为0时 用PRD值重装TIM 同时CPU发出TINT中断 并在TOUT引脚输出一个脉冲信号 脉冲宽度与CLKOUT一致 循环往复直至系统或定时器复位 可见 定时器发生中断 TINT 的频率为 即定时中断周期为 系统复位时 TIM和PRD都被置为最大值FFFFH TCR被置为0000H 即定时器停止状态位TSS和予定标分频系数TDDR均被置0 定时器启动 并将TDDR值加载到PSC中 将PRD值加载到TIM中 例 STM 0100H PRDSTM 0C20H TCRSTM 0008H IMRRSBXINTM 片上外设 22 4 中断系统 C54xDSP支持软件中断和硬件中断 软件中断由程序指令 INTR TRAP RESET 触发 硬件中断包括外部硬件中断和内部硬件中断两部分 分别由外部中断信号 如INT0 INT3 和片内外设中断信号 包括定时器中断 串行口中断 HPI口中断等 引发 C54xDSP的硬件中断请求按CPU的控制级别分为不可屏蔽与可屏蔽两大类 可通过编程控制可屏蔽中断的禁止与使能 C54xx最多可提供24 30个软 硬件 可 不可屏蔽 中断源分为11 17个中断优先级 VC5402DSP的中断源 中断地址 中断优先级及其功能详见下表说明 片上外设 23 VC5402DSP中断源的中断向量及硬件中断优先权 24 25 C54xDSP中断矢量表的中断向量地址由PMST寄存器中9位中断向量地址指针IPTR和左移2位后的中断向量序号 偏移地址 组成 例如 INT0的中断向量序号为16 10H 左移2位后变成1000000D 40H 当IPTR 0001H时 由此形成的中断向量地址为0000000011000000H 即00C0H 如下图所示 中断向量地址构成 26 sect vectors 中断矢量表程序段RSTBstartnopnopNMIrete 非屏蔽中断nopnopnopSINT17 space4 14 16 各软件中断INT0callfft 外中断0中断retenop space4 2 16TINT0Btimer 定时器0中断nopnopSINT6 space4 8 16 软件中断 C54xDSP的每个中断向量占用4个16位指令字地址 可放置4条指令 跳转到中断服务程序入口地址 共计约128字 1页 形成中断矢量表 中断矢量表可根据中断向量地址指针IPTR 或cmd文件 重新定位 27 MEMORY PAGE0 VECS origin 0 x0800 length 0 x80PROG origin 0 x2000 length 0 x1000PAGE1 DATA origin 0 x0500 length 0 x0500STACK origin 0 x3000 length 0 x1000 SECTIONS vectors VECSPAGE0 text PROGPAGE0 data DATAPAGE1 stack STACKPAGE1 bss DATAPAGE1 28 text 中断矢量表程序段 c int00bstartnopnopNMIrete 非屏蔽中断nopnopnopSINT17 space4 17 16 各软件中断TINT Btimer 定时器0中断向量nopnop space4 8 16 其他未使用中断 29 中断屏蔽寄存器IMR与中断标志寄存器IFR都是存储映像寄存器 位于数据存储区的第0页上 地址分别为0000H和0001H IMR用于屏蔽内部与外部的可屏蔽硬件中断 将IMR的相应位置1 则使能开放该中断 IFR的作用是当某个中断触发时 IFR的相应位置1 直到中断处理完毕为止 当IMR中同时有多个中断被使能时 CPU按中断优先级响应中断请求 15 1413121110987 6543210 片上外设 中断控制寄存器IMR IFR 30 中断寄存器IMR IFR各字段说明 31 TMSC5402DSP的硬件复位 复位时 IPTR所有位被置1 即IPTR 1FFHPC 1111111110000000 0FF80HMP MC位状态与MP MC引脚相同产生中断响应信号IACK产生同步复位信号 初始化片内外设初始化下列状态位INTM 1IFR 0ARP 0ASM 0AVIS 0BRAF 0DP 0CMPT 0OVLY 0DROM 0C 1C16 0CPL 0FRCT 0HM 0SXM 1OVA 0OVB 0OVM 0XF 1TC 1CLKOFF 0使得 ST0 1800hST1 2900h 一般有两种硬件复位方式 上电复位与工作中的按键复位 硬件复位后 程序计数器PC指向0FF80H 若MP MC 0 则从片内ROM的0FF80H处开始执行程序若MP MC 1 则从片外ROM的0FF80H处开始执行程序 由于硬件复位中断地址固定不变 欲改变中断入口地址 则需重新加载IPTR 这样中断向量就能被重新映射到其它入口地址 例如 复位后 执行STM 00A8H PMST 即用0001H加载IPTR 则中断向量就被转移到从0080H开始到00FFH结束的存储空间了 复位是一种非屏蔽外部中断 可以在上电时或其它任何时候对DSP进行复位操作 为保证DSP可靠复位 RS引脚上必须保持至少5个主频 CLKOUT 时钟周期的低电平 98 32 定时中断实验 title timeout global c int00 mmregs sect vectors rst B c int00NOPNOP space18 4 16tint0 Btimeout 发生tint0中断时 PC NOPNOP space8 4 16 33 text c int00LD 020h DP 置数据页指针STM 3000h SPSSBXINTMRSBXSXMSTM 00a8h PMST 改变中断向量映射到0 x0080STM 1007h CLKMDSTM 19999 PRDSTM 0E39h TCRSTM 0FFFFh IFRSTM 0008h IMRRSBXINTMLDMTCR AAND 0FFEFH ASTLMA TCRloopBlooptimeoutCALLMAXRETE end 34 MEMORY PAGE0 VECS origin 0 x0080 length 0 x80PROG origin 0 x2000 length 0 x1000PAGE1 DATA origin 0 x1000 length 0 x1000STACK origin 0 x3000 length 0 x1000 SECTIONS vectors VECSPAGE0 text PROGPAGE0 data DATAPAGE1 stack STACKPAGE1 bss DATAPAGE1 35 定时器设计举例 4ms方波信号发生器 设计分析 4ms周期方波高低电平持续时间分别为2ms 可由片上计数 定时器产生 采用定时器0中断 TINT0 方式 每中断一次 XF输出电平取反一次 则在XF端得到一个周期为4ms的方波 设计步骤 1 定时器初值计算定时周期T CPU时钟周期 PRD 1 TDDR 1 最大为1048576个CPU时钟周期此处因为输出脉冲周期为4ms 所以定时中断周期应为2ms 设CPU时钟频率为40MHz 25ns 由上式可知最大定时时间为25ms 取TDDR 9 则 PRD 2ms 25ns 9 1 1 7999 1F3Fh 2 定时器初始化设置关闭定时器 TCR中的TSS 1 加载PRD 设置TCR 启动定时器 TSS 0 TRB 1 3 定时器中断配置IFR的定时中断位TINT0 1 清除末处理完的定时中断 IMR的定时屏蔽位TINT0 1 开放定时器0中断 ST1的中断屏蔽控制位INTM清0 开放所有可屏蔽中断 STM 0008H IFR STM 0008H IMR RSBXINTM STM 0010h TCR0 STM 1F3Fh PRD0 STM 0E69H TCR0 36 定时器 计数器编程举例 例8 1设时钟频率为16 384MHz 在TMS320C5402的XF端输出一个周期为2s的方波 方波的周期由片上定时器0确定 采用中断方法实现 1 定时器0初值计算与初始化设置 1 本例中最大定时时间约为64ms 不能直接满足定时1s的要求 可以在中断程序中设置一个计数器 若定时1ms 则计数值应为1000 2 设置定时周期寄存器PRD 地址0025H 设TDDR 9 计算得PRD 1639 667H 3 设置定时控制寄存器TCR 地址0026H STM 669H TCR0 2 VC5402主时钟CLKOUT频率设置CLKOUT与外部晶体振荡器频率 在本系统中外部晶体振荡器的频率为16 384MHz 之间的关系由C5402的三个引脚CLKMD1 CLKMD2和CLKMD3的电平值决定 为使主时钟频率为16 384MHz 应使CLKMD1 1 CLKMD2 0 CLKMD3 1 即PLL 1 3 定时器0中断初始化设置 1 IMR中的定时屏蔽位TINT0置1 开放定时器0中断 STM 8 IMR 2 ST1中的中断标志位INTM位清零 开放全部中断 RSBXINTM 37 mmregs def c int00STACK usect STACK 100ht0 cout usect vars 1 计数器 1000 t0 flag usect vars 1 当前XF输出电平标志 t0 flag 1 则XF 1 t0 flag 0 则XF 0TVAL set1639 1640 10 61ns 1ms 因中断程序中计数器初值 t0 cout 1000 所以定时时间 1ms 1000 1sTIM0 set0024H 定时器0寄存器地址PRD0 set0025HTCR0 set0026H dataTIMES intTVAL 定时器时间常数 汇编源程序 38 text 中断矢量表程序段 c int00bstartnopnopNMIrete 非屏蔽中断nopnopnopSINT17 space4 17 16 各软件中断TINT Btimer 定时器0中断向量nopnop space4 8 16 其他未使用中断 汇编源程序 39 start LD 0 DPSTM STACK 100h SPSTM 07FFFh SWWSRSTM 1020h PMSTST 1000 t0 cout 计数器设置为1000 1s SSBXINTM 关全部中断LD TIMES AREADATIM0 初始化TIM PRDREADAPRD0STM 669h TCR0 初始化TCR0STM 8 IMR 初始化IMR 使能timer0中断RSBXINTM 开放全部中断WAIT BWAIT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论