1 / 123

第 7 章 TMS320C54x 片内外设及其应用

第 7 章 TMS320C54x 片内外设及其应用. C54x 片内集成了大量外部设备,包括 : 通用 I/O 引脚、定时器、主机接 口、串行口、时钟产生逻辑、等待状态产生器、直接存储器访问和外部总线接口等。. TMS320C54x DSP CPU and Peripherals Reference Set Volume 1_spru131g.pdf Volume 5 Enhanced Peripherals Set spru302.pdf. 第 7 章 TMS320C54x 片内外设及其应用. 其功能结构如图 7-1 所示 :.

neron
Download Presentation

第 7 章 TMS320C54x 片内外设及其应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 TMS320C54x片内外设及其应用 C54x片内集成了大量外部设备,包括: 通用I/O引脚、定时器、主机接 口、串行口、时钟产生逻辑、等待状态产生器、直接存储器访问和外部总线接口等。 • TMS320C54x DSP CPU and Peripherals Reference Set Volume 1_spru131g.pdf • Volume 5 Enhanced Peripherals Set spru302.pdf

  2. 第7章 TMS320C54x片内外设及其应用 其功能结构如图7-1所示 :

  3. 第7章 TMS320C54x片内外设及其应用 本章主要介绍GPIO引脚、定时器、HPI-8、McBSP和DMA的工作原理。 目录: • 7.1 通用I/O引脚(GPIO) • 7.2 定时器 • 7.3 主机接口HPI • 7.4 直接存储器访问DMA • 7.5 多通道缓冲串行口(McBSP)

  4. 第7章 TMS320C54x片内外设及其应用 7.1 通用I/O引脚(GPIO) 在C54x芯片中主要提供了两条通用I/O(General Purpose I/O,简称GPI/O)引脚: • 外部标志输出XF • 跳转控制输入BIO 本节将以TMS320VC5402A为例介绍这种引脚。

  5. 第7章 TMS320C54x片内外设及其应用 7.1.1 XF和BIO引脚 1. XF引脚 XF是一个输出引脚,输出电平可通过对ST1的D13位(XF)进行控制。此外,XF引脚有一定的驱动能力。 BIO引脚 它是一个输入引脚。 可以作为查询引脚; 也可作为外部中断申请引脚.

  6. 第7章 TMS320C54x片内外设及其应用 例7-1 采用XF引脚组成的告警电路。 告警时,用指令:SSBX XF,点亮LED; 不告警时,用指令:RSBX XF,熄灭LED。 采用XF引脚组成的告警电路:

  7. 第7章 TMS320C54x片内外设及其应用 例7-2 观察下列指令的执行情况。 BC 1500h, TC, NC, BIO;当TC=1、C=0且 ;BIO为低时,程序转移,PC=1500h。

  8. 第7章 TMS320C54x片内外设及其应用 7.1.2 其它GPIO引脚 以TMS320VC5402A芯片为例,下列一些引脚可以在不使用片内外设时被配置成为GPIO引脚: • 18条多缓冲串行口(McBSP)引脚:BCLKX0/1/2、BCLKR0/1/2、BDR0/1/2、BFSX0/1/2、BFSR0/1/2、BDX0/1/2 • 8条主机接口(HPI)的数据引脚:HD0~HD7。

  9. 第7章 TMS320C54x片内外设及其应用 配置方法: 1)令SPCR1.0位RRST=0,使McBSP的接收部分复位; 2)令SPCR2.0位XRST=0,使McBSP的发送部分复位; 1.多缓冲串行口(McBSP)的引脚作为GPIO 3)令PCR.13位XIOEN=1,使DX作为通用输出引脚;FSX和CLKX作为通用I/O。 4)令PCR.12位RIOEN=1,使DR和CLKS作为通用输入引脚;FSR和CLKR作为通用I/O。

  10. GPI/O引脚的配置、状态和驱动情况:

  11. 第7章 TMS320C54x片内外设及其应用 2. 主机接口(HPI)的数据引脚作为GPIO 当HPI被用作HPI16模式(引脚HPI16 = 1),或是禁用HPI(引脚HPIENA = 0)时,HPI的数据线可以作为GPIO来使用。 通过两个通用I/O控制寄存器(GPIOCR)和通用I/O状态寄存器(GPIOSR)来完成操作设置。

  12. 第7章 TMS320C54x片内外设及其应用 • GPIOCR用来将HD0~HD7配置为输入或输出引脚。DIRx=0 配置输入; DIRx=1 配置输出。 • GPIOCR(MMR地址003Ch)的结构如图:

  13. 第7章 TMS320C54x片内外设及其应用 • GPIOSR(MMR地址003Dh)用来反映GPI/O引脚的输入状态(当HD0~HD7被配置为输入引脚时),或是用来给出引脚的输出电平(当HD0~HD7被配置为输出引脚时)。 结构如图所示 :

  14. 例7-3 将HPI的HD0–3 设为输入引脚, HD4–7为输出引脚, HD0–3 的状态存储到 AR3; 设置 HD4–7 为 0101b. GPIOCR .set 3Ch;MMR GPIOCR address is 3Ch GPIOSR .set 3Dh;MMR GPIOSR address is 3Dh .text STM #0F0h, GPIOCR ; HD0-3 输入,HD4-7 输出 . . . LDM GPIOSR, A ;得到 GPIOSR值. AND #0Fh, A;Mask off MSBs. STLM A, AR3;Store value of HD0-3 in AR3. STM #050h, GPIOSR;Set HD4-7 to 0101b. . . .

  15. 7.2 定时器 7.2.1 定时器的工作原理 定时器用于定时控制、延时、外部事件的计数等。C54x片内集成了1~4个可编程的定时器,下图示出了一个片内定时器的结构: 定时器控制寄存器TCR

  16. 第7章 TMS320C54x片内外设及其应用 定时器的组成: • 定时寄存器TIM • 周期寄存器PRD • 预分频计数器PSC • 预分频系数TDDR及控制逻辑电路等

  17. 第7章 TMS320C54x片内外设及其应用 它分为两个模块: • 主定时模块:包括TIM和PRD,地址分别是0024h和0025h。 • 预分频模块:由PSC和TDDR组成,它们分别位于定时器控制寄存器TCR的D9~D6、D3~D0位。

  18. 11 10 15-12 9-6 5 4 3-0 第7章 TMS320C54x片内外设及其应用 1.定时器控制寄存器TCR TCR地址为0026h。它包含了定时器的控制与状态信息以及预分频计数器PSC、预分频系数TDDR等。 其结构如下图所示 :

  19. TCR各位的作用如下表:

  20. 第7章 TMS320C54x片内外设及其应用 2. 定时器的工作原理 计数器的初值装入: SRESET是DSP的复位信号, TRB为定时器的复位信号,两者中有一个为1,就可使或门3输出使能信号,并通过或门1和或门2产生使能信号,将PRD的值装入TIM;将TDDR的值装入PSC。这就是计数器的初值装入。

  21. 第7章 TMS320C54x片内外设及其应用 在DSP复位时(TSS为0)或将TSS清0时,与门5被使能,CPU clock将作为计数源送入PSC的计数端。 PSC在计数初值的基础上每来一个计数脉冲就减1计数,当减至0时,在下一个脉冲到来时会产生一个借位,该借位脉冲将作为TIM的计数脉冲,使TIM减1,同时通过或门2使能,将TDDR值重新装入PSC,PSC在此初值下继续减1计数。

  22. 第7章 TMS320C54x片内外设及其应用 当将TSS位置1时,与门5关闭,不允许CPU clock输入,并且停止定时器的工作。 TIM的计数源是PSC的溢出借位信号。TIM在计数初值的基础上每来一个计数脉冲就减1计数,当减至0时会产生一个借位,并引发下列行为: 1)向主机发出中断申请信号TINT;

  23. 定时器定时时间的计算公式如下: 定时周期=CLKOUT×(TDDR+1)×(PRD+1) 其中:CLKOUT是CPU的时钟周期。 第7章 TMS320C54x片内外设及其应用 TIM减至0时产生一个借位,并引发下列行为: 1)向主机发出中断申请信号TINT; 2)通过驱动门4和引脚TOUT输出信号; 3)通过或门1使能,将PRD的值重新装入TIM, 作为TIM的计数初值。从而完成定时工作的一个基本过程。

  24. 第7章 TMS320C54x片内外设及其应用 7.2.2 定时器的编程 在应用编程中应该掌握的三个关键点: • 怎样计算计数初值 • 怎样对定时器进行初始化 • 怎样配置定时器的中断

  25. 第7章 TMS320C54x片内外设及其应用 1.怎样计算计数初值 例:定时周期=1ms,设时钟周期 CLKOUT=1/80M=12.5ns,求TDDR及PRD。 先假定:分频系数TDDR=9 定时周期 =CLKOUT×(TDDR+1)×(PRD+1) =12.5×(9+1) ×(PRD+1) =1ms=1×106ns 求得:PRD=7999(10)=1F3FH;

  26. 第7章 TMS320C54x片内外设及其应用 2.怎样对定时器进行初始化 通过下列步骤对定时器进行初始化: 1)将TCR的TSS置1,关闭定时器 2)装载PRD 3)初始化TDDR:将TRB置1去重新装载定时器的 初值,将TSS清0以使能定时器。

  27. 11 10 15-12 9-6 5 4 3-0 第7章 TMS320C54x片内外设及其应用 例: STM #0010H,TCR;TSS=1,关闭定时器 STM #1F3FH,PRD;加载周期寄存器 STM #0E69H,TCR;TDDR=9,TRB=1,装载 ;TIM及PSC ,TSS=0,启 ;动定时器

  28. 第7章 TMS320C54x片内外设及其应用 3.怎样配置定时器的中断 假定INTM=1,定时器中断的设置方法如下: 1)给IFR的TINT位写入1(必须写1才能使该位清零),以清除没有处理完的定时器中断; 2)给IMR的TINT位写入1,以使能定时器的中断; 3)INTM位清0,使能全部可屏蔽中断。

  29. 第7章 TMS320C54x片内外设及其应用 例: STM #0008H,IFR;清除没处理完的定时器1中断 STM #0008H,IMR;开放定时器1中断 RSBX INTM ;开总中断 TINT IFR、IMR

  30. 第7章 TMS320C54x片内外设及其应用 7.2.2 定时器的编程 • 【例7-4】采用片内定时器实现方波信号发生器。在引脚XF端输出周期为2s、占空比为50%的方波信号。设时钟周期CLKOUT=1/80M=12.5ns,通过中断方式完成编程。 • 取定时周期=1ms,分频系数TDDR=9; • 定时周期 =CLKOUT×(TDDR+1)×(PRD+1) =12.5×(9+1)×(PRD+1) =1ms • 求得:PRD=7999(10)=1F3FH • 用中断次数进行计数1000,完成总定时周期:1000×1ms=1s

  31. 7.2.2 定时器的编程 (1)主程序清单 .file "timer.asm" .mmregs ;54X 存储器影像寄存器定义 .global main ;声明 main为全局符号 .deftimer_iserv TIM0 .set 0x0024 ; 定时器0定时寄存器 PRD0 .set 0x0025 ; 定时器0周期寄存器0 TCR0 .set 0x0026 ; 定时器0控制寄存器 TIM0_VAL .set 0x1F3F ; 定时0定时寄存器赋值为1F3Fh ; ;(此程序没有使用 );(十进制7999) PRD0_VAL .set 0x1F3F ;周期寄存器赋值为1F3Fh (7999) TCR0_VAL .set 0x0E69 ; 控制寄存器赋值为0E69h,0000 11100110 1001 ; 即free.soft=11b, PSC=1001b,TRB=1,TSS=0, TDDR=1001b

  32. 7.2.2 定时器的编程 (1)主程序清单 ;SWWSR .set 0x0028 ; software wait-state register SWWSR_VAL .set 0x36DB ; (0011011011011011b)三个空间都插入了3个等待周期 SWCR .set 0x002B ; 软件等待状态控制寄存器 SWCR_VAL .set 0x0001 ; 三个空间都插入的3个等待周期都乘以2 TINT0_ENBL .set 0x0008 ;开放TIMER0中断 ;CLKMD .set 0x0058 ;锁相环PLL软件控制时钟方式寄存器MMR地址 PLLX5 .set 0x43EF ;锁相环PLL软件控制时钟方式寄存器CLKMD的设置字: ; 01000011 1110 1111,外部时钟16MHz, 5倍频到80MHz, PLLCOUNT=125 (见第九章347页) (见第九章348页) (见第九章337页)

  33. 7.2.2 定时器的编程 OVLY_1 .set 0x00A0 ;PMST中: 0000 00001010 0000 IPTROVLY stack_size .set 100 stack .usect ".stack" , stack_size sys_stack .set stack+stack_size .bss XF_FLAG, 1 .bss LED_DISP, 1 ;此程序没有使用 .text main: STM #sys_stack, SP ANDM #0fffeh, *(SP) ; 堆栈指针长字(双字)对齐, *(SP)可换成SP STM #OVLY_1, PMST ; 置OVLY=1, MP/MC=0, DROM=0 STM #SWWSR_VAL, SWWSR ;插入三个等待周期

  34. 7.2.2 定时器的编程 * ; PLL的倍频,分频切换(见第九章339页) STM #0,CLKMD;切换到DIV方式 DIV_Status: LDM CLKMD,B AND #01h,B;测试PLLSTATUS位, BC DIV_Status,BNEQ ;若B=0, 则已切换到DIV方式 STM PLLX5,CLKMD;设置锁相环为PLL×5方式 PLL_Status: LDM CLKMD,B AND #01h,B;测试PLLSTATUS位, BC PLL_Status,BEQ ;若B≠0,则已切换到倍频方式

  35. 7.2.2 定时器的编程 * ;配置和启动定时器 STM #TINT0_ENBL, IMR ; 开TINT中断 STM #XF_FLAG, AR1 ; AR1中是XF状态XF_FLAG的地址 ST #0, *AR1 ; 复位XF状态为0 STM #03E8h, AR2 ; 倒计时中断次数1000(03E8h) STM #PRD0_VAL, PRD ; 装入主定时模块计数初值1F3Fh STM #TCR0_VAL, TCR ;装入预分频模块计数初值9, TSS=0,启动定时器 RSBX INTM ;开总中断 WAIT: BD WAIT NOP NOP NOP

  36. 7.2.2 定时器的编程 * ;中断服务程序 timer_iserv: BANZ EXIT_ISERV, *AR2- STM #03E8h, AR2 ; 重载倒计时中断次数1000(03E8h) BITF *AR1, #1h ;位测试XF_FLAG的最低位,AR1中是 XF_FLAG的地址 BC XF_0, TC ;若TC=1则XF_FLAG最低位为1, 转XF_0 SSBX XF ;XF置1 ST #01h, *AR1 ;标志位XF_FLAG置1 B EXIT_ISERV XF_0: RSBX XF ;XF清0 ST #00h, *AR1 ;标志位XF_FLAG清0 EXIT_ISERV: RETE .end

  37. 7.2.2 定时器的编程 (2)中断向量程序清单 VECTORS.ASM .mmregs ;54X 存储器影像寄存器定义 .ref main ;声明 main为其他函数定义符号 .ref timer_iserv .sect ".vectors" IV_RESET: BD main ;复位中断,跳转到主程序入口 nop nop IV_NMI: rete ;NMI中断,开中断返回 nop nop nop SINT17:rete ;SINT17中断,开中断返回 nop nop nop

  38. 7.2.2 定时器的编程 (2)中断向量程序清单 SINT18: rete nop nop nop SINT19: rete nop nop nop SINT20: rete nop nop nop SINT21: rete nop nop nop SINT22: rete nop nop nop SINT23: rete nop nop nop SINT24: rete nop nop nop SINT25: rete nop nop nop SINT26: rete nop nop nop SINT27: rete nop nop nop SINT28: rete nop nop nop SINT29: rete nop nop nop

  39. 7.2.2 定时器的编程 SINT30: rete nop nop nop INT0: rete nop nop nop INT1: rete nop nop nop INT2: rete nop nop nop TINT0: b timer_iserv nop nop BRINT0: rete nop nop nop BXINT0: rete nop nop nop DMAC0: rete nop nop nop

  40. 7.2.2 定时器的编程 TINT1: rete nop nop nop INT3: rete nop nop nop HPINT: rete nop nop nop BRINT1: rete nop nop nop BXINT1: rete nop nop nop DMAC4: rete nop nop nop DMAC5: rete nop nop nop RESERVED .space 8*16 .end

  41. 7.2.2 定时器的编程 MEMORY { PAGE 0 : PROG: origin = 0x2400, length = 0x1b80 VECT: origin = 0x0080, length = 0x80 PAGE 1 : DARAM: origin = 0x0100, length = 0x1f80 STACK: origin = 0x2000, length = 0x400 } (3)命令文件清单 ucdos.CMD SECTIONS { .text : load = PROG page 0 .data : load = PROG page 0 .bss : load = DARAM page 1 .stack : load = STACK page 1 .vectors : >VECT page 0 }

  42. 第7章 TMS320C54x片内外设及其应用 7.3 主机接口HPI • C54x的主机接口HPI(Host Port Interface)是一个并行接口,用来实现DSP与外部主机芯片或其它微处理器的并行通信。 • 根据数据线的宽度不同,HPI又分为8位的或者16位的;根据功能的不同,又分为标准型HPI或是增强型 HPI。 • 标准型HPI:主机访问片内固定的2kRAM,异步; 增强型HPI:主机和DSP都能访问片内所有RAM,同步 (C542,545,548和549) (C54XX系列,例如C5402)

  43. 7.3.1 HPI-8的结构 8位的主机接口HPI-8主要由三个寄存器HPIC、HPID和HPIA以及HPI控制逻辑组成。其结构如下图所示 :

  44. 第7章 TMS320C54x片内外设及其应用 2. HPI的寄存器 HPI有三个寄存器 : • 地址寄存器HPIA • 数据寄存器HPID • 16位控制寄存器HPIC

  45. 第7章 TMS320C54x片内外设及其应用 1.有关引脚(20PIN)及信号 • HD0~HD7:输入/输出/高阻,双向并行数据总线 • HCNTL0、HCNTL1:输入,主机通过这两个引脚 来选择要访问的HPI寄存器。 • HBIL:输入,字节(第一(HBIL =0)、二字节)识别信号。 • HCS :输入,片选信号输入端。 • HDS1、HDS2:输入,数据选通信号。

  46. 第7章 TMS320C54x片内外设及其应用 1.有关引脚(20PIN)及信号(续) • HAS:输入,地址选通信号。 • HR/W:输入,HPI的读/写信号。 • HINT:输出/高阻,中断输出信号。 • HRDY:输出/高阻,HPI准备好信号。 • HPIENA:输入,HPI模式选择信号。 • HPI16(对16位HPI接口):输入, HPI16模式选择信号。 (C5402A是HPI8/16接口,有HPI16 ; C5402是HPI8接口,无HPI16)

  47. 第7章 TMS320C54x片内外设及其应用 • 注意: 1)对主机来说,HPIC的高8位和低8位内容相同。而对DSP来说,只使用HPIC的低8位,不使用高8位。 2)DSP可以写HINT位,而主机读HPIC要分两次字节读完成。 3)主机对HPIC的读/写和DSP对HPIC的读/写会有不同的位定义。这反映在下图中:

  48. 第7章 TMS320C54x片内外设及其应用 主机从HPIC寄存器读出数据 主机写入HPIC寄存器的数据 C54x从HPIC寄存器读出的数据 C54x写入HPIC寄存器的数据 标准HPI-8的HPIC寄存器位结构图(C542,545,548和549)

  49. 第7章 TMS320C54x片内外设及其应用 主机从HPIC寄存器读出数据 主机写入HPIC寄存器的数据 C54xx从HPIC寄存器读出的数据 C54xx写入HPIC寄存器的数据 C54XX系列增强HPI-8的HPIC寄存器位结构图 † This bit is only available on ’54x devices with on-chip RAM mapped in extended addresses. ‡ This bit is not available on the ’5410. X denotes bits that are unaffected by writes, or bits that can be read as either 1 or 0.

More Related