第8章-C55x的片上外设A课件.ppt

上传人:小飞机 文档编号:4095768 上传时间:2023-04-03 格式:PPT 页数:158 大小:1.94MB
返回 下载 相关 举报
第8章-C55x的片上外设A课件.ppt_第1页
第1页 / 共158页
第8章-C55x的片上外设A课件.ppt_第2页
第2页 / 共158页
第8章-C55x的片上外设A课件.ppt_第3页
第3页 / 共158页
第8章-C55x的片上外设A课件.ppt_第4页
第4页 / 共158页
第8章-C55x的片上外设A课件.ppt_第5页
第5页 / 共158页
点击查看更多>>
资源描述

《第8章-C55x的片上外设A课件.ppt》由会员分享,可在线阅读,更多相关《第8章-C55x的片上外设A课件.ppt(158页珍藏版)》请在三一办公上搜索。

1、本章内容提要,时钟发生器通用定时器通用I/O口(GPIO)外部存储器接口(EMIF)多通道缓冲串口(McBSP)模数转换器(ADC)看门狗定时器(Watchdog)I2C模块,8.1 时钟发生器,时钟发生器概况 时钟工作模式 CLKOUT输出 使用方法,8.1.1 时钟发生器概况,作用:从CLKIN引脚接收输入时钟信号,将其变换为CPU及其外设所需要的工作时钟。,工作时钟经过分频通过引脚CLKOUT输出,可供其他器件使用,时钟发生器内有一个数字锁相环(DPLL)和一个时钟模式寄存器(CLKMD),8.1.2 时钟工作模式,时钟发生器有三种工作模式:旁路模式(BYPASS)锁定模式(LOCK)I

2、dle模式时钟模式寄存器(CLKMD)中的PLL ENABLE位控制旁路模式和锁定模式可以通过关闭CLKGEN Idle模块使时钟发生器工作在Idle模式。,1旁路模式(BYPASS),如果PLL ENABLE=0,PLL工作于旁路模式,PLL对输入时钟信号进行分频。分频值由BYPASS DIV确定:如果BYPASSDIV=00,输出时钟信号的频率与输入信号的频率相同,即1分频如果BYPASSDIV=01,输出时钟信号的频率是输入信号的1/2,即2分频如果BYPASSDIV=1x,输出时钟信号的频率是输入信号的1/4,即4分频,2.锁定模式(LOCK),如果PLL ENABLE=1,PLL工作

3、于锁定模式,输出的时钟频率由下面公式确定:,表8-1 时钟模式寄存器CLKMD(1),表8-1 时钟模式寄存器CLKMD(2),3.Idle模式,为了降低功耗,可以加载Idle配置,使DSP的时钟发生器进入Idle模式当时钟发生器处于Idle模式时,输出时钟停止,引脚被拉为高电平。,8.1.3 CLKOUT输出,CPU时钟可以通过一个时钟分频器对外提供CLKOUT信号CLKOUT的频率由系统寄存器(SYSR)中的CLKDIV确定当CLKDIV=000b时,CLKOUT的频率等于CPU时钟频率当CLKDIV=001b时,CLKOUT的频率等于CPU时钟频率的1/2当CLKDIV=010b时,CL

4、KOUT的频率等于CPU时钟频率的1/3当CLKDIV=011b时,CLKOUT的频率等于CPU时钟频率的1/4当CLKDIV=100b时,CLKOUT的频率等于CPU时钟频率的1/5当CLKDIV=101b时,CLKOUT的频率等于CPU时钟频率的1/6当CLKDIV=110b时,CLKOUT的频率等于CPU时钟频率的1/7当CLKDIV=111b时,CLKOUT的频率等于CPU时钟频率的1/8,8.1.4 使用方法,通过对时钟模式寄存器(CLKMD)的操作,可以根据需要设定时钟发生器的工作模式和输出频率在设置过程中除了工作模式、分频值和倍频值以外,还要注意其他因素对PLL的影响,1.省电(

5、Idle),为了减少功耗,可以使时钟发生器处于省电状态当时钟发生器退出省电状态时,PLL自动切换到旁路模式,进行跟踪锁定,锁定后返回到锁定模式时钟模式寄存器与省电有关的位是IAIIAI=0:PLL将使用与进入Idle状态之前相同的设置进行锁定IAI=1:PLL将重新锁定过程,2.DSP复位,在DSP复位期间和复位之后,PLL工作于旁路模式,输出的时钟频率由CLKMD引脚上的电平确定如果CLKMD引脚为低电平,则输出频率等于输入频率如果CLKMD引脚为高电平,则输出频率等于输入频率的1/2。,注意:5509A无CLKMD引脚!,3.失锁,锁相环对输入时钟跟踪锁定之后,可能会由于其他原因使其输出时

