DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt

上传人:max****ui 文档编号:8297552 上传时间:2020-03-28 格式:PPT 页数:79 大小:926KB
返回 下载 相关 举报
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第1页
第1页 / 共79页
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第2页
第2页 / 共79页
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第3页
第3页 / 共79页
点击查看更多>>
资源描述
第6章TMS320C54x片内外设 6 1时钟发生器6 2中断系统6 3定时器6 4主机接口6 5串行口 6 1时钟发生器 6 1 1时钟电路时钟发生器为TMS320C54x提供时钟信号 其包括一个内部振荡器和一个锁相环电路 时钟发生器可以由内部振荡电路或外部时钟源驱动 这两种驱动方式如图6 1所示 图6 1时钟电路 内部振荡电路驱动方式 将一个晶体跨接到X1和X2 CLKIN引脚两端 使内部振荡器工作 图中的电路工作在基波方式 建议C1和C2用10pF 如果工作在谐波方式 则还要加一些元件 外部时钟源驱动方式 将一个外部时钟信号直接加到X2 CLKIN引脚 X1空着不接 硬件配置的PLL 如TMS320C541 TMS320C542 TMS320C543 TMS320C545和TMS320C546 软件可编程PLL 如TMS320C545A TMS320C546A和TMS320C548 1 硬件配置的PLL通过设定TMS320C54x的3个引脚 CLKMD1 CLKMD2和CLKMD3 的状态来完成PLL的配置 时钟方式的配置方法如表6 1所示 表6 1时钟方式的配置方法 2 软件可编程PLL软件可编程PLL是一种高度灵活的时钟控制方式 它的时钟定标器提供各种时钟乘法器系数 并能直接接通和关断PLL PLL的锁定定时器可以用于延迟转换PLL的时钟方式 直到锁定为止 通过软件编程 可以选用以下两种时钟方式中的一种 PLL方式 输入时钟 CLKIN 乘以0 25 15共31个系数中的一个系数 这是靠PLL电路来完成的 DIV 分频器 方式 输入时钟 CLKIN 除以2或4 当采用DIV方式时 所有的模拟电路 包括PLL电路都关断 以使功耗最小 软件可编程PLL通过读 写时钟方式寄存器 CLKMD 来完成 6 1 2时钟模块编程软件可编程PLL可以对时钟方式寄存器 CLKMD 编程加载 以配置成所要求的时钟方式 CLKMD寄存器是16位存储器映像寄存器 地址为0058H 它是用来定义PLL时钟模块中的时钟配置 CLKMD的结构如图6 2所示 图6 2CLKMD的结构 表6 2时钟方式寄存器 CLKMD 各位段的功能 表6 3PLL的乘数 6 1 3低功耗 节电 模式TMS320C54x器件有四种节电模式 此时 可以通过停止DSP内部的不同时钟 使TMS320C54x的核心进入休眠状态 降低功耗 且能保持CPU中的内容 当节电模式结束时 唤醒DSP可以连续工作下去 通过执行IDLE1 IDLE2和IDLE3三条指令 或使信号为低电平 可使处理器进入不同的节电模式 表6 4列出了四种节电特性 表6 4四种节电工作方式 1 IDLE1模式IDLE1暂停所有的CPU活动 但片内外设仍在工作 片内外设如串口定时器等的中断可唤醒CPU结束节电工作方式 2 IDLE2模式IDLE2暂停CPU和片内外设的工作 由于片内外设也停止了工作 不能产生中断 因而其唤醒方式不同于IDLE1 但是 其功耗却明显降低 3 IDLE3模式IDLE3模式类同于IDLE2 它使片内锁相环PLL暂停工作 这样就完全使TMS320C54x停止了工作 与IDLE2相比 IDLE3更显著地降低了功耗 4 HOLD模式HOLD模式是另外一种节电模式 它使外部地址总线 数据总线和控制总线进入高阻状态 也可以使CPU暂停工作 这取决于HM位的状态 6 2中断系统 6 2 1中断结构1 中断类型TMS320C54x中断既支持硬件中断 也支持软件中断 软件中断由程序指令引起 如INTR TRAP或RESET 硬件中断有外部硬件中断和内部硬件中断 外部硬件中断由外部中断口的信号触发 内部硬件中断由片内外围电路的信号触发 软件中断不分优先级 硬件中断有优先级 当多个硬件中断同时请求时 TMS320C54x根据优先级别的不同对其进行服务 TMS320C54x的硬件中断优先级见附录3 其中 1为最高优先级 无论是硬件中断还是软件中断 TMS320C54x的中断可分为如下两大类 1 可屏蔽中断可屏蔽中断是可用软件来屏蔽或开放的中断 即通过对中断屏蔽寄存器 IMR 中的相应位和状态寄存器 ST1 中的中断允许控制位INTM编程来屏蔽或开放该中断 TMS320C54x最多可以支持16个用户可屏蔽中断 SINT15 SINT0 但有的处理器只用了其中的一部分 有些中断有两个名称 如TMS320C541 2 非可屏蔽中断非可屏蔽中断是不能用软件来屏蔽的中断 不受IMR和INTM位的影响 TMS320C54x对这一类中断总是响应的 并从主程序转移到中断服务程序 2 中断管理寄存器1 中断标志寄存器中断标志寄存器 IFR InterruptFlagRegister 是一个16位存储器映像的CPU寄存器 位于数据存储器空间内 地址为0001H 当一个中断出现的时候 TMS320C54xDSP收到了一个相应的中断请求 中断挂起 此时 IFR中相应的中断标志位为1 TMS320C541IFR的位定义如图6 3所示 各位对应的可屏蔽中断源的说明见附录3 6 3图TMS320C541的位定义 2 中断屏蔽寄存器在状态寄存器ST1中的第11位INTM是中断方式位 该位是可屏蔽中断的总允许控制位 INTM 0时 开放全部可屏蔽中断 INTM 1时 禁止所有可屏蔽中断 INTM不修改中断标志寄存器 IFR 和中断屏蔽寄存器 IMR InterruptMaskRegister 图6 4TMS320C541IMR的位定义 3 中断向量TMS320C54x给每个中断源都分配有一个确定的中断向量偏移地址 见附录3 该地址为可屏蔽中断服务程序进入各中断源服务程序的偏移地址 这样以来 可判断中断源的身份 并进入对应中断源的服务程序 图6 5中断向量地址的形成 6 2 2中断流程1 接受中断请求当发生硬件和软件指令请求中断时 IFR中相应的标志位置为有效电平 无论DSP是否响应中断 该标志都处于有效电平 在相应中断发生时 该标志自动清除 硬件中断有外部和内部之分 外部硬件中断由外部接口信号自动请求 内部硬件中断由片内外设信号自动请求 软件中断都是由程序中的指令INTR TRAP和RESET产生的 1 INTRK 该指令可启动TMS320C54x的任何中断 2 TRAPK TRAP与INTR的不同之处是TRAP中断时 不需要设置INTM位 3 RESET 该指令可在程序的任何时候发生 它使处理器返回一个已知状态 2 响应中断对于软件中断和非可屏蔽中断 CPU立即响应 如果是可屏蔽中断 只有满足以下条件才能响应 1 优先级别最高 2 ST1中的INTM位为0 允许可屏蔽中断 3 IMR中的相应位为1 允许可屏蔽中断 3 执行中断服务程序响应中断之后 CPU将执行下列操作 1 将PC值 即返回地址 压入堆栈 2 将中断向量的地址装入PC 将程序引导至中断服务程序ISR 3 现场保护 将某些要保护的寄存器和变量压入堆栈 4 执行中断服务程序ISR 5 恢复现场 以逆序将所保护的寄存器和变量弹出堆栈 6 中断返回 从堆栈弹出返回地址加载到PC 7 继续执行被中断的程序 图6 6中断操作流程图 6 2 3中断编程第4章的例20就是一个简单完整的中断程序模板 中断过程如图6 7所示 利用软件仿真外部硬件中断int2 程序中的开放中断和中断服务程序片段如下 STM 0 SWWSR 开中断RSBXINTMSTM 04H IMRINT 2 SFTAA 8 中断服务程序RETE 图6 7中断过程 INT 2引起标准中断矢量表程序相应的int2变化如下 中断矢量表程序 title vectors asm 定义段的名称为vectors refstart 程序入口 refINT 2 sect vectors reset Bstart 复位引起的中断nopnopnmi RETE 使能NMI中断NOPNOPNOP sint17 space4 16 程序内部的软件中断sint18 space4 16sint19 space4 16sint20 space4 16sint21 space4 16sint22 space4 16sint23 space4 16sint24 space4 16sint25 space4 16 sint26 space4 16sint27 space4 16sint28 space4 16sint29 space4 16sint30 space4 16int0 RETE 外部中断0NOPNOPNOP int1 RETE 外部中断1nopnopnopint2 bINT 2 外部中断2nopnopnop tint RETE 定时器中断NOPNOPNOPrint0 RETE 串口0接收中断NOPNOPNOP xint0 RETE 串口0发送中断NOPNOPNOPrint1 RETE 串口1接收中断NOPNOPNOP xint1 RETE 串口1发送中断NOPNOPNOPInt3 RETE 外部中断3nopnopnop end 6 3定时器 6 3 1定时器结构定时器主要由3个寄存器所组成 定时器寄存器 TIM TimerRegisters 定时器周期寄存器 PRD TimerPeriodRegisters 和定时器控制寄存器 TCR TimerControlRegisters 这3个寄存器都是16位存储器映像寄存器 在数据存储器中的地址分别为0024H 0025H和0026H 见附录4 TIM是一个减1计数器 PRD中存放时间常数 TCR中包含有定时器的控制位和状态位 定时器的功能框图如图6 8所示 图6 8定时器的功能框图 图6 8中含一个16位的主计数器 TIM 和一个4位预定标计数器 PSC TIM从周期寄存器PRD加载 PSC从周期寄存器TDDR加载 定时器的典型操作顺序为 1 在每个CLKOUT脉冲后PSC减1 直到它变为0 2 在下一个CLKOUT周期 TDDR加载新的除计数值到PSC 并使TIM减1 3 以同样方式 PSC和TIM连续进行减操作 直到TIM减为0 4 在下一个CLKOUT周期 将定时器中断信号 TINT 送到CPU 同时又用另一脉冲送到TOUT引脚 把新定时器计数值从PRD加载到TIM 并使PSC再次减1 因此 定时器中断的速率为 TINT速率 6 3 2定时器编程定时器可访问的寄存器有三个 TIM PRD和TCR TIM和PRD这两种寄存器共同工作 提供定时器的当前计数值 读TIM可以知道定时器中的当前值 在正常情况下 当TIM减到0后 PRD中的时间常数自动地加载到TIM 当系统复位 1 或定时器复位 TRB 1 时 PRD中的时间常数重新加载到TIM 控制寄存器 TCR 包含的控制位有下列功能 控制定时器模式 指定定时器预先定标计数器的当前计数值 重新加载定时器 启动 停止定时器 定义定时器的分频系数 TCR的结构如图6 9所示 图6 9TCR的结构 TCR中各控制位和状态位的功能描述如下 TDDR TimerDivide DownRatio 定时器分频系数 按此分频系数对CLKOUT进行分频 以改变定时周期 当PSC减到0后 以TDDR中的数重新加载PSC 复位时 TDDR各位清零 TSS TimerStopStatus 定时器停止状态位 用于停止或启动定时器 TSS 0时 定时器启动工作 TSS 1时 定时器停止工作 关闭定时器可以减小器件的功耗 复位时 TSS位清零 定时器立刻开始定时 TRB TimerReload 定时器重新加载位 用来复位片内定时器 当TRB置1时 TIM装入PRD中的数 并且PSC装入TDDR中的值 TRB总是读成0 PSC TimerPrescalerCounter 定时器预定标计数器 当PSC减到0后 PSC装入TDDR中的值 并且TIM减1 PSC可被TCR读取 但不能直接写入 Soft Free 这两位结合起来使用 以仿真在HLL调试程序遇到断点时定时器的状态 当Soft 0 Free 0时 定时器立即停止工作 当Soft 1 Free 0且计数器减到0时 定时器停止工作 当Soft x Free 1时 定时器继续运行 Res 保留位读成0 读TIM和TCR要用两条指令 在两次读之间有可能发生读数变化 因此 若需要精确的定时测量 就应当在读这两值之前先关闭定时器 复位时 TIM和PRD都置成最大值 FFFFH 定时器的分频系数TCR中的TDDR置0 定时器启动 定时器初始化步骤及其所对应的指令如下 1 将TCR中的TSS位 停止状态位 置1 关闭定时器 STM 0010H TCR 2 加载PRD STM 0100H PRD TINT周期 CLKOUT TDDR 1 PRD 1 3 重新加载TCR 使TDDR初始化 令TSS位为0 以接通CLKOUT 重新加载位TRB位置1 以使TIM减到0后重新加载PRD 启动定时器 STM 0C20H TCR SOft 1 Free 1 定时器遇到断点后继续进行若要开放定时中断 必须 假定INTM 1 做到以下几点 将IFR中的TINT位置1 清除尚未处理完的定时器中断 STM 0008H IFR 将IMR中的TINT位置1 开放定时器中断 STM 0008H IMR 将STI中的INTM位置0 从整体上开放中断 RSBXINTM 6 4主机接口 6 4 1HPI结构及其工作方式HPI主要由五个部分组成 如图6 10所示 1 HPI存储器 DARAM 用于TMS320C54x与主机间传送数据 2 HPI地址寄存器 HPIA 由主机对其直接访问 存放当前寻址HPI存储单元的地址 图6 10主机接口的组成框图 3 HPI数据锁存器 HPID 由主机对其直接访问 存放当前进行读 写的数据 4 HPI控制寄存器 HPIC TMS320C54x和主机都能对其直接访问 用于主处理器与DSP相互握手 实现相互中断请求 5 HPI控制逻辑 用于处理HPI与主机之间的接口信号 6 4 2HPI接口设计HPI提供灵活而方便的接口 接口外围电路简单 TMS320C54xHPI与主机相连时 几乎不需要附加其他的逻辑电路 图6 11给出了其连接框图 HPI接口信号可分为以下几类 数据总线 HD0 HD7 即数据总线宽度为8位 地址总线 控制线 握手线 图6 11TMS320C54xHPI与主机的连接框图 6 4 3HPI控制寄存器HPI有三个可访问的寄存器 HPIA HPID和HPIC 主机要通过HPI接口访问TMS320C54x片内RAM 首先要初始化HPIC 然后设置HPIA 最后读写TMS320C54x的片内RAM 对HIPD进行操作 HPIC是一个16位存储器映像寄存器 在数据存储器空间的地址为002CH HPIC中有4个状态位控制着HPI的操作 各位的含义如下 BOB 字节选择位 SMOD 寻址方式选择位 DSPINT 主机向TMS320C54x发出中断位 HINT TMS320C54x向主机发出中断位 图6 12主机和TMS320C54x访问HPIC寄存器的结果 a 主机读HPIC b 主机写HPIC c TMS320C54x读HPIC d TMS320C54x写HPIC 6 5串行口 6 5 1串行口概述TMS320C54x具有高速 全双工串行口 可以与串行设备 如编解码器和串行A D转换器 直接通信 也可用于多处理器系统中处理器之间的通信 所谓串行通信 就是发送器将并行数据逐位移出成为串行数据流 接收器将串行数据流以一定的时序和一定的格式呈现在连接收 发器的数据线上 TMS320C54x有三种类型的串行口 标准同步串行口 SPI 缓冲串行口 BSP 和时分多路串行口 TDM 标准同步串行口 SPI SerialPortInterface 有两个独立的缓冲器用于传送数据 接收缓冲器和发送缓冲器 每个缓冲器有一条可屏蔽的中断线 串行数据可以按8位字或16位字转换 缓冲串行口 BSP BufferedSerialPort 在标准同步串行口的基础上增加了一个自动缓冲单元 ABU BSP是一种增强型标准串行口 它是全双工的 并有两个可设置大小的缓冲区 缓冲同步串口支持高速的传送 并减少中断服务的次数 ABU利用独立于CPU的专用总线 让串行口直接读 写TMS320C54x的接收 发送缓冲区 时分多路复用串行接口 TDM Time DivisionMultiplexed 允许同一个串口以分时方式传送多路数据 TDM为多处理器通信提供了一种简单而有效的方式 6 5 2串行口的组成框图标准同步串行口由16位发送数据寄存器 DXR 接收数据寄存器 DRR 发送移位寄存器 XSR 接收移位寄存器 RSR 以及控制电路组成 每个串行口的发送和接收部分都有与之相关联的时钟 帧同步脉冲以及数据信号 其组成如图6 13所示 TMS320C54x通过3条信号线连接到串口 图6 14给出了两个TMS320C54x进行串行通信的硬件连接图 下面将介绍串行口接收和发送数据的过程 CPU发送数据时 先将要发送的数据写到DXR上 若上一个字已串行传送到串行发送数据引脚信号 DX 引脚上 此时 XSR是空的 则将DXR中的数据拷贝到XSR 在发送时的帧同步信号 FSX 和发送时钟信号 CLKX 的作用下 将XSR中的数据送到DX引脚输出 接收数据时 在接收时的帧同步信号 FSR 和接收时钟信号 CLKR 的作用下 将来自串行数据信号 DR 引脚的数据先移位到RSR 再从RSR拷贝至DRR CPU从DRR中读取数据 图6 13串行口的组成框图 图6 14串行口传送数据连接图 6 5 3串行口编程串行口可通过访问3个寄存器工作 这3个寄存器均为16位存储器映射寄存器 分别为 串行口控制寄存器 SPC 发送数据寄存器 DXR 和接收数据寄存器 DRR 它们在数据空间的地址见附录4 DXR和DRR可在串行操作时用于传送和获取数据 而TMS320C54x串行口的操作则是由SPC控制的 SPC的结构如图6 15所示 图6 15SPC的结构 SPC中各位的功能描述如下 Free Soft 仿真控制位 RSRFULL 接收移位寄存器已满标志位 发送移位寄存器已空标志位 XRDY 发送准备就绪位 RRDY 接收就绪位 IN1 当CLKX引脚作为输入时 该位反映输入信号的电平 IN0 当CLKR引脚作为输入时 该位反映输入信号的电平 接收复位标志 发送复位标志 TXM 发送方式 TXM 位 用于设定帧同步脉冲FSX的来源 下面给出串行口初始化的步骤和各个串行口控制寄存器的初始值 可管理访问串行口的缓冲器的方法有两种 查询法和中断法 下面针对这两种方法如何初始化分别作以介绍 1 查询法 查询串行口控制寄存器SPC 2 中断法 开放串行口中断 用这种方法进行串行口初始化的步骤如下 复位和初始化串行口 给SPC寄存器写入0038H 或0008H 具体配置为 CLKX使用内部时钟 CLKX信号作为输出 串口通信使用突发模式 使用内部帧同步信号 FSX信号作为输出 清除任何正在进行中的中断 给IFR置00C0H XINT RINT置位 允许串行口中断 给IMR置00C0H 从整体上开放中断 将ST1中的INTM位置0 启动串行口 给SPC置00F8H 或00C8H 写第一个数据值给DXR 串行口的中断服务子程序ISR具有如下功能 1 保存堆栈中任何被修改的内容 2 读DRR或写DXR 3 恢复保存在 1 中的内容 4 返回RETE
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!