第8章 TMS320C54x片内外设及应用实例 8.1 定时器 8.2 时钟发生器 8.3 定时器/计数器编程举例 8.1 定时器 8.2 时钟发生器 8.3 定时器/计数器编程举例 8.4 多通道缓冲串口(McBSP) 8.5 多通道缓冲串口应用实例 8.6 主机接口(HPI) 8.7 外部总线操作
8.1 定时器 在工业应用中,计数器和定时器常用于检测和控制中的时序协调及控制。 8.1 定时器 在工业应用中,计数器和定时器常用于检测和控制中的时序协调及控制。 C54x的片内定时器是一个可编程的定时器,可用于周期地产生中断。定时器的最高分辨率为处理器的CPU时钟速度。通过带4位预定标器的16位计数器,可以获得较大范围的定时频率。
1. 定时器的组成 定时器的组成框图如图8-1所示。它有3个存储器映象寄存器:TIM、PRD和TCR。这3个寄存器在数据存储器中的地址及其说明如表8-1所示。定时器控制寄存器(TCR)位结构如图8-2所示。 返回首页
图8-1 定时器组成框图 周期寄存器 PRD 定时寄存器 TIM 借位 1≤ 3 预定标计数器 PSC 预定标分频系数 TDDR 2 1 & SRESET TRB CLKOUT TSS TINT TOUT 主定时模块 预定标模块 图8-1 定时器组成框图
表8-1 定时器的三个寄存器 Timer0地址 Timer1地址 寄存器 说明 0024H 0030H TIM 表8-1 定时器的三个寄存器 Timer0地址 Timer1地址 寄存器 说明 0024H 0030H TIM 定时器寄存器,每计数一次自动减1 0025H 0031H PRD 定时器周期寄存器,当TIM减为0后,CPU自动将PRD的值装入TIM 0026H 0032H TCR 定时器控制寄存器,包含定时器的控制和状态位
1. 定时器的组成 定时周期寄存器PRD 用来存放定时时间。地址:0025H 定时寄存器TIM 16位减1计数器。地址:0024H 定时控制寄存器TCR 存放定时器的控制位和状态位。地址:0026H。 逻辑控制电路 用来控制定时器协调工作。
1. 定时器的组成 逻辑控制电路:由三个或门和一个与门组成。 复位SRESET和TRB: ① 通过或门1、3控制PRD的加载计数; ② 通过或门1、2控制PSC的加载计数。 停止控制位TSS:通过与门屏蔽CLKOUT信号来控制定时器的启动。 TINT——外部定时中断,定时时间到发中断; TOUT——定时输出,输出定时波形。
2. 定时器工作原理 主定时模块包括PRD和TIM,由预定标模块定时,预定标模块每输出一个时钟,TIM减1。当TIM减到0后,TIM装入PRD的值。 当设备复位(SRESET=1)或者定时器复位(TRB=1)时,PRD的内容将装入TIM中。 主定时模块的定时中断(TINT)信号输出至CPU以及定时器的输出引脚TOUT。
2. 定时器工作原理 预定标模块包括TCR中的TDDR和PSC位,由CPU时钟定时,每来一个CPU时钟,PSC值减1。 当PSC减至0、设备复位或定时器复位时,TDDR的内容复制到PSC中。 4位预定标计数器PSC和16位定时计数器TIM组成一个20位计数器,定时器每接收一个CPU时钟减1,当计数器减到0时,产生定时中断(TINT),同时PSC和TIM重新装入预设的值。
2. 定时器工作原理 定时器的工作过程: 由逻辑控制电路控制定时器运行。 ① 定时分频系数和周期数分别装入TCD和PRC寄存器中; ② 每来一个定时脉冲CLKOUT,计数器PSC减1; ③ 当PSC减至0时,PSC产生借位信号; ④ 在PSC的借位信号作用下,TIM减1计数,同时将分频系数装入PSC,重新计数; ⑤ 当TIM减到0时,定时时间到,由借位产生定时中断TINT和定时输出TOUT,并将PRD中的时间常数重新装入TIM。
16位存储器映像寄存器,包含定时器的控制位和状态位。 3. 定时控制寄存器TCR 16位存储器映像寄存器,包含定时器的控制位和状态位。 15 ~ 12 11 10 9 ~ 6 5 4 3 ~ 0 TDR 0026h 保留 Soft Free PSC TRB TSS TDDR 保留位 软件调试控制位 预定标计数器 重新 加载位 停止 状态位 分 频 系 数 图8-2 TCR位结构图
3. 定时控制寄存器TCR TDDR:定时器分频系数,用来对CLKOUT进行分频,以改变定时周期。 最大预定标值为16,最小预定标值为1。 当PSC减到0后,以TDDR中的数加载PSC。 TSS:定时器停止状态位,用于停止或启动定时器 复位时,TSS位清0,定时器立即定时。 TSS=0,定时器启动工作; TSS=1,定时器停止工作。
3. 定时控制寄存器TCR TRB:定时器重新加载位,用来复位片内定时器。 当TRB置1时,以PRD中的数加载TIM,以及以TDDR中的值加载PSC。TRB总是读成0。 PSC:定时器预定标计数器,其标定范围为1~16。当PSC减到0后,TDDR位域中的数加载到PSC, TIM减1。
Free、Soft:软件调试控制位。Free和Soft位结合使用,用来控制调试程序断点操作情况下的定时器工作状态。 3. 定时控制寄存器TCR Free、Soft:软件调试控制位。Free和Soft位结合使用,用来控制调试程序断点操作情况下的定时器工作状态。 Soft Free 定时器状态 定时器立即停止工作 1 当计数器减至0时停止工作 X 定时器继续工作 保留:读成0。
4. 定时器的初始化 定时器的基准工作脉冲由CLKOUT提供,每来一个脉冲预定标计数器PSC减1,当PSC减至0时,下一个脉冲到来,PSC产生借位。 借位信号分别控制定时计数器TIM减1和或门2的输出,重新将TDDR的内容加载预定标计数器PSC,从而完成定时工作的一个基本周期。 定时器的定时时间为: 定时周期 = CLKOUT×(TDDR+1)×(PRD+1)
4. 定时器的初始化 定时器初始化步骤如下: ① TCR的TSS位置1,关闭定时器,停止定时; ② 装载PRD值; ③ 重新装入TCR,初始化TDDR,设置TSS=0和TRB=1,重装载定时器周期。启动定时器。 设置定时器中断方法(INTM=1)如下: ● 将IFR中的TINT置1,以清除尚未处理完的定时器中断; ● 将IMR中的TINT置1,启动定时器中断。 ● 将INTM置0,启动全部中断。
4. 定时器的初始化 复位时,TIM和PRD被设置为最大值(0FFFFH),TCR中的TDDR置0,定时器可以通过启动定时控制寄存器(TCR)完成以下操作: ● 设定定时器的工作方式; ● 设定预定标计数器中的当前数值; ● 启动或停止定时器; ● 重新装载定时器; ● 设置定时器的分频值。
4. 定时器的初始化 【例7.2.1】定时器自动装载定时。 TSS=0:启动定时器;TRB=1:自动装载;TDDR=Ah:分频系数10 soft=1,free=0:计数器减至0时,停止工作;TCR=0AAAH。 定时周期:0101H;关闭定时器中断:IFR=0008H; 开放定时器中断:IMR=0008H。 STM #0000H,SWWSR STM #0010H,TCR STM #0101H,PRD STM #0AAAH,TCR STM #0080H,IFR STM #0080H,IMR RSBX INTM ;不插等待时间 ;TSS=0关闭定时器 ;加载周期寄存器(PRD) ;装入定时器控制字,启动定时器 ;消除尚未处理完的定时器中断 ;开放定时器中断 ;开放中断
8.2 时钟发生器 8.2.1时钟信号的产生 8.2.2锁相环PLL 返回首页
时钟电路用来为’C54x芯片提供时钟信号,由一个内部振荡器和一个锁相环PLL组成,可通过芯片内部的晶体振荡器或外部的时钟电路驱动。 8.2.1时钟信号的产生 ’C54x时钟信号的产生有两种方法: 使用外部时钟源; 使用芯片内部的振荡器。
8.2.1时钟信号的产生 (1) 使用外部时钟源 将外部时钟信号直接加到DSP芯片的X2/CLKIN引脚,而X1引脚悬空。 X1 VDD 外部晶振 X2/CLKIN X1
8.2.1时钟信号的产生 (2)使用芯片内部的振荡器 在芯片的X1和X2/CLKIN引脚之间接入一个晶体,用于启动内部振荡器。 C1=C2=20pF
8.2.2锁相环PLL 锁相环PLL具有频率放大和时钟信号提纯的作用,利用PLL的锁定特性可以对时钟频率进行锁定,为芯片提供高稳定频率的时钟信号。 锁相环还可以对外部时钟频率进行倍频,使外部时钟源的频率低于CPU的机器周期。 ’C54x的锁相环有两种形式: 硬件配置的PLL: 软件可编程PLL: 用于’C541、’C542、’C543、’C545和’C546; 用于’C545A、’C546A、’C548、’C549、’C5402、’C5410和’C5420。
8.2.1锁相环PLL (1) 硬件配置的PLL 硬件配置的PLL是通过设定’C54x的3个时钟模式引脚(CLKMD1、CLKMD2和CLKMD3)的状态来选择时钟方式。 上电复位时,’C54x根据这三个引脚的电平,决定PLL的工作状态,并启动PLL工作。
(1) 硬件配置的PLL 硬件PLL的配置方式 ① 时钟方式的选择方案是针对不同的 ’C54x芯片而言。 引脚状态 时钟方式 CLKMD1 CLKMD2 CLKMD3 方案一 方案二 1 工作频率=外部时钟源3 工作频率=外部时钟源5 工作频率=外部时钟源2 工作频率=外部时钟源4 工作频率=内部时钟器3 工作频率=内部时钟器5 工作频率=外部时钟源1.5 工作频率=外部时钟源4.5 工作频率=外部时钟源2 工作频率=内部时钟器2 工作频率=外部时钟源1 停止工作 ① 时钟方式的选择方案是针对不同的 ’C54x芯片而言。 ② 停止工作方式等效于IDLE3省电方式。 注意:
(1) 硬件配置的PLL 进行硬件配置时,其工作频率的是固定的。 若不使用PLL,则对内部或外部时钟分频,CPU的时钟频率等于内部振荡器频率或外部时钟频率的一半; 若使用PLL,则对内部或外部时钟倍频,CPU的时钟频率等于内部振荡器或外部时钟源频率乘以系数N, 即: 时钟频率 = (PLL×N)
8.2.1锁相环PLL (2) 软件配置的PLL 软件配置的PLL具有高度的灵活性。它是利用编程对时钟方式寄存器CLKMD的设定,来定义PLL时钟模块中的时钟配置。 软件PLL的时钟定标器提供各种时钟乘法器系数,并能直接接通和关断PLL。 软件PLL的锁定定时器可以用于延迟转换PLL的时钟方式,直到锁定为止。
用来定义PLL时钟模块中的时钟配置,为用户提供各种时钟乘系数,并能直接通断PLL。 ① 时钟方式寄存器CLKMD 用来定义PLL时钟模块中的时钟配置,为用户提供各种时钟乘系数,并能直接通断PLL。 15 ~ 12 11 10 ~ 3 2 1 CLKMD 0058H PLLMUL PLLDIV PLLCOUNT PLLON/OFF PLLNDIV PLLSTATUS PLLMUL PLL乘数 PLL除数 PLLDIV PLL计数器 PLLCOUNT PLL通/断位 PLLON/OFF PLLNDIV 时钟发生器 选择位 PLLSTATUS PLL工作 状态位 时钟发生器 选择位 PLL工作 状态位 PLL通/断位 PLL乘数 PLL除数 PLL计数器 当PLL STATUS=0时,时钟发生器工作于分频DIV方式; 当PLL STATUS=1时,时钟发生器工作于倍频PLL方式。 PLLCOUNT:PLL的减法计数器,读/写位。 用来对PLL开始工作到锁定时钟信号之前的一段时间进行计数定时,以保证频率转换的可靠性。 PLLON/OFF PLLNDIV PLL状态 断开 1 工作 PLLNDIV:时钟发生器选择位,读/写位。 用来决定时钟发生器的工作方式。与PLLMUL和PLLDIV位同时定义频率的乘数。 PLLON/OFF:PLL的通/断位,读/写位。 与PLLNDIV一起决定PLL是否工作。 PLLMUL:为PLL的倍频乘数,读/写位。 与PLLDIV和PLLNDIV一起决定PLL的频率。 PLLDIV:为PLL的分频除数,读/写位。 与PLLMUL和PLL NDIV一起决定PLL的频率。 PLL STATUS:PLL的工作状态位,只读位。 用来指示时钟发生器的工作方式。 当PLLNDIV=0时,采用分频DIV方式; 当PLLNDIV=1时,采用倍频PLL方式。
(2) 软件配置的PLL ② 软件PLL的工作方式 通过软件编程,可以使软件PLL实现两种工作方式: PLL方式,即倍频方式。 芯片的工作频率等于输入时钟CLKIN乘以PLL的乘系数,共有31个乘系数,取值范围为0.25~15。 DIV方式,即分频方式。 对输入时钟CLKIN进行2分频或4分频。
软件PLL的乘系数可通过PLLNDIV、PLLDIV和PLLMUL的不同组合确定。 1 X 0~14 15 0或偶数 奇数 0.5 0.25 PLLMUL+1 (PLLMUL+1)2 PLLMUL4
(2) 软件配置的PLL ③ 软件PLL的乘系数 根据PLLNDIV、PLLDIV和PLLMUL的不同组合,软件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。
当芯片复位后,时钟方式寄存器CLKMD的值是由3个外部引脚(CLKMD1、CLKMD2和CLKMD3)的状态设定,从而确定了芯片的时钟方式。 (2) 软件配置的PLL ④ 复位时钟方式 ’C5402复位时设置的时钟方式: 当芯片复位后,时钟方式寄存器CLKMD的值是由3个外部引脚(CLKMD1、CLKMD2和CLKMD3)的状态设定,从而确定了芯片的时钟方式。 CLKMD1 CLKMD2 CLKMD3 CLKMD的复位值 时钟方式 E007H PLL×15 1 9007H PLL×10 4007H PLL×5 1007H PLL×2 F007H PLL×1 0000H 2分频(PLL无效) F000H 4分频(PLL无效) —— 保留
(2) 软件配置的PLL ④ 复位时钟方式 通常,DSP系统的程序需要从外部低速EPROM中调入,可以采用较低工作频率的复位时钟方式,待程序全部调入内部快速RAM后,再用软件重新设置CLKMD寄存器的值,使’C54x工作在较高的频率上。 例如,外部时钟频率为10MHz,CLKMD1~CLKMD3=111,时钟方式为2分频。 复位后,工作频率为10MHz÷2=5MHz。 用软件重新设置CLKMD寄存器,就可以改变DSP的工作频率,如设定CLKMD=9007H,则工作频率为10×10MHz=100MHz。
(2) 软件配置的PLL ⑤ 倍频切换 实现倍频切换的步骤: 若要改变PLL的倍频,必须先将PLL的工作方式从倍频方式(PLL方式)切换到分频方式(DIV方式),然后再切换到新的倍频方式。 步骤1:复位PLLNDIV,选择DIV方式; 步骤2:检测PLL的状态,读PLLSTATUS位; 步骤3:根据所要切换的倍频,确定乘系数; 步骤4:由所需要的牵引时间,设置PLLCOUNT的当前值; 步骤5:设定CLKMD寄存器。
图8-3 PLL锁定时间和CLKOUT频率的关系 返回本节
(2) 软件配置的PLL ⑤ 倍频切换 【例8.2.1】 从某一倍频方式切换到PLL×1方式。 其程序如下: STM #00H,CLKMD Status:LDM CLKMD,A AND #01H,A BC Status,ANEQ STM #03EFH,CLKMD 必须先从倍频方式切换到分频方式,然后再切换到PLL×1方式。 ;切换到DIV方式 ;测试PLLSTATUS位 ;若A≠0,则转移, ;表明还没有切换到DIV方式 ;若A=0,则顺序执行, ;已切换到DIV方式 STM #03EFH,CLKMD ;切换到PLL×1方式 注意:2分频与4分频之间也不能直接切换。
8.3 定时器/计数器编程举例 【例8-1】设时钟频率为16.384MHz,在TMS320C5402的XF端输出一个周期为2s的方波,方波的周期由片上定时器确定,采用中断方法实现。 1.定时器0的初始化 (1)设置定时控制寄存器TCR(地址0026H)。 (2)设置定时寄存器TIM(地址0024H)。 (3)设置定时周期寄存器PRD(地址0025H)。 返回首页
2.定时器对C5402的主时钟CLKOUT进行分频 CLKOUT与外部晶体振荡器频率(在本系统中外部晶体振荡器的频率为16.384MHz)之间的关系由C5402的三个引脚CLKMD1、CLKMD2和CLKMD3的电平值决定,为使主时钟频率为16.384MHz,应使CLKMD1=1、CLKMD2=1、CLKMD3=0,即PLL1。
3.中断初始化 (1)中断屏蔽寄存器IMR中的定时屏蔽位TINT0置1,开放定时器0中断。 (2)状态控制寄存器ST1中的中断标志位INTM位清零,开放全部中断。
4.汇编源程序如下: .mmregs .def _c_int00 STACK .usect "STACK",100h t0_cout .usect "vars",1 ;计数器 t0_flag .usect “vars”,1 ;当前XF输出电平标志。 t0_flag=1,则XF=1; ;t0_flag=0,则XF=0 TVAL .set 1639 ;16401061=1ms 因中断程序中计数器初值 ;t0_cout=1000,所以定时时间:1ms1000=1s TIM0 .set 0024H ;定时器0寄存器地址 PRD0 .set 0025H TCR0 .set 0026H .data
TIMES .int TVAL ;定时器时间常数 .text ********************************** ; 中断矢量表程序段 _c_int00 b start nop NMI rete ;非屏蔽中断 SINT17 .space 4*16 ;各软件中断 SINT18 .space 4*16 SINT19 .space 4*16 SINT20 .space 4*16 SINT21 .space 4*16
SINT22 .space 4*16 SINT23 .space 4*16 SINT24 .space 4*16 SINT25 .space 4*16 SINT26 .space 4*16 SINT27 .space 4*16 SINT28 .space 4*16 SINT29 .space 4*16 SINT30 .space 4*16 INT0 rsbx intm ;外中断0中断 rete nop INT1 rsbx intm ;外中断1中断 INT2 rsbx intm ;外中断2中断
rete nop TINT: bd timer ;定时器中断向量 RINT0: rete ;串口0接收中断 XINT0: rete ;串口0发送中断 SINT6 .space 4*16 ;软件中断 SINT7 .space 4*16 ;软件中断
INT3: rete ;外中断3中断 nop HPINT: rete ;主机中断 RINT1: rete ;串口1接收中断 XINT1: rete ;串口1发送中断 ******************************************
start: LD #0,DP STM #STACK+100h,SP STM #07FFFh,SWWSR STM #1020h,PMST ST #1000,*(t0_cout) ;计数器设置为 1000(1s) SSBX INTM ;关全部中断 LD #TIMES,A READA TIM0 ;初始化 TIM,PRD READA PRD0 STM #669h,TCR0 ;初始化TCR0 STM #8,IMR;初始化 IMR, 使能 timer0 中断 RSBX INTM ;开放全部中断 WAIT: B WAIT **************************************
;定时器0中断服务子程序 timer: ADDM #-1,*(t0_cout) ;计数器减1 CMPM *(t0_cout),#0 ;判断是否为0 BC next,NTC ;不是0,退出循环 ST #1000,*(t0_cout);为0,设置计数器,并将XF取反 BITF t0_flag,#1 BC xf_out,NTC SSBX XF ST #0,t0_flag B next xf_out: RSBX XF ST #1,t0_flag next: RSBX INTM RETE .end
5.链接命令文件times.cmd如下: times.obj -o times.out -m times.map MEMORY {PAGE 0:RAM1: origin =1000h ,length =500h PAGE 1:SPRAM1: origin=0060h,length=20h SPRAM2: origin=0100h,length=200h } SECTIONS { .text :>RAM1 PAGE 0 .data :>RAM1 PAGE 0 vars :>SPRAM1 PAGE 1 STACK :>SPRAM2 PAGE 1 返回本节
8.4 多通道缓冲串口(McBSP) 8.4.1 McBSP原理框图及信号接口 8.4.2 McBSP控制寄存器 8.4.3 时钟和帧同步 8.4.3 时钟和帧同步 8.4.4 McBSP数据的接收和发送 8.4.5 有关的几个概念 返回首页
8.4.1 McBSP原理框图及信号接口 TMS320C54xx多通道缓冲串口(McBSP)由引脚、接收发送部分、时钟及帧同步信号产生、多通道选择以及CPU中断信号和DMA同步信号组成,如图8-4所示。 表8-7给出了有关引脚的定义,McBSP通过这7个引脚为外部设备提供了数据通道和控制通道。McBSP通过DX和DR实现DSP与外部设备的通信和数据交换。
图8-4 McBSP原理框图
表8-7 McBSP引脚说明 引脚 I/O/Z 说明 DR I 串行数据接收 DX O/Z 串行数据发送 CLKR 接收数据位时钟 CLKX 发送数据位时钟 FSR 接收帧同步 FSX 发送帧同步 CLKS 外部时钟输入
表8-8 McBSP内部信号说明 返回本节 信号 说明 RINT 接收中断,送往CPU XINT 发送中断,送往CPU REVT DMA接收到同步事件 XEVT 向DMA发出事件同步 REVTA DMA接收到同步事件A XEVTA 向DMA发出事件同步A 返回本节
8.4.2 McBSP控制寄存器 1.控制寄存器及其映射地址 表8-9列出了McBSP控制寄存器及其映射地址。 子块数据寄存器SPSDx用于指定对应子地址寄存器中数据的读写,其内部连接方式如图8-5所示。这种方法的好处是可以将多个寄存器映射到一个较小的存储空间。
表8-9 McBSP控制寄存器及其映射地址
图8-5 子地址映射示意图
2.串行口的配置 串口控制寄存器(SPCR1、SPCR2)和引脚控制寄存器(PCR)用于对串口进行配置,接收控制寄存器(RCR1、RCR2)和发送控制寄存器(XCR1、XCR2)分别对接收和发送操作进行控制。 (1)串口控制寄存器(SPCR1、SPCR2)串口控制寄存器1(SPCR1)结构如图8-6所示,表8-10为SPCR1控制位功能说明。串口控制寄存器2(SPCR2)结构如图8-7所示,表8-11为SPCR2控制位功能说明。 (2)引脚控制寄存器(PCR)。引脚控制寄存器(PCR)结构如图8-8所示,表8-12为PCR控制位功能说明。
图8-6 串口控制寄存器1(SPCR1)
表8-10 SPCR1控制位功能说明
图8-7 串口控制寄存器2(SPCR2)
表8-11 SPCR2控制位功能说明
图8-8 引脚控制寄存器(PCR)
表8-12 PCR控制位功能说明
(3)接收控制寄存器(RCR[1,2])。结构如图8-9所示,表8-13所示为RCR1控制位功能说明,表8-14所示为RCR2控制位功能说明。 (4)发送控制寄存器(XCR[1,2])。发送控制寄存器(XCR[1,2])结构如图8-10所示,表8-15所示为XCR1控制位功能说明,表8-16所示为XCR2控制位功能说明。
(a)RCR1 (b)RCR2 图8-9 接收控制寄存器(RCR[1,2])
表8-13 RCR1控制位功能说明
表8-14 RCR2控制位功能说明
(a)XCR1 (b)XCR2 图8-10 发送控制寄存器(XCR[1,2])
表8-15 XCR1控制位功能说明
表8-16 XCR2控制位功能说明 返回本节
8.4.3 时钟和帧同步 采样率发生器由三级时钟分频组成,如图8-11所示,可以产生可编程的CLKG(数据位时钟)信号和FSG(帧同步时钟)信号。CLKG和FSG是McBSP的内部信号,用于驱动接收/发送时钟信号(CLKR/X)和帧同步信号(FSR/X)。采样率发生器时钟既可以由内部的CPU时钟驱动(CLKSM=1),也可以由外部时钟源驱动(CLKSM=0)。采样率发生器寄存器SRGR[1,2]控制着采样率发生器的各种操作,其结构如图8-12所示。表8-17所示为SRGR1控制位功能说明,表8-18所示为SRGR2控制位功能说明。
图8-11 采样率发生器框图
图8-12 采样率发生器寄存器SRGR[1,2]结构图 (a)采样率发生器寄存器1 (SRGR1) (b) 采样率发生器寄存器2 (SRGR2) 图8-12 采样率发生器寄存器SRGR[1,2]结构图
表8-17 SRGR1控制位功能说明
表8-18 SRGR2控制位功能说明
图8-13 可编程帧周期和帧脉冲宽度 返回本节
8.4.4 McBSP数据的接收和发送 数据的接收是通过三级缓冲完成的,例如,通过设置SPCR1寄存器的RINTM=00b,则可由RRDY信号驱动产生接收中断信号RINT,TMS320C54xx CPU响应中断,读取DRR中的数据。接收时序如图8-14所示。 数据的发送通过两级缓冲完成,通过设置SPCR2寄存器的XINTM=00b,可由XRDY驱动产生发送中断信号XINT,TMS320C54xx CPU响应中断,将下一个发送数据写入DXR中,随后XRDY降为0。发送时序如图8-15所示。
图8-14 数据的接收
图8-15 数据的发送 返回本节
8.4.5 有关的几个概念 1.相的概念 在McBSP中,帧同步信号表示一次数据传输的开始。帧同步信号之后的数据流可以有两个相——相1和相2。相的个数(1或2)可以通过设置RCR2和XCR2中的(R/X)PHASE位来实现。每帧的字数和每字的位数分别由(R/X)FRLEN[1,2]和(R/X)WDLEN[1,2]决定(如图8-6、8-18所示 )。
图8-16 例8-2的图
图8-17 例8-3的图
2.数据延迟 每一帧都是从帧同步信号有效时到来的第一个时钟周期开始的。实际的数据接收或传输开始时刻相对于帧的开始时刻可以有延时,这一延时称为数据延迟,用RDATDLY和XDATDLY分别指定接收和发送的数据延迟。可编程数据延迟的范围为0、1、2个时钟周期([R/X]DATDLY = 00b –10b),如图8-18所示。
图8-18 数据延迟
3.SPI协议:McBSP时钟停止模式 SPI协议是一种主从配置的、支持一个主方、一个或多个从方的串行通信协议,一般使用4条信号线:串行移位时钟线(SCK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)、低电平有效的使能信号线( )。如图8-19~8-22所示、表8-19、20所示。
图8-19 McBSP作为SPI模式的主设备
图8-20 McBSP作为SPI模式的从设备
图8-21 CLKSTP=10b、CLKXP=0时钟停止模式1的时序图
图8-22 CLKSTP=11b、CLKXP=1时钟停止模式4的时序图
表8-19 McBSP寄存器位域设置(SPI模式的主设备)
表8-20 McBSP寄存器位域设置(SPI模式的从设备) 返回本节
8.5 多通道缓冲串口应用实例 8.5.1 TLV1572高速串行ADC与TMS320C5402接口设计 8.5 多通道缓冲串口应用实例 8.5.1 TLV1572高速串行ADC与TMS320C5402接口设计 8.5.2 TLC5617串行DAC与TMS320C5402接口设计 8.5.3 语音接口芯片TLC320AD50C与TMS320C5402接口设计 返回首页
8.5.1 TLV1572高速串行ADC与TMS320C5402接口设计 1.TLV1572芯片简介 TLV1572是高速同步串行的10位A/D转换芯片,单电源2.7 V至5.5 V供电,8引脚SOIC封装。功耗较低(3V供电功耗3mW,5V供电功耗25mW),当AD转换不进行期间自动进入省电模式。5V供电、时钟速率20MHz时最高转换速率为1.25 MSPS,3V供电、时钟速率10MHz时最高转换速率为625 KSPS。TLV1572 D封装引脚排列如图8-23所示,TLV1572的引脚说明如表8-21所示。
图8-23 TLV1572的引脚排列
表8-21 TLV1572引脚功能表
2.TLV1572与TMS320系列DSP的连接 图8-24 TLV1572与TMS320系列DSP连接框图
图8-25 TLV1572 DSP工作方式时序图
3.TLV1572与TMS320C5402的McBSP1接口软件编程 【例8-4】在本例应用中,TMS320C5402的McBSP1以CPU中断的方式读取TLV1572模数转换结果,并存放在DSP片内的DARAM区的3000H开始的单元中,共采样256个点,A/D转换的速率为64kHz,由串口McBSP1的帧频决定,TMS320C5402的主时钟频率为81.925MHz。其实现程序(略) 返回本节
8.5.2 TLC5617串行DAC与TMS320C5402接口设计 1.TLC5617工作原理 TLC5617是带有缓冲基准输入的双路10位电压输出数模转换器。 TLC5617通过与CMOS兼容的3线串行接口实现数字控制,器件接收的用于编程的16位字的前4位用于产生数据的传送模式,中间10位产生模拟输出,最后两位为任意的LSB位(如图8-26~8-28、表8-22、23所示)。
图8-26 TLC5617引脚排列
表8-22 TLC5617引脚功能说明
图8-27 TLC5617功能框图
图8-28 TLC5617的时序图
表8-23 可编程控制位(D15~D12)功能表
2.TLC5617与TMS320C5402的McBSP接口设计 TLC5617符合SPI数字通信协议,而TMS320C54xx系列DSP芯片的多通道缓冲串口(McBSP)工作于时钟停止模式时与SPI协议兼容。TLC5617与TMS320C5402的McBSP0接口连接如图8-29所示。
图8-29 TMS320C5402与TLC5617的连接
3.软件设计 给出了较完整的软件程序,包括主程序、串口初始化程序和CPU中断服务程序,中断服务程序分别对数据进行处理,然后在TLC5617的A、B两个通道同时输出。TMS320C5402的主时钟频率为81.925MHz,数模转换速率为128kHz。汇编源程序(略) 返回本节
8.5.3 语音接口芯片TLC320AD50C与TMS320C5402接口设计 音频接口芯片TLC320AD50C集成了16位A/D和D/A转换器,使用过采样(over sampling)技术提供16位A/D和D/A低速信号转换,该器件包括两个串行的同步转换通道,工作方式和采样速率均可由DSP编程设置。其内部ADC之后有抽样滤波器,DAC之前有插值滤波器,接收和发送可同时进行。
图8-30 AD50C的引脚排列
图8-31 AD50C的内部结构框图
AD50C片内还包括一个定时器和控制器。该芯片可工作在单端或差分方式,支持3个从机级联,其参数设置模式采用单线串行口直接对内部寄存器编程,不受数据转换串行口的影响。 (2)DAC信号通道(如图8-34所示) (3)AD50C的控制寄存器(如表8-24所示)
图8-32 ADC通道主通信时序图
图8-33 ADC通道主通信和次通信时序图
图8-34 DAC信号通道主通信和次通信时序图
表8-24 控制寄存器1位功能表
表8-25 控制寄存器2位功能表
表8-26 控制寄存器3位功能表 D7 D6 D5 D4 D3 D2 D1 D0 说明 – × (D0—D5)为与之间延迟SCLK的个数 (D6—D7)从器件的个数,TLC320AC50C最多3个 D7 D6 D5 D4 D3 D2 D1 D0 说明 – × (D0—D5)为与之间延迟SCLK的个数 (D6—D7)从器件的个数,TLC320AC50C最多3个 表8-26 控制寄存器3位功能表
表8-27 控制寄存器4位功能表
表8-28 寄存器映象表 寄存器编号 D12 D11 D10 D9 D8 寄存器名字 空操作寄存器 1 控制寄存器1 2 控制寄存器2 3 表8-28 寄存器映象表 寄存器编号 D12 D11 D10 D9 D8 寄存器名字 空操作寄存器 1 控制寄存器1 2 控制寄存器2 3 控制寄存器3 4 控制寄存器4
2.TLC320AD50C与TMS320C5402硬件接口设计 硬件连接采用AD50C为主控模式(=1),向C5402的McBSP0(从设备)提供SCLK(数据移位时钟)和FS(帧同步脉冲),并控制数据的传输过程。TMS320C5402工作于SPI方式的从机模式,CLKX0和FSX0为输入引脚,在接收数据和发送数据时都是利用外界时钟和移位脉冲。C5402与TLC320AD50C的硬件连接如图8-35所示。
图8-35 TMS320C5402与TLC320AD50C的硬件连接示意图
3.软件编制过程 (1)TMS320C5402串口的初始化。 (2)AD50C初始化。 (3)用户代码的编写。 返回本节
8.6 主机接口(HPI) 8.6.1 HPI-8接口的结构 8.6.2 HPI-8控制寄存器和接口信号 8.6.4 HPI的8条数据线作通用的I/O引脚 返回首页
8.6.1 HPI-8接口的结构 HPI-8是一个8位的并行口,外部主机是HPI的主控者,HPI-8作为主机的从设备,其框图如图8-36所示。其接口包括一个8比特的双向数据总线、各种控制信号及3个寄存器。片外的主机通过修改HPI控制寄存器(HPIC)设置工作方式,通过设置HPI地址寄存器(HPIA)来指定要访问的片内RAM单元,通过读/写数据锁存器(HPID)来对指定存储器单元读/写。主机通过HCNTL0、HCNTLl管脚电平选择3个寄存器中的一个。
图8-36 HPI-8框图 返回本节
8.6.2 HPI-8控制寄存器和接口信号 HPI控制寄存器(HPIC)状态位控制着HPI操作: (1)BOB:字节次序位。 (2)SMOD:标准HPI-8寻址方式位。 (3)DSPINT:主机向C54x发出中断位。 (4)HINT:C54x向主机发出中断位。 (5)XHPIA:增强HPI-8扩展寻址使能位。 (6)HPIENA:增强HPI-8使能状态位。
图8-37 标准HPI-8的HPIC寄存器位结构图 C54x从HPIC寄存器读出的数据 C54x写入HPIC寄存器的数据 图8-37 标准HPI-8的HPIC寄存器位结构图
图8-38 增强HPI-8的HPIC寄存器位结构图 C54xx从HPIC寄存器读出的数据 C54xx写入HPIC寄存器的数据 图8-38 增强HPI-8的HPIC寄存器位结构图
表8-29 HPI-8接口信号名称及其功能
返回本节
8.6.3 HPI-8接口与主机的连接框图 图8-39 C54x HPI与主机链接框图 返回本节
表8-30 通用I/O控制寄存器(GPIOCR)各位的功能 8.6.4 HPI的8条数据线作通用的I/O引脚 表8-30 通用I/O控制寄存器(GPIOCR)各位的功能 返回本节
8.7 外部总线操作 8.7.1 软件等待状态发生器 8.7.2 可编程分区切换逻辑 8.7.3 外部总线接口定时 返回首页
表8-31 软件等待状态寄存器(SWWSR)各字段的功能 8.7.1 软件等待状态发生器 表8-31 软件等待状态寄存器(SWWSR)各字段的功能
表8-32 软件等待状态控制寄存器(SWCR)的功能 返回本节
表8-33 分区转换控制寄存器(BSCR)各字段的功能 8.7.2 可编程分区切换逻辑 表8-33 分区转换控制寄存器(BSCR)各字段的功能
图8-40 存储器两次读操作之间分区切换
图8-41 程序存储器读切换到数据存储器读 返回本节
8.7.3 外部总线接口定时 1.存储器寻址定时图 如图8-42所示为存储器读—读—写操作时序图。如图8-43所示为存储器写—写—读操作时序图。写操作的地址线和数据线继续保持有效约半个周期,紧跟着写操作之后的读操作也要两个机器周期。 如图8-44所示为程序空间读插入一个等待周期的存储器读—读—写操作时序图。
图8-42 存储器读—读—写操作时序
图8-43 存储器写—写—读操作时序
图8-44 存储器读—读—写操作时序(程序空间读插入一个等待周期) 图8-44 存储器读—读—写操作时序(程序空间读插入一个等待周期)
2.I/O寻址定时图 如图8-45所示为并行I/O口读—写—读操作时序图。如图8-46所示为插入一个等待周期的并行I/O口读—写—读操作时序图。每次I/O读写操作都延长一个机器周期。 如果I/O读/写操作紧跟在存储器读/写操作之后,则I/O读/写操作至少3个机器周期,如果存储器读操作紧跟在I/O读/写操作之后,则存储器读操作至少2个机器周期。
图8-45 并行I/O口读—写—读操作时序
图8-46 并行I/O口读—写—读操作时序(插入一个等待周期)
DSP无论是运算还是存取数据,速度都很快,但外部存储器或其他设备的读写周期都较长。因此经常用等待方式访问外存储器。 3.软、硬件等待状态的使用 DSP无论是运算还是存取数据,速度都很快,但外部存储器或其他设备的读写周期都较长。因此经常用等待方式访问外存储器。 DSP有软等待(内等待)、硬等待(外等待)访问控制以便于与不同速度的外围器件交换数据,同时DSP自身的运行速度又可以保持很高。软、硬件等待都可以分别对不同类型、不同地址范围的外设产生不同的等待状态数。 返回本节