6、钟发生偏移,导致失锁。出现失锁现象后,PLL的动作由时钟模式寄存器中的IOB确定IOB=0:时钟发生器不中断PLL,PLL继续输出时钟IOB=1:时钟发生器切换到旁路模式,重新开始PLL锁相过程,8.2 通用定时器,定时器概况工作原理定时器使用要点定时器应用实例,8.2.1 定时器概况,C55x 芯片提供了两个定时器TMS320VC5503/5507/5509A/5510提供的是两个20位的定时器定时器由两部分组成:预定标计数寄存器(PSC),4位主计数器(TIM),16位寄存器:计数寄存器(PSC,TIM)周期寄存器(TDDR,PRD):在定时器初始化或定时值重新装入过程中,将周期寄存器的内

7、容复制到计数寄存器中,图8-2 定时器结构框图,8.2.2 工作原理,定时器的工作时钟DSP内部的CPU时钟引脚TIN/TOUT利用定时器控制寄存器(TCR)中的字段FUNC可以确定时钟源和TIN/TOUT引脚的功能,预定标计数寄存器(PSC)由输入时钟驱动,PSC在每个输入时钟周期减1;当其减到0时,TIM减1,当TIM减到0,定时器向CPU发送一个中断请求(TINT)或向DMA控制器发送同步事件定时器发送中断信号或同步事件信号的频率可用下式计算:,通过设置定时器控制寄存器(TCR)中的自动重装控制位ARB,可使定时器工作于自动重装模式:当TIM减到0,重新将周期寄存器(TDDR,PRD)的

8、内容复制到计数寄存器(PSC,TIM)中,继续定时定时器包括4个寄存器定时器预定标寄存器PRSC,表8-2主计数寄存器TIM,表8-3主周期寄存器PRD,表8-4定时器控制寄存器TCR,表8-5,表8-2 定时器预定标寄存器 PRSC,表8-3 主计数寄存器 TIM,表8-4 主周期寄存器 PRD,表8-5 定时器控制寄存器 TCR(1),表8-5 定时器控制寄存器 TCR(2),表8-5 定时器控制寄存器 TCR(3),8.2.3 定时器使用要点,1.初始化定时器(1)停止计时(TSS=1),使能定时器自动装载(TLB=1)(2)将预定标计数器周期数写入TDDR(以输入的时钟周期为基本单位)

9、(3)将主计数器周期数装入PRD(4)关闭定时器自动装载(TLB=0),启动计时(TSS=0),2.停止/启动定时器,利用时钟控制寄存器(TCR)中的TSS位可以停止(TSS=1)或启动定时器(TSS=0),3.DSP复位后定时器寄存器的值,停止定时(TSS=1)预定标计数器值为0主计数器值为FFFFh定时器不进行自动重装(ARB=0)IDLE指令不能使定时器进入省电模式仿真时遇到软件断点定时器立即停止工作TIN/TOUT为高阻态,时钟源是内部时钟(FUNC=00b),8.2.4 定时器应用实例,例8-1,在TIN/TOUT引脚上产生一个2MHz的时钟,假定DSP的CPU时钟为200MHz。要

10、点:TIN/TOUT引脚配置为定时器输出,FUNC设置为01b为了使这个引脚工作在时钟模式,CP设置为1bTIN/TOUT的极性为默认的0b,由于每当计数器减为0时,引脚的电平就会翻转一次。要将CPU的时钟频率除以100倍,就要求每个高电平和低电平周期内的计数为50设置自动装入(ARB=1),使每次计数器减为0时,计时器自动装入计数值,并重新开始计数置TCR中的FREE bit 为1,使计时器在遇到仿真断点时能够继续工作将TCR中的IDLEEN bit清0,使计时器即便在外设时钟模块处于idle状态下仍然工作,;*;定时器寄存器地址;*TIM0.set 0 x1000;TIMER0计数寄存器P

11、RD0.set 0 x1001;TIMER0周期寄存器TCR0.set 0 x1002;TIMER0控制寄存器PRSC0.set 0 x1003;TIMER0预定标寄存器;*;定时器配置;*TIMER_PERIOD.set 9;定时器的周期为10TIMER_PRESCALE.set 4;预定标值为5.textINIT:mov#TIMER_PERIOD,port(#PRD0);配置定时器周期寄存器mov#TIMER_PRESCALE,port(#PRSC0);配置定时器预定标寄存器mov#0000110100111000b,port(#TCR0);0IDLEEN 0=不和外设域一起 idle;0

12、INTEST n/a,初始化代码如下:,;0ERR_TIM 1=如果非法功能改变发生;01 FUNC 01=TIN/TOUT引脚是定时器输出;1TLB 1=从周期寄存器装入;0SOFT n/a;1FREE 1=仿真暂停时,计数器不停;00 PWID n/a;1 ARB 1=使能自动重装入;1 TSS 1=停止定时器;1 CP 0=脉冲模式,1=时钟(触发)模式;0 POLAR 0=正则极性;0 DATOUT n/a;0 Rsvdand#1111101111101111b,port(#TCR0);0 TLB 0=停止从周期寄存器装入;0 TSS 0=启动计时器,8.2.4 定时器应用实例,数字振

13、荡器原理设一个传递函数为正弦序列sinkT,其z变换为,H(z)=,其中,A=2cosT,B=-1,C=sinT。,8.2.4 定时器应用实例,设初始条件为0,求出上式的反Z变换得:yk=Ayk-1+Byk-2+Cxk-1这是一个二阶差分方程,其单位冲击响应即为sinkT。利用单位冲击函数xk-1的性质,即仅当k=1时,xk-1=1,代入上式得:,8.2.4 定时器应用实例,k=0 y0=Ay-1+By-2+0=0 k=1 y1=Ay0+By-2+c=c k=2 y2=Ay1+By0+0=Ay1 k=3 y3=Ay2+By1.k=n yn=Ayn-1+Byn-2在k2以后,yk能用yk-1和y

14、k-2算出,这是一个递归的差分方程。,8.2.4 定时器应用实例,根据上面的说明,我们可以开始数字振荡器的设计。设该振荡器的频率为2kHz,采样率为40kHz(通过定时器设置,每隔25us中断一次,产生一个yn)则递归的差分方程系数为:,8.2.4 定时器应用实例,A=2cosT=2cos(2 x PI x 2000/40000)=2 x 0.95105652 B=-1 C=sinT=sin(2 x PI x 2000/40000)=0.30901699,8.2.4 定时器应用实例,主程序在初始化时先计算出y1和y2,然后开放定时器中断。以后每次进入定时器中断服务程序时,利用前面的y1和y2,

15、计算出新的有y0,8.2.4 定时器应用实例,.title for test INT service program.(25us).mmregs.global _c_int00.def again.def timer.dataINIT_A.set 079bch;A/2=0.9510498INIT_B.set 0c000h;B/2=0.5INIT_C.set 013c7h;C/2=0.1545105,8.2.4 定时器应用实例,PRSC0.set 0 x1003PRD0.set 0 x1001TCR0.set 0 x1002CLKMD.set 0 x1C00TIM0.set 0 x1000.bs

16、s y0,1.bss y1,1.bss y2,1.bss AA,1.bss BB,1.bss CC,1,8.2.4 定时器应用实例,_c_int00:MOV#0 x6413,PORT(#CLKMD)MOV#0 x000F,PORT(#PRSC0)MOV#0 x0001,PORT(#PRD0)MOV#0 x0001,PORT(#TIM0)MOV#0 x07E0,PORT(#TCR0),8.2.4 定时器应用实例,AMOV#y0,XAR0AMOV#y1,XAR1AMOV#y2,XAR2AMOV#AA,XAR3AMOV#BB,XAR4AMOV#CC,XAR5,8.2.4 定时器应用实例,BSET I

17、NTMBCLR C54CMBCLR CPLBCLR ARMS BSET SATABSET SATDBSET SMUL,8.2.4 定时器应用实例,BCLR M40BSET SXMDBSET FRCTMOV#0 xFFFF,mmap(IVPD)MOV#0 xFFFF,mmap(IVPH)AMOV#0 x4000,XSPMOV#0 x4400,mmap(SSP),8.2.4 定时器应用实例,MOV#INIT_A,*(#AA)MOV#INIT_B,*(#BB)MOV#INIT_C,*(#y1);init y1,y1=CC,8.2.4 定时器应用实例,MPYM*AR1,*AR3,AC0;y1*AA-A

18、C0 MOV AC0,*AR2 OR#16,mmap(IER0);enable TIMER MOV#0 x0bE0,PORT(#TCR0)BCLR INTMagain:NOP B again,timer:BSET INTM MPY*AR4,*AR1,AC0;a=y1*BB MAC*AR3,*AR2,AC0;a=a+y2*AA MOV*AR2,*AR1;y2=y1 MOV AC0 y2 MOV AC0 y0 OR#16,mmap(IER0)BCLR INTM RETI.end,*vectors.asm*.sect.vectors.ref _c_int00.ref timer.ref again.

19、global vectorvector:rs:.ivec _c_int00nmi:.ivec againTINT0:.ivec timer,MEMORYEPROG:origin=0 x1400,len=0 x7c00VECT:origin=0 xFFFF00,len=0 xffRAM:origin=0 x200,len=0 x0fffSECTIONS.text:EPROG.vectors:VECT.bss:RAM.data:RAM,8.3 通用I/O口(GPIO),C55x提供了专门的通用输入输出引脚GPIO每个引脚的方向可以由I/O方向寄存器IODIR独立配置引脚上的输入/输出状态由I/O数

20、据寄存器IODATA反映或设置TMS320VC5509A(PGE)有7个GPIO引脚引脚配置见本书第2章有关寄存器见表8-6和表8-7,表8-7 GPIO数据寄存器IODATA,表8-6 GPIO方向寄存器IODIR,8.4 外部存储器接口(EMIF),EMIF介绍EMIF请求的优先级对存储器的考虑程序和数据访问 EMIF中的控制寄存器,8.4.1 EMIF介绍,EMIF控制DSP和外部存储器之间的所有数据传输,1.EMIF支持的存储器类型,EMIF为三种类型的存储器提供了无缝接口:异步存储器,包括ROM、FLASH以及异步SRAM同步突发SRAM(SBSRAM),可以工作在1倍或1/2倍CP

21、U时钟频率同步DRAM(SDRAM),可以工作在1倍或1/2倍CPU时钟频率也可通过EMIF外接A/D转换器、并行显示接口等外围设备需要增加一些外部逻辑器件来保证设备的正常使用,程序的访问32位数据的访问16位数据的访问8位数据的访问,2.EMIF支持四种类型的访问,3.EMIF信号,表8-8 外部存储器共享接口,表8-9 用于异步存储器的EMIF信号,表8-10 用于SBSRAM的EMIF信号,表8-11总线保持信号,表8-12 用于SDRAM的EMIF信号,8.4.2 EMIF请求的优先级,8.4.3 对存储器的考虑,对EMIF编程时,必须了解:外部存储器地址如何分配给片使能(CE)空间每

22、个CE空间可以同哪些类型的存储器连接哪些寄存器位来配置CE空间,1.存储器映射和CE空间,C55x的外部存储映射在存储空间的分布,相应于EMIF的片选使能信号 例如,空间里的一片存储器,必须将其片选引脚连接到EMIF的引脚。当EMIF 访问 空间时,就驱动 变低。,2.EMIF支持的存储器类型和访问类型,表8-14 存储器类型及每种存储器允许的访问类型,3.配置CE空间,使用全局控制寄存器(EGCR)和每个CE空间控制寄存器来配置CE空间对于每个CE空间,必须设置控制寄存器1中的以下域:MTYPE确定存储器类型MEMFREQ 决定存储器时钟信号的频率(1倍或1/2倍CPU时钟信号的频率)MEM

23、CEN 决定CLKMEM引脚是输出存储器时钟信号还是被拉成高电平,不管每个CE空间里的存储器类型,一定要对全局控制寄存器写如下控制位(这些位要影响所有的CE空间):WPE:对所有的CE空间,使能或禁止写NOHOLD:对所有的CE空间,使能或禁止HOLD请求,8.4.4 程序和数据访问,1、程序存储器的访问,要从外部存储器取指令代码时,CPU向EMIF发送一个访问请求。EMIF必须从外部存储器读取一个32位代码,然后把这全部32个位放到CPU的程序读总线(P bus)上EMIF可以管理对3种存储器宽度的32位访问:32位、16位、8位,本书主要介绍对16位和8位宽的程序存储器的访问,访问16位宽

24、的外部程序存储器,EMIF把一个字的地址放到地址线A21:1上。32位的访问可以分为两个16位的传输,在连续的两个周期内完成。在第二个周期,EMIF自动将第一个地址加1,产生第二个地址。,访问8位宽的外部程序存储器,EMIF把一个字节地址放到地址线A21:0上。32位的访问可以分为4个8位的传输,在连续的4个周期内完成。在第2、3、4个周期,EMIF自动将第一个地址加1,产生下一个新的地址。,2、数据访问,EMIF支持的数据访问类型对32位宽的数据存储器进行32、16、8位的数据访问对16位宽的数据存储器进行16、8位的数据访问本节介绍对32位和16位宽的存储器作16位的数据访问,对32位宽的

25、存储器作16位的数据访问 写一个字到外部存储器时,EMIF会自动修改为一个单字 EMIF从外部存储器读一个字时,读进来的是一个32位的数据,所希望的字在DSP里分离出来,表8-15 在对32位宽的外部存储器所作的16 位数据访问中,内部地址为1 的作用,EMIF的外部地址A21:2对应于内部数据地址的位212,用内部地址的位A1来决定使用数据总线的哪一半,以及哪个字节使能信号有效,图8-7a 对32位存储器作16位访问(MSW在偶字地址),图8-7b 对32位存储器作16位访问(MSW在奇字地址),对16位宽的存储器作16位的数据访问,图8-8 对16位宽的外部存储器所作的16位的数据访问,8

26、.4.5 EMIF中的控制寄存器,表8-16 EMIF 寄存器,8.5 多通道缓冲串口McBSP,McBSP概述McBSP组成框图采样率发生器多通道模式选择异常处理McBSP寄存器,8.5.1 McBSP概述,C55x提供高速的多通道缓冲串口(McBSP,Multi-channel Buffered Serial Ports),通过McBSP可以与其它DSP、编解码器等器件相连。McBSP具有如下特点:全速双工通信。双缓存发送,三缓存接收,支持传送连续的数据流。独立的收发时钟信号和帧信号。128个通道收发。,可与工业标准的编解码器、模拟接口芯片(AICs)及其他串行A/D、D/A芯片直接连接。

27、能够向CPU发送中断,向DMA控制器发送DMA事件。具有可编程的采样率发生器,可控制时钟和帧同步信号。可选择帧同步脉冲和时钟信号的极性。传输的字长可选,可以是8位、12位、16位、20位、24位或32位。具有u律和A律压缩扩展功能。可将McBSP引脚配置为通用输入输出引脚。,8.5.2 McBSP组成框图,McBSP包括一个数据通道和一个控制通道,通过7个引脚与外部设备连接,其结构如图8-9所示。数据发送引脚DX负责数据的发送,数据接收引脚DR负责数据的接收,发送时钟引脚CLKX、接收时钟引脚CLKR、发送帧同步引脚FSX和接收帧同步引脚FSR提供串行时钟和控制信号。,CPU和DMA控制器通过

28、外设总线与McBSP进行通信。当发送数据时,CPU和DMA将数据写入数据发送寄存器(DXR1,DXR2),接着复制到发送移位寄存器(XSR1,XSR2),通过发送移位寄存器输出至DX引脚。同样,当接收数据时,DR引脚上接收到的数据先移位到接收移位寄存器(RSR1,RSR2),接着复制到接收缓冲寄存器(RBR1,RBR2)中,RBR再将数据复制到数据接收寄存器(DRR1,DRR2)中,由CPU或DMA读取数据。这样,可以同时进行内部和外部的数据通信。,图8-9 McBSP的结构框图,8.5.3 采样率发生器,每个McBSP包括一个采样率发生器SRG,用于产生内部数据时钟CLKG和内部帧同步信号F

29、SG。,CLKG可以作为DR引脚接收数据或DX引脚发送数据的时钟,FSG控制DR和DX上的帧同步。,1输入时钟的选择,采样率发生器的时钟源可以由CPU时钟或外部引脚(CLKS,CLKX或CLKR)提供,时钟源的选择可以通过引脚控制寄存器PCR中的SCLKME字段和采样率发生寄存器SRGR2中的CLKSM字段来确定。,2输入时钟信号极性的选择,如果选择了一个外部引脚作为时钟源,其极性可通过SRGR2中的CLKSP字段、PCR中的CLKXP字段或CLKPP字段进行设置。,3输出时钟信号频率的选择,输入的时钟经过分频产生SRG输出时钟CLKG。分频值由采样率发生寄存器SRGR1中的CLKGDV字段确

30、定。输出的最高时钟频率是输入时钟频率的1/2。当CLKGDV是奇数时,CLKG的占空比是50%;当CLKGDV是偶数时,CLKG高电平持续时间为个输入时钟周期,低电平持续时间为个输入时钟周期。,4帧同步时钟信号频率和脉宽的选择,帧同步信号FSG由CLKG进一步分频而来,分频值由采样率发生寄存器SRGR2中的FPER字段决定。帧同步脉冲的宽度由采样率发生寄存器SRGR1中的FWID字段决定:,5同步,SRG的输入时钟可以是内部时钟,即CPU时钟,也可以是来自CLKX、CLKR和CLKS引脚的外部输入时钟。当采用外部时钟源时,一般需要同步,同步由采样率发生寄存器SRGR2中的字段GSYNC控制。当

31、GSYNC=0时,SRG将自由运行,并按CLKGDV、FPER和FWID等参数的配置产生输出时钟;当GSYNC=1时,CLKG和FSG将同步到外部输入时钟。,8.5.4 多通道模式选择,1.通道、块和分区,一个McBSP通道一次可以移进或移出一个串行字。每个McBSP最多支持128个发送通道和128个接收通道。无论是发送器还是接收器,这128个通道都分为8块(Block),每块包括16个邻近的通道。据所选择的分区模式,各个块被分配给相应的区。如果选择2分区模式,则将偶数块(0、2、4、6)分配给区A,奇数块(1、3、5、7)分配给区B。如果选择8分区模式,则将块07分别自动地分配给区AH。,B

32、lock0:015通道;Block1:1631通道;Block2:3247通道;Block3:4863通道;Block4:6479通道;Block5:8095通道;Block6:96111通道;Block7:112127通道。,2.接收多通道选择,多通道选择部分由多通道控制寄存器MCR、接收使能寄存器RCER和发送使能寄存器XCER组成。MCR1中的RMCM位决定是所有通道用于接收,还是部分通道用于接收。,其中,MCR可以禁止或使能全部128个通道,RCER和XCER可以分别禁止或使能某个接收或发送通道。每个寄存器控制16个通道,因此128个通道共有8个通道使能寄存器。,当RMCM=0,所有1

33、28个通道都用于接收。当RMCM=1,使用接收多通道选择模式,选择哪些接收通道由接收通道使能寄存器RCER确定。如果某个接收通道被禁止,在这个通道上接收的数据只传输到接收缓冲寄存器RBR中,并不复制到DRR,因此不会产生DMA同步事件。,3.发送多通道选择,发送多通道的选择由MCR2中的XMCM字段确定:当XMCM=00b,所有128发送通道使能且不能被屏蔽。当XMCM=01b,由发送使能寄存器XCER选择通道,如果某通道没有被选择,则该通道被禁止。当XMCM=10b,由XCER寄存器禁止通道,如果某通道没有被禁止,则使能该通道。当XMCM=11b,所有通道被禁止使用,而只有当对应的接收通道使

34、能寄存器RCER使能时,发送通道才被使能,当该发送通道使能时,由XCER寄存器决定该通道是否被屏蔽。,8.5.5 异常处理,有5个事件会导致McBSP异常错误:接收数据溢出,此时SPCR1中的RFULL=1。接收帧同步脉冲错误,此时SPCR1中的RSYNCERR=1。发送数据重写,造成溢出。发送寄存器空,此时SPCR2中的XEMPTY=0;发送帧同步脉冲错误,此时SPCR2中的XSYNCERR=1。,1接收数据溢出,接收通道有三级缓冲RSR-RBR-DRR,当数据复制到DRR,设置RRDY;当DRR中的数据被读取,清除RRDY。所以当RRDY=1,RBR-DRR的复制不会发生,数据保留在RSR

35、,这时如果DR接收新的数据并移位到RSR,新数据就会覆盖RSR,使RSR中的数据丢失。有两种方法可以避免数据丢失:至少在第三个数据移入RSR前2.5个周期读取DRR中的数据。利用DRR接收标志RRDY触发接收中断,使CPU或DMA能及时读取数据。,2接收帧同步信号错误,接收帧同步信号错误是指在当前数据帧的所有串行数据还未接收完时出现了帧同步信号。由于帧同步表示一帧的开始,所以出现帧同步时,接收器就会停止当前帧的接收,并重新开始下一帧的接收,从而造成当前帧数据的丢失。为了避免接收帧同步错误造成的数据丢失,可以将接收控制寄存器RCR2中的RFIG设置为1,让McBSP接收器忽略这些不期望出现的接收

36、帧同步信号。,3发送数据重写,发送数据重写是指CPU或DMA在DXR中的数据复制到XSR之前,向DXR写入了新的数据,DXR中旧的数据被覆盖而丢失。为了避免CPU写入太快而造成数据覆盖,可以让CPU在写DXR之前,先查询发送标志XRDY,检查DXR是否就绪,或者由XRDY触发发送中断,然后写入DXR。为了避免DMA写入太快,可以让DMA与发送事件XEVT同步,即由XRDY触发XEVT,然后DMA控制器将数据写入DXR。,4发送寄存器空,与发送数据重写相对应,发送寄存器空是由于CPU或DMA写入太慢,使得发送帧同步出现时,DXR还未写与入新值,这样XSR中的值就会不断重发,直到DXR写入新值为止

37、。为了避免数据重发,可以由XRDY触发对CPU中断或DMA同步事件,然后将新值写入DXR。,5发送帧同步脉冲错误,发送帧同步错误是指在当前帧的数据还未发送完之前,出现了发送帧同步信号。导致发送器终止当前帧的发送,并重新开始下一帧的发送。为了避免发送帧同步错误,可以将发送控制寄存器XCR2中的XFIG设置为1,让发送器忽略这些不期望的发送帧同步信号。,8.5.6 McBSP寄存器,数据接收寄存器(DRR2和DRR1)数据发送寄存器(DXR2和DXR1)串口控制寄存器(SPCR1和SPCR2)接收控制寄存器(RCR1和RCR2)和发送控制寄存器(XCR1和XCR2)采样率发生寄存器(SRGR1和S

38、RGR2)引脚控制寄存器(PCR)多通道控制寄存器(MCR1和MCR2)收发通道使能寄存器,1数据接收寄存器(DRR2和DRR1),CPU或DMA控制器从DRR2和DRR1读取接收数据。由于McBSP支持8位、12位、16位、20位、24位或32位的字长,当字长等于或小于16位,只使用DRR1;当字长超过16位,DRR1存放低16位,DRR2存放其余数据位。DRR2和DRR1为I/O映射寄存器,可以通过访问I/O空间来访问该寄存器。如果串行字长不超过16位,DR引脚上的接收数据移位到RSR1,然后复制到RBR1。RBR1的数据再复制到DRR1,CPU或DMA控制器从DRR1读取数据。,如果串行

39、字长超过16位,DR引脚上的接收数据移位到RSR2和RSR1,然后复制到RBR2、RBR1。RBR2、RBR1的数据再复制到DRR2、DRR1,CPU或DMA控制器从DRR2、DRR1读取数据。如果从RBR1复制到DRR1的过程中,使用压缩扩展(RCOMPAND=10b或11b),RBR1中的8位压缩数据扩展为16位校验数据。如果未使用压缩扩展,RBR1、RBR2根据RJUST的设置,将数据填充后送到DRR1、DRR2。,2数据发送寄存器(DXR2和DXR1),发送数据时,CPU或DMA控制器向DXR2和DXR1写入发送数据。当字长等于或小于16位,只使用DXR1;当字长超过16位,DXR1存

40、放低16位,DXR2存放其余数据位。DXR2和DXR1为I/O映射寄存器,可以通过访问I/O空间来访问该寄存器。如果串行字长不超过16位,CPU或DMA控制器写到DXR1上的数据,复制到RSR1。RSR1的数据再复制到XSR1。然后,每个周期移走1位数据到DX引脚。,如果串行字长超过16位,CPU或DMA控制器写到DXR2、DXR1上的数据,复制到复制到XSR2、XSR1。然后移到DX引脚。如果从DXR1复制XSR1的过程中,使用压缩扩展(XCOMPAND=10b或11b),DXR1中的16位数据压缩为8位律或A律数据后,送到XSR1。如果未使用压缩扩展,DXR1数据直接复制到XSR1。,3串

41、口控制寄存器(SPCR1和SPCR2),表8-22 串口控制寄存器SPCR1,表8-23 串口控制寄存器SPCR2,4.接收控制寄存器(RCR1和RCR2)和发送控制寄存器(XCR1和XCR2),表8-24 接收(发送)控制寄存器R(X)CR1,表8-25 接收(发送)控制寄存器R(X)CR2,5.采样率发生寄存器(SRGR1和SRGR2),表8-26 采样率发生器SRGR1,表8-27 采样率发生器SRGR2,6.引脚控制寄存器(PCR),表8-28 引脚控制寄存器PCR(1),表8-28 引脚控制寄存器PCR(2),7.多通道控制寄存器(MCR1和MCR2),表8-29 多通道控制寄存器M

42、CR1,表8-30 多通道控制寄存器MCR2,8.收发通道使能寄存器,图8-11 接收通道使能寄存器(RCERARCERH),图8-12 发送通道使能寄存器(XCERAXCERH),8.6 模数转换器(ADC),在数字信号处理器的具体应用中,往往需要采集一些模拟信号量,如电池电压、面板旋钮输入值等,模数转换器就是用来将这些模拟量转化为数字量来供DSP使用。本节主要介绍TMS320VC5509A内部集成的10位的连续逼近式模数转换器(ADC)。,8.6.1 ADC的结构和时序,图8-14 ADC转换时序图,下面的公式,表示ADC可编程时钟分频器之间的关系:ADC时钟=(CPU时钟)/(CPUCL

43、KDIV+1)ADC 转换时钟=(ADC时钟)/(2(CONVRATEDIV+1)(必须等于或小于2MHZ)ADC采样保持时间=(1/(ADC时)/(2CONVRATEDIV+1+SAMPTIMEDIV)(必须大于等于40)。ADC总转换时间=ADC采样保持时间+(13(1/(ADC 转换时钟),ADC不能工作于连续模式下。每次开始转换前,DSP必须把ADC控制寄存器(ADCCTL)的ADCSTART位置1,以启动模数转换器转换。当开始转换后,DSP必须通过查询ADC数据寄存器(ADCDATA)的ADCBUSY位来确定采样是否结束。当ADCBUSY位从1变为0时,标志转换完成,采样数据已经被存

44、放在数模转换器的数据寄存器中。,8.6.2 ADC的寄存器,ADC的寄存器包括控制寄存器(ADCCTL)、数据寄存器(ADCDATA)、时钟分频寄存器(ADCCLKDIV)和时钟控制寄存器(ADCCLKCTL)。TMS320VC5509A的有关寄存器分别于表8-28至表8-31。,表8-31 ADC控制寄存器ADCCTL,表8-32 ADC数据寄存器ADCDATA,表8-33 ADC时钟分频寄存器ADCCLKDIV,表8-34 ADC时钟控制寄存器ADCCLKCTL,8.6.3 实例,下边给出一个设置ADC的例子,设DSP系统时钟为144MHz。(1)首先对系统主时钟分频,产生ADC时钟,该时

45、钟应尽量运行在较低频率下,以降低功率消耗,在本例中ADC时钟是通过对系统时钟36分频产生的,则此时ADC时钟=144MHz/36=4MHz,根据公式ADC时钟=(CPU时钟)/(CPUCLKDIV+1)得出 CPUCLKDIV=35,(2)对ADC时钟分频产生ADC 转换时钟,该时钟最大值为2MHz。为了获得2MHz的ADC 转换时钟,需要对ADC时钟2分频。由ADC 转换时钟=ADC时钟/(2(CONVRATEDIV+1)得出 CONVRATEDIV=0,以及ADC 转换时间=131/(ADC转换时钟)=13(1/2MHz)=6.5us。,(3)对采样和保持时间进行设置,这个值必须大于40。

46、ADC采样保持时间=(1/(ADC时钟))/(2(CONVRATEDIV+1+SAMPTIMEDIV)=(1/(4MHZ)/(2(0+1+SAMPTIMEDIV)=250NS(2SAMPTIMEDIV)=40 由此得出SampTimeDiv=79,(4)整个转换时间为:40(采样保持时间)+6.5(转换时间)=46.5us,采样率=1/46.5=21.5kHz。,8.7 看门狗定时器(Watchdog),看门狗定时器概述看门狗定时器的配置看门狗定时器的寄存器,8.7.1看门狗定时器概述,C55x提供了一个看门狗定时器,用于防止因为软件死循环而造成的系统死锁。,图8-18 看门狗定时器框图,看门

47、狗定时器包括一个16位主计数器和一个16位预定标计数器,使得计数器动态范围达到32位。,CPU时钟为看门狗定时器提供参考时钟。每当CPU时钟脉冲出现,预定标计数器减1。,每当预定标计数器减为0,就触发主计数器减1。当主计数器减为0时,产生超时事件,引发以下的可编程事件:一个看门狗定时器中断、DSP复位、一个NMI中断,或者不发生任何事件。所产生的超时事件,可以通过编程看门狗定时器控制寄存器(WDTCR)中的WDOUT域来控制。,每当预定标计数器减为0,它会自动重新装入,并重新开始计数。装入的值由WDTCR中的TDDR位和看门狗定时器控制寄存器2(WDTCR2)中的预定标模式位(PREMD)决定

48、。当PREMD=0时,4位的TDDR值直接装入预定标计数器。当PREMD=1时,预定标计数器间接装入16位的预置数。,当看门狗定时器初次使能,看门狗定时器的周期寄存器(WDPRD)的值装入主计数器(TIM)。主计数器不断减1,直到看门狗定时器受到应用软件写给WDKEY的一系列的关键值的作用。每当看门狗定时器受到这样的作用,主计数器和预定标计数器都会重新装入,并重新开始计数。,图8-19 看门狗定时器状态转换图,8.7.2 看门狗定时器的配置,复位之后,看门狗定时器关闭,处于初始状态(见图8-19)。在这期间,计数器不工作,看门狗定时器的输出和超时事件没有关系。看门狗定时器一旦使能,其输出就和超

49、时事件联系起来。主计数器和预定标计数器会被重新载入,并开始减1。看门狗定时器使能后,不能通过软件方式关闭,但可以通过超时事件和硬件复位来关闭。在使能之前,需要对看门狗定时器进行初始化。,看门狗定时器进行初始化和使能的步骤如下:(1)将PRD装入WDPRD。(2)设置WDTCR中的位(WDOUT、SOFT和FREE),以及TDDR里的预定标控制值。(3)向WDTCR2中的WDKEY写入关键值5C6h,使看门狗定时器进入预计数状态。(4)将关键值A7Eh写入WDKEY,置位WDEN,将PREMD的值写入WDTCR2中。这时,看门狗定时器被激活。一旦看门狗定时器超时,就会发生超时事件。必须对看门狗定

50、时器周期性地进行以下服务:在看门狗定时器超时之前,先写5C6h,后写A7Eh到WDKEY中。其它写方式都会立即产生超时事件。,8.7.3 看门狗定时器的寄存器,看门狗定时器主要有4个寄存器:看门狗计数寄存器(WDTIM)、看门狗周期寄存器(WDPRD)、看门狗控制寄存器(WDTCR)和看门狗控制寄存器2(WDTCR2)。看门狗计数寄存器和看门狗周期寄存器都是16位寄存器,它们协同工作完成计数功能。看门狗周期寄存器(WDPRD)存放计数初始值,当计数寄存器的值减到0后,将把 周期寄存器中的数载入到计数寄存器中。当控制寄存器中的PSC位减到0之前或看门狗计数器被复位时,计数寄存器将进行减1计数。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号