版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章TMS320C54xDSP片内外设3.1时钟发生器3.2定时器3.3中断系统3.4通用I/O接口3.5
McBSP用作SPI接口3.6多通道缓冲串口McBSP3.7主机接口3.8
DMA控制器3.9外部总线操作
C54x系列DSP的片内外设配置不完全相同,但差别也不是很明显,基本都包括时钟发生器、定时器、中断、多通道缓冲串口(McBSP)、主机接口(HPI)、直接存储器访问控制
器(DMA)及通用I/O、外部总线操作等。下面以MS320VC5416
(以下简写为5416)为例,按由简单到复杂的顺序介绍其片内外设。
3.1时钟发生器
时钟发生器为DSP的内部各单元和外部器件提供时钟,5416与时钟有关的内部单元包括以下几种。
(1)内部振荡器及锁相环(PLL)。它们产生CPU运行主时钟,同时受BSCR(分区转换寄存器,地址为0x29)的DIVFCT位分频控制,通过引脚CLKOUT对外输出主时钟。
(2)内部时钟,它的作用一是通过定时器为定时中断产生中断脉冲,并可通过引脚TOUT对外输出定时时钟;二是通过对McBSP等多通道缓冲串口的相关寄存器进行设置,产生串口所需的各类时钟。参考时钟的输入可以有以下两种方式。
(1)在X1和X2/CLKIN引脚外接晶振,通过内部晶体振荡器产生时钟。
(2)在X2/CLKIN引脚直接引入外部参考时钟,X1引脚
悬空。
C54x内部时钟关系如图3.1所示。图3.1
C54x内部时钟关系图3.1.1硬件配置锁相环
5416硬件复位后,通过读取CLKMD1~CLKMD3这3个引脚的电位配置,确定锁相环的初始配置,其复位时的时钟配置如表3.1所示。3.1.2软件配置锁相环
若需要改变硬件配置的时钟频率时,可采用软件编程方式修改CLKMD的值,使PLL输出所需的CPU时钟,5416的CLKMD的结构如图3.2所示。图3.2CLKMD的结构
CLKMD各比特位的功能如表3.2所示。
PLL输出时钟CLKOUT与输入时钟CLKIN、倍频因子之间的关系如式3.1所示。
CLKOUT=CLKIN×倍频因子(3.1)
其中倍频因子与PLLNDIV、PLLDIV和PLLMUL之间的关系如表3.3所示。
PLL锁定需要一定的时间,在锁定之前不能用作CPU的
时钟。锁定时间为(0~255)×16×CLKIN时钟周期,可通过CLKMD的PLLCOUNT位来设置。不同的CLKOUT时钟,锁定时间不同。最简单的方法是将PLLCOUNT位设定在最大值,即PLLCOUNT=0xFF。时钟发生器可以直接从PLL模式切换到DIV模式,没有PLLCOUNT延时,只需短暂延时即可,CPU的运行不受影响。但在从DIV模式切换到PLL模式的过程中,DSP仍工作在DIV模式,直到PLLCOUNT减为0,且当CLKMD的PLLSTATUS位为1时,才输出新时钟供CPU使用。时钟发生器从一个PLL模式切换到另一个PLL模式(倍频因子不同)时,不允许直接切换,中间需经过DIV状态,即先切换到DIV模式,再切换到新的PLL模式。
时钟模式的每次切换,都需用代码验证CLKMD
PLLSTATUS位是否到达新的状态位,或者等待足够多的时
间,否则,运行结果可能出错。一个PLL模式转换为DIV=0模式,其C语言编程如下:
#defineCLKMD*(unsignedint*)0x58
CLKMD=0;//2分频
汇编语言方式如下:
STM#0,CLKMD从DIV模式切换到PLL×2模式,其C语言编程如下:
#defineCLKMD*(unsignedint*)0x58
CLKMD=0;//2分频
for(i=0;i<5;i++)
CLKMD=0x13FF;
//2倍频,提高可靠性
for(i=0;i<255;i++);//等待汇编语言方式如下:
RPT#4
STM#0x17FF,CLKMD
STM#255,AR1
WAIT:
BANZWAIT*AR1-3.1.3主时钟CLKOUT输出
5416的分区切换控制寄存器(BSCR,地址为0x29)的DIVFCT位(在bit14~bit13位)控制主时钟的输出,该时钟可作为外部存储器等器件的时钟。时钟输出CLKOUT的频率等于1/(DIVFCT+1)(DIVFCT=0,1,2,3,默认DIVFCT=3)。
3.2定时器
3.2.1定时器工作原理
图3.3为定时器的内部逻辑框图。它包含两个部分,主定时模块和预分频器模块。当TSS=0时,CPU时钟通过与门输入到PSC计数器。PSC是一个4位的减1计数器,其初值由TDDR寄存器载入。
当PSC减到0后,产生借位信号,使TIM计数器减1。TIM是一个16位的减1计数器,其初值由PRD载入。当TIM减到0时,产生借位信号,这个借位信号作为定时器内部中断信号TINT和外部定时信号TOUT,时钟脉冲宽度与CPU时钟宽度相同。图3.3定时器的内部逻辑框图设置TRB=1,每当PSC产生借位信号时,TDDR将初值载入PSC,每当TIM产生借位信号时,PRD将初值载入TIM,从而产生周期性的中断信号。
由此可见,定时器的周期如式3.2所示:
TINT=TCPUCLK×(PRD+1)×(TDDR+1)
(3.2)
式中,PRD、TDDR表示各自寄存器的值,TTINT表示定时器中断周期,TCPUCLK表示CPU时钟周期。定时中断频率为式中,fTINT表示定时器中断频率,fCPUCLK表示CPU时钟频率。由于TDDR为4比特无符号数,所以Max(TDDR+1)=16,类似地,PRD为16比特无符号数,所以Max(PRD+1)=65536。若要产生频率更低的定时信号或中断,需用软件再补充变量来处理。
可设置TSS=1,关闭定时器以减少功耗。图3.4所示是16位的TCR寄存器的结构,其各比特位的功能说明见表3.4。图3.4
TCR寄存器的结构初始化定时器的步骤如下:
(1)根据fTINT和fCPUCLK计算PRD和TDDR的值,设置好TCR和PRD,其中TRB=1(自动载入初值)和TDDR=1(先停止定时器);
(2)TIM清零;
(3)开启定时器,设置TCR的TSS=0。如果要使用定时器中断TINT,需作如下设置:
(1)将IFR中的TINT位置0,以清除尚未完成的定时器
中断;
(2)将IMR中的TINT位置1,开放定时器中断;
(3)将ST1中的INTM位清0,开放总中断。例3.1设CLKOUT的频率为8MHz,现要求A/D采样频率为4kHz,用定时器中断产生定时信号,问如何设计PRD和TDDR。
解:
TDDR和PRD的设置有多种,可以设PRD=1999、PRD=0或第二种方式TDDR=15,PRD=124。例3.2设CLKOUT的频率为8MHz,现有一个发光管,要求每秒闪烁1次(即每秒亮一次,暗一次,频率为2Hz),用定时器产生定时信号控制这个发光管,问如何设计PRD和TDDR。
解:可见,TDDR可取15=0x0F,PRD可取62499=0xF423,此外再用一个变量保存系数4。3.2.2定时器的多时钟应用
如果定时中断事件较多,而且它们的时间间隔与某一时间段成倍数关系,则可以用一个定时器实现。下面以程控交换的时钟级调度为例讲述定时器的多时钟应用。
时钟级程序由时间表启动,时间表由时间计数器、屏蔽表、转移表组成,如图3.5所示。图3.5定时器的逻辑框图
(2)建立屏蔽表。屏蔽表确定哪些中断程序能被执行,如图3.5所示,“1”表示可执行,“0”或者“空”表示不执行。
(3)转移表。转移表也称入口地址表,表中的内容为各个程序的入口地址,根据表中地址调用相应的程序。
(4)执行频率分析。执行频率是,第1列的每一行都是1,且屏蔽表对应的位为1,该拨号脉冲识别程序每1个时基执行一次,第2列是每隔一行是1,该按钮号码识别程序是每2个时基执行一次,…,第F列的时间计算器清0程序是每n个时基执行一次,以此类推。
3.3中断系统
中断可以由硬件或者软件触发,使DSP暂停正在执行
的程序,进入中断服务程序。如定时读取A/D信号、输出D/A信号和及时处理用户的键盘输入信号等,都需要中断。
C54xDSP既支持硬件中断,也支持软件中断。
(1)由程序指令(INTR、TRAP或RESET等)请求的中断称为软件中断。
(2)由外部物理设备信号请求的中断称为硬件中断。这类中断有两种形式:
①受外部中断信号触发的外部硬件中断;
②受片内外设信号触发的内部硬件中断。
当同时有多个硬件中断被触发时,C54xDSP按照中断优先级别的高低(1表示优先级高)分别对它们进行服务。关于硬件中断的优先级,可以参考本节后面的介绍。3.3.1中断分类
中断可以分为可屏蔽中断和非屏蔽中断两大类。
(1)第一类是可屏蔽中断,这些中断都是可以用软件来屏蔽(不激活或使能)的硬件中断。C54xDSP最多可以支持16个用户的可屏蔽中断(SINT15~SINT0)。每种处理器只使用其中的一个子集。例如5416只使用14个可屏蔽中断。对5416来说,这14个中断的硬件名称如下:①外中断INT3~INT0;
②McBSP中断XINTx、RINTx,x=0、1、2;
③定时器中断TINT;
④主机接口中断HPINT;
⑤DMA通道中断,DMAC4~DMAC5。
(2)第二类是非屏蔽中断,这类中断是不能够屏蔽的,一旦触发,DSP总是响应这一类中断,并从主程序转移到中断服务程序。C54xDSP的非屏蔽中断包括所有的软件中断,以及两个外部硬件中断RS(复位)和NMI(用户自定义不可屏蔽中断,一般用于系统硬件的故障诊断)。RS是一个对C54xDSP所有操作方式都产生影响的非屏蔽中断,而NMI中断不会对C54xDSP的任何操作模式产生影响。声明NMI中断时,禁止所有其他中断。3.3.2中断屏蔽寄存器(IMR)和中断标志寄存器(IFR)
1.中断屏蔽寄存器(IMR)
图3.6所示的IMR是5416的一个映射寄存器,可以用来屏蔽或开放相应的中断,如果状态寄存器ST1中的INTM=0(开放所有中断),且IMR的某位为1,就使能该比特位对应的中断。
RS和NMI是不可屏蔽中断,不在IMR中。用户可以对IMR寄存器进行读写操作,查询或设置有关中断情况。各中断优先级依比特位的顺序,从低到高排列,INT0
的优先级最高。图3.6中断屏蔽寄存器(IMR)
2.中断标志寄存器(IFR)
IFR可以识别和清除有效的中断,其结构与IMR相同,当一个中断出现时,IFR中的相应的中断标志位置1,直到CPU处理该中断为止。以下4种情况可清除中断标志:
(1)DSP复位(RS引脚为低电平);
(2)中断得到处理;
(3)将0写到IFR中的适当位,相应的尚未处理的中断被
清除;
(4)利用合适的中断号执行INTR指令。3.3.3中断请求及中断处理
1.接收中断请求
一个中断的完成是由硬件电位和软件指令请求来实现的。当产生一个中断请求时,IFR寄存器中相应的中断标志位被置1。当相应的中断被响应后,该标志位自动被清除。外部硬件中断请求是由外部中断口的信号发出,而内部硬件中断请求是由片内外设的信号发出的。例如,对于5416来说,其硬件中断可以由如下信号端发出请求,具体内容如表3.5所示。软件中断由如下程序指令发出中断请求:
(1)INTR。该指令允许执行任何一个中断服务程序。指令操作数K(中断号)表示CPU分支转移到哪个中断向量地址。表3.5列出了用于指向每个中断向量位置的操作数K。当响应INTR中断时,ST1寄存器的中断模式位(INTM)被设置为1,并用于禁止可屏蔽中断。
(2)TRAP。该指令执行的功能与INTR指令一致,但不用设置INTM位。
(3)RESET。该指令执行一个非屏蔽软件复位,可以在任何时候被使用并将C54x的DSP置于已知状态。RESET指令影响ST0和ST1寄存器,但不会影响PMST寄存器。当响应RESET指令时,INTM位被设置为1,用于禁止可屏蔽中断。
2.中断响应
硬件或软件中断发送了一个中断请求后,CPU必须决定是否响应该中断请求。软件中断和非屏蔽硬件中断会立刻被响应,而可屏蔽中断只有在满足如下条件后才被响应。
(1)优先级最高。当多个硬件中断同时被请求时,DSP按照中断优先级的高低顺序响应中断请求,优先级高的中断可以中断优先级低的中断。表3.5列出了5416DSP的硬件中断优
先级。
(2)IMR的中断屏蔽位为1,表示使能该中断。
(3)ST1的INTM位为0,表示使能所有可屏蔽中断。
当响应一个中断后,INTM位被置1,从中断返回后INTM重新使能。
3.执行中断服务程序
当响应中断后,CPU会进行如下操作:
(1)自动保存程序计数器(PC)的值(返回地址)到堆栈;
(2)将中断向量的地址加载到PC;
(3)执行分支转移,转到中断服务程序地址执行中断
程序;
(4)执行中断服务程序直到最后的返回指令;
(5)从堆栈中弹出返回地址到PC中;
(6)继续执行主程序。
4.保存中断前的运行环境
当执行一个中断服务程序时,中断服务程序要将用到的某些寄存器保存在堆栈中,以便中断程序在返回时能恢复这些寄存器。C语言编写的中断服务程序在编译时会自动保存和恢复所有相关寄存器,而汇编语言编写的中断服务程序则需编程人员编写保存和恢复所有相关寄存器的代码。3.3.4中断操作流程
一旦一个中断传送给CPU,CPU会按图3.7所示的方式进行操作,具体操作步骤如下。
(1)如果请求的是一个可屏蔽中断,则操作过程如下:
①设置IFR寄存器的相应标志位。
②测试响应条件(INTM=0且相应的中断位为1)。如果条件为真,则CPU响应该中断,产生一个中断响应信号;否则,忽略该中断并继续执行主程序。图3.7中断操作流程图③当中断已经被响应后,IFR相应的标志位被清除,并且INTM位被置1(屏蔽其他可屏蔽中断)。
④保存PC值到堆栈中。
⑤CPU分支转移到中断服务程序(ISR)并执行ISR。
⑥ISR由返回指令结束,该指令将返回的值从堆栈弹出给PC。
⑦CPU继续执行主程序。
(2)如果请求的是一个非屏蔽中断,则操作过程如下:
①CPU立即响应中断,产生一个中断响应信号。
②如果中断是由RS、NMI或INTR指令请求的,则INTM位被置1(屏蔽其他可屏蔽中断)。
③如果INTR指令已经请求了一个可屏蔽中断,那么相应的标志位被清除为0。④保存PC值到堆栈中。
⑤CPU分支转移到中断服务程序(ISR)并执行ISR。
⑥ISR由返回指令结束,该指令将返回的值从堆栈中弹出给PC。
⑦CPU继续执行主程序。3.3.5重新映射中断向量地址
中断向量可以映射到除保留区域外的程序存储器的任何128字页面的起始位置。中断向量地址是由PMST寄存器中的IPTR(9位中断向量指针)和左移2位后的中断向量序号(中断向量序号为0~31,左移2位后变成7位)组成的。例如,INT0的中断向量号为16或10H,左移2位后变成40H;IPTR=0001H,则中断向量的地址为00C0H。中断向量地址的产生过程如图3.8所示。图3.8中断向量地址的产生过程复位时,IPTR的所有位被置1(IPTR=1FFH),并按此值将复位向量映射到程序存储器的第511页空间。所以,硬件复位后总是从FF80H地址处开始执行程序。如果在初始化程序中修改IPTR的值,即可将中断向量表映射到指定的存储空间内。
3.4通用I/O接口
3.4.1
XF和BIO
XF(ExternalFlagOutputPin,扩展标志输出引脚)为通用输出引脚,其寄存器在ST1的bit13位,可通过下面的指令置位或清0。从指令执行到XF输出,大约需要6.5个CPU时钟
周期。
SSBXXF;XF=1
RSBXXF;XF=0
BIO(BranchControlInputPin,分支转移控制输入引脚)可用于监视外设器件的状态,特别是对实时要求严格的中断跳转,低电平有效,用于XC分支指令。执行该指令时在流水线的译码周期内采样BIO引脚的值,执行其他指令时在流水线的读周期内采样BIO引脚的值。3.4.2
HPI数据线用作通用I/O接口
主机接口(HPI)的8位数据线HD0~HD7,在HPI接口被禁止时可设置为通用I/O接口。设置方法是设置引脚HPIENA=0或设置HPI为16位模式。GPIOCR(通用I/O控制寄存器,地址为0x3C)设置数据线的传输方向,当DIRx=0时表示输入,DIRx=1时表示输出,其各比特位的功能如表3.6所示。
无论是输入还是输出,数据线的状态都反映在GPIOSR
(通用I/O状态寄存器,地址为0x3D)对应的比特位中,如表3.7所示。3.4.3
McBSP用作通用I/O接口
5416共有3组McBSP(多通道缓冲串口),编号分别为McBSP0~McBSP2,每组共有6个引脚用作输入或输出。它们是CLKX(发送时钟)、FSX(发送帧同步)、DX(发送数据)、CLKR(接收时钟)、FSR(接收帧同步)和DR(接收数据),简化的McBSP接口示意图如图3.9所示。图3.9简化的McBSP接口示意图在McBSP各引脚后面加上组编号x(x=0,1,2)以区别其他组,各组的引脚和控制方式均相互独立,以下讨论的均是同一组McBSP的引脚和相关寄存器使用,当满足下面两个条件时,McBSP可以用作通用I/O接口。
(1)串口控制寄存器SPCR1的RRST位(接收器复位)、SPCR2的XRST位(发送器复位)均为0,串口处于复位状态;
(2)引脚控制寄存器PCR的XIOEN和RIOEN位均为1,I/O功能有效。
当McBSP引脚用作通用I/O引脚时,有关传输方向及状态值均在PCR寄存器中。PCR各比特位的功能如表3.8所示,用作通用I/O引脚时的功能如表3.9所示。
3.5
McBSP用作SPI接口
3.5.1
SPI协议与McBSP
SPI协议是一个主从配置,支持一个主机、一个或多个从机的串行通信协议,接口有下面四种信号线:
(1)主机输入/从机输出串行数据线(MISO);
(2)主机输出/从机输入串行数据线(MOSI);
(3)串行移位时钟线(SCK);
(4)从机使能线(SS)。主机提供移位时钟(SCK)和从机使能信号SS,从而控制通信流程。
当McBSP接口工作在时钟停止模式时,可配置成SPI接口,与此相关的有SPCR1、PCR、XCR1和RCR1四个寄存器。当McBSP接口配置为时钟停止模式时,发送器和接收器在内部是同步的,可以将McBSP作为SPI的主机或从机。发送时钟CLKX对应于串行时钟SCK,而发送帧同步FSX对应于SS。
CLKR和FSR在内部分别与CLKX和FSX相连。McBSP的PCR寄存器的CLKXM位指定McBSP作主机还是从机,当CLKXM=1时为主机,反之为从机。作从机时,CLKX和FSX时钟由主机提供。
McBSP作主机的配置如图3.10(a)所示,作从机的配置如图3.10(b)所示。图3.10
McBSP配置成SPI模式示意图3.5.2
McBSP配置为SPI的方法
通过对SPCR1、PCR、XCR1和RCR1等寄存器进行相关控制位的配置,McBSP可以配置为SPI模式,如表3.10所示。其中,SPCR1(串口控制寄存器1)的CLKSTP位和寄存器PCR的CLKXP位用于配置时钟停止模式,如表3.11所示。图3.11~图3.14分别列出了以上四种情况下SPI的传输时序。图3.11
CLKSTP=10、CLKXP=0时的SPI传输时序图3.12
CLKSTP=11、CLKXP=0时的SPI传输时序图3.13
CLKSTP=10、CLKXP=1时的SPI传输时序图3.14
CLKSTP=11、CLKXP=1时的SPI传输时序3.5.3
McBSP配置为SPI主机模式的操作
设置寄存器PCR的CLKXM=1时,McBSP配置为主机模式,这时CLKX引脚为串行移位时钟SCK的输出,FSX为从
使能信号SS的输出。
SCK时钟仅在分组数据传输期间有效,无数据传输时维持在高电平或低电平。数据延迟控制位(XDATDLY和RDATDLY)都必须设置为0,其他无定义,如表3.12所示。3.5.4
McBSP配置为SPI从机模式的操作
设置寄存器PCR的CLKXM=0时,McBSP配置为从机模式,这时CLKX引脚的串行移位时钟SCK和FSX引脚的从机使能信号SS均由主机提供。
虽然SCK和SS时钟由主机提供,但采样率发生器应配置成CPU时钟的一半,使McBSP同步于外部时钟和从机使能信号。数据延迟控制位(XDATDLY和RDATDLY)都必须设置为0,其他无定义,如表3.13所示。3.5.5
McBSP用作SPI接口的初始化
(1)设置寄存器SPCR2的XRST=0,复位发送器;设置寄存器SPCR1的RRST=0,复位接收器。
(2)设置寄存器SPCR2的GRST=1,使能采样率发生器。(3)按表3.10~3.13设置相关位。
(4)等待到稳定状态。
(5)设置XRST=RRST=1,使能发送器和接收器,SPI接口即可以工作。
3.6多通道缓冲串口McBSP
3.6.1
McBSP的主要特性
C54x多通道缓冲串口(McBSP)提供了高速、双向、多通道带缓冲的串行接口,它具有以下主要特征:
(1)全双工通信,双缓冲发送和三缓冲接收,允许连续的数据流。
(2)独立的发送、接收帧和时钟信号,信号频率和极性均可编程。
(3)可直接与工业标准解码器、模拟接口芯片、其他串行A/D和D/A器件连接,也可直接与T1/E1、MVIP、ST-BUS、IOM-2、AC97、IIS、SPI等器件连接。
(4)多达128个发送、接收通道,数据包括8、12、16、20、24和32位,具有μ律和A律压扩硬件功能等性能。3.6.2
McBSP的工作原理
McBSP的工作原理框图如图3.15所示,先配置好时钟、帧同步及多通道选择寄存器,然后就可以与外部发送引脚DX、接收引脚DR进行通信了。
有关信号说明如下:CLKR和CLKX为收发时钟,FSR和FSX为收发帧同步时钟,CLKS为外部时钟;RINT和XINT为CPU的收发中断信号;REVT为DMA的接收同步事件,XEVT为DMA的发送同步事件;REVTA为DMA的接收同步事件A,XEVTA为DMA的发送同步事件A。图3.15
McBSP的工作原理框图
5416共有3个McBSP接口,编号为0~2,但它们的结构和功能完全一样。下面的描述均指同一个McBSP,为方便描述,后面的编号x在一般情况下均省略(x=0,1,2)。
当接收外部数据时,DR引脚上的串行数据经RSR[1,2]和RBR[1,2]缓冲并扩展(可选项),再移入DRR[1,2],CPU读取DRR[1,2]后就收到外部连续的多位数据。当发送数据给外部引脚DX时,CPU将数据发送到DXR[1,2],经压缩(可选项)和XSR[1,2]缓冲后,就以串行方式发送至引脚DX上。当数据位不超过16位时,RSR2、RBR2、DRR2、DXR2和XSR2等寄存器均不能进行读、写和移位操作。
每个McBSP有关的寄存器有19个,其中能用全局地址访问的有4个,用子地址访问的有15个,如表3.14所示。由表3.14可知,每个McBSP的控制寄存器较多,但映射寄存器地址有限,因此,对部分寄存器采取共用映射寄存器地址并用子地址区分的方法,在硬件上用复接器实现访问。如图3.16所示,读子地址内容时,只要将子地址写入SPSAx,相应子地址的内容就复制到SPSDx中,读SPSDx的内容即是对应的子地址的内容。图3.16子地址寄存器访问示意图类似地,写数据到子地址寄存器中,也是先把子地址写入SPSAx,然后把内容写入SPSDx,SPSDx就自动把数据复制到指定的子地址寄存器中。
这样,对子地址寄存器的访问就归结为对SPSAx和SPSDx的访问。例如将#0写入McBSP0的SPCR1寄存器,其
代码如下:SPSA0.set0x38;McBSP0的子地址寄存器地址
SPSD0.set0x39;McBSP0的子地址数据寄存器地址
SPCR10.set0x00;SPCR10的子地址
STM#SPCR10,SPSA0;初始化SPSA0
STM#0,SPSD0;#0写入SPSD0,SPSD0自动将数据按子地址复制到SPCR10中有关寄存器说明如下:
(1)PCR(引脚控制寄存器):主要为串口引脚和通用I/O引脚设置切换及时钟模式等。PCR的结构如图3.17所示,各比特位的功能如表3.15所示。图3.17PCR寄存器的结构
(2)SPCR1和SPCR2(串口控制寄存器1和2):控制串口的总体情况,反映串口的总体状态,SPCR1和SPCR2的结构如图3.18和图3.19所示,各比特位的功能见表3.16和表3.17。图3.18
SPCR1寄存器的结构图3.19
SPCR2寄存器的结构
(3)RCR1和RCR2(接收控制寄存器1和2):接收控制寄存器配置接收的有关参数,RCR1和RCR2的结构如图3.20和图3.21所示,各比特位的功能见表3.18和表3.19。
(4)XCR1和XCR2(发送控制寄存器1和2):发送控制寄存器配置发送的有关参数,XCR1和XCR2的结构如图3.22和图3.23所示,各比特位的功能见表3.20和表3.21。
(5)SRGR1和SRGR2(采样率发生器寄存器1和2):采样
率发生器寄存器配置有关发送与接收时钟、帧同步时钟等,SRGR1和SRGR2的结构如图3.24和图3.25所示,各比特位的
功能见表3.22和表3.23。帧周期、帧脉冲宽度与CLKG之间的关系如图3.26所示,其中FPER=15,FWID=1。图3.26帧周期、帧脉冲宽度与CLKG之间的关系3.6.3
McBSP的发送与接收
1.采样率发生器时钟和帧同步时钟的配置
如图3.27所示,设置SRGR1和SRGR2可配置采样率发生器时钟CLKG和帧同步时钟FSG。设置CLKSM位选择时钟来源是来自CPU时钟还是外部时钟CLKS,然后经CLKGDV分频得到采样率发生器时钟CLKG,它的频率与输入时钟的频率的关系如式3.4所示。图3.27采样率发生器工作原理框图(3.4)
CLKG再经FPER分频,并经FWID设置脉冲宽度,得到帧同步脉冲信号,其频率与CLKG之间的关系如式3.5所示。(3.5)
2.McBSP串行数据的接收
设接收的数据帧参数如下:
(R/X)PHASE=0;单相帧
(R/X)FRLEN1=0;每帧一个字
(R/X)WDLEN1=0;每字8bit
(R/X)FRLEN2=x,(R/X)FRLEN2=x;不考虑
CLK(X/R)P=0;接收数据在时钟下降沿采样,发送数据在时钟上升沿采样
FS(R/X)P=0;帧同步信号高电平有效
(R/X)DATDLY=1;1bit数据延迟
FPER=11
;接收帧周期=12
FWID=0
;帧脉冲脉冲宽度=1
RINTM=0;词尾驱动产生接收中断
RCOMPAND=0;无压扩,高位MSB先传输
McBSP串行数据的接收时序图如图3.28所示。图3.28McBSP串行数据的接收时序图当接收帧同步信号(FSR)变为有效状态时,它将在CLKR的第一个下降沿被检测,DR引脚上的数据经XDATDLY指定的延迟后移位存入RSR,当收满一个字(8bit、12bit、16bit、20bit、24bit或32bit)后,在字尾的上升沿将FSR的内容复制到RBR,如果DRR空,RBR再复制到DRR,并使RRDY的
状态位在CLKR的下降沿置1,如图3.28的B0处所示。然后由RRDY信号驱动产生接收中断信号RINT或DMA事件,CPU或DMA响应中断并读取DRR(可能会有一定延迟),然后置RRDY=0,如图3.28的C5处所示。
3.McBSP串行数据的发送
有关参数设置同接收部分,发送时序图如图3.29所示。图3.29
McBSP串行数据的发送时序图一旦产生发送帧同步信号,XSR[1,2]的值就经XDATDLY指定的延迟移出到DX引脚上,如图3.29的B7处,XRDY在DXR[1,2]复制到XSR[1,2]之后的CLKX下降沿置1,如图3.29的B0处所示,可以写入下一个数据,如果DXR[1,2]已被CPU或DMA写入数据,则XRDY=0,如图3.29的C5处所示。数据延迟是DX或DR引脚相对于帧同步脉冲的有效时刻而言的,图3.30显示了延迟0、1和2个CLK(R/X)时钟时,串行数据发送和接收的情况。图3.30
McBSP串行数据的发送或接收延迟示意图
3.7主机接口
3.7.1概述
5416的主机接口(HPI,HostPortInterface)是增强的8/16位接口,如图3.31所示,可将5416连接到8/16位的主机上。如果设置引脚HPI16=0(L电位),可将HPI配置为8位的接口(HPI8);如果要在HPI8模式下传送16位数据,可通过设置引脚HBIL电位及相关寄存器来完成;如果HPI=1(H电位),且外部I/O的地址总线和数据总线没有使用时,则可将HPI配置为16位的接口(HPI16)。图3.31
HPI8接口结构当采用HPI8接口时,主机通过5416内部的三个映射寄存器HPIA(HPI地址寄存器)、HPID(HPI数据寄存器)、HPIC(HPI控制寄存器)与5416进行通信,其中HPIA和HPID仅由主机访问,而HPIC可由主机和5416访问。3.7.2
HPI8接口结构
HPI8接口内有HPIC、HPIA、HPID等寄存器及相关逻辑控制单元,可以通过8位外部接口提供16位的数据给DSP。主机发送的连续两字节自动组成一个16位的字,由HBIL引脚电位的高低表明第一字节是高8位还是低8位。DSP将数据传送给主机的操作与此类似。HPI8接口和主机都能访问DSP的整个片内RAM,且两者与DSP时钟同步。3.7.3
HPI8引脚功能
HPI8引脚功能如表3.24所示。具体说明如下:
(1)HDS1、HDS2、HCS及HRDY之间的逻辑关系如图3.32所示。图3.32
HDS、HCS和HRDY之间的逻辑关系
(2)HCNTL0和HCNTL1的功能如表3.25所示。对于5416来说,片内RAM有5段存储器可以访问,它们分别是:
①0060H~007FH,ScratchPadRAM;
②0080H~7FFFH,DARAM0~3;
③18000H~1FFFFH,DARAM4~7;
④28000H~2FFFFH,SARAM0~3;
⑤328000H~3FFFFH,SARAM4~7。3.7.4
HPI8有关寄存器
HPI8有关寄存器的功能如表3.26所示。
HPIC采用类似高8位与低8位对称的结构。DSP以映射寄存器形式访问HPIC,虽然高8位不使用,但主机也把它看做16位的寄存器,写入时高8位和低8位必须相同。
由于比特位的功能及读写要求不同,HPIC在主机读写时与DSP读写时的内容也不同,具体如图3.33所示。图3.33
HPIC在主机读写时与DSP读写时的内容3.7.5非复用模式下的HPI16接口
HPI16有两种模式连接到主机,即复用和非复用模式。设置引脚HMODE=0时为复用模式,复用模式允许主机操作时使用HCTL0和HCTL1引脚控制信号;设置引脚HMODE=1时为非复用模式,这种模式仅在HPI地址总线和数据总线完成读写操作时使用。
5416没有HMODE引脚,仅支持非复用模式。其地址线为18位,能访问片内全部存储器。在非复用模式下,主机通过数据总线访问HPID,通过地址总线访问HPIA,而HPIC不可用,因为HPIC没有HCNTL信号,自然也没有DSPINT和HINT中断发生。主机用HDS1、HDS2和HCS引脚信号初始化访问过程,用HR/W引脚信号控制传输方向,HPI16用HRDY引脚信号延迟主机访问,但不使用HAS、HCNTL0、HCNTL1等引脚。而在非复用模式下,所有的主机访问都是初始化一个DMA读/写操作。图3.34为HPI16接口在非复用模式下的方框图。图3.34非复用模式下的HPI16接口方框图
3.8
DMA控制器
直接存储器访问控制器(DMA)允许在没有CPU参与的情况下,实现片内存储器之间及片内存储器与片外存储器之间的数据传输。5416共有6个独立的可编程DMA传输通道,允许6种不同内容的数据传输,它有以下主要特点。
(1)后台操作,DMA控制独立于CPU,当一帧或一块数据传输结束时,每个DMA通道会发送一个中断到CPU。
(2)6个通道相互独立,但优先级可编程设置。每个通道都可实现块传输和帧传输,每个数据可以为单字模式(16位)或双字模式(32位)。
(3)事件同步。读、写和帧操作都可以由指定的事件触发。(4)地址产生可编程,且提供主机接口访问。
有关DMA的操作如下。
(1)读传输:DMA从源位置读一个数据,源位置可以为程序、数据或I/O空间。
(2)写传输:DMA将源位置读取的一个数据写到目的位置,目的位置可以为程序、数据或I/O空间。
(3)单元数据传输:一个数据单元的读传输与写传输的
结合。
(4)帧传输:DMA移动一帧中所有的数据,每个DMA传输的帧有多少个数据可独立编程设置。
(5)块传输:DMA移动一块中所有的帧,每个DMA传输的块有多少帧可独立编程设置。3.8.1
DMA寄存器
DMA有关的寄存器较多,与McBSP类似,也采用了子地址寻址方式。5416的DMA有关寄存器的功能如表3.28所示。
1.子地址访问
DMA的子地址访问与McBSP类似,如图3.35所示,也是通过复接器实现的,只是数据寄存器多了一个带子地址自动增量的DMSDI寄存器。如果对子地址的读写是通过DMSDI来实现的,则每次读写DMSDI后,DMSA的子地址会自动增1,并指向下一个子地址,便于对连续子地址寄存器进行赋值。如对通道5的5个寄存器初始化示例如下:
DMSA.set55H
DMSDI.SET56H
DMSRC5.SET19H
DMDST5.SET1AH
DMCTR5.SET1BH
DMSFC5.SET1CH
DMMCR5.SET1DH
STMDMSRC5,DMSA
;如果以下DMSDN都改为DMSDI,则相应修改DMSA的指令可省略
STM#1000H,DMSDN
STMDMDST5,DMSA
STM#2000H,DMSDN
STMDMCTR5,DMSA
STM#0010H,DMSDN
STMDMSFC5,DMSA
STM#0020H,DMSDN
STMDMMCR5,DMSA
STM#0000H,DMSDN图3.35
DMA的子地址访问
2.DMPREC(DMA通道优先级和使能控制寄存器)
DMPREC负责配置DMA每个通道的使能、优先级别及中断方式等信息,其结构如图3.36所示,各比特位的功能如表3.29所示。图3.36
DMPREC的结构
3.DMA中断复用
由于DMA中断较多,而IMR/IFR的比特位有限,只有DMAC4和DMAC5两个通道的中断安排在IMR/IFR的bit13~bit12位上,其他DMA中断采用复用技术与其他中断共IMR/IFR,DMPREC的INTOSEL位负责切换复用方式。C54x不同芯片的中断不完全相同,5416的DMA中断复用如表3.30所示。3.8.2
DMA各个通道寄存器
每个DMA通道都有5个通道寄存器,用于配置各自的操作,它们分别是源地址寄存器(DMSRCn,n=0~5,以下同)、目的地址寄存器(DMDSTn)、单元计数器(DMCTRn)、同步事件与帧个数寄存器(DMSFCn)和传输模式控制寄存器(DMMCRn)。
1.DMSRCn和DMDSTn(源地址和目的地址寄存器)
源地址和目的地址都是16位的地址,因此DMA通道不能跨页传输数据。在传输过程中,DMA会按指定的方式实时地更新源地址和目的地址,CPU也可以读取这些地址,以便监控传输状态。如果在块传输过程中,CPU修改了这些地址,则立刻生效,并影响传输过程。
DMA源程序地址页寄存器(DMSRCP,子地址为0x1E)的低7位指定源程序地址的所在页,DMA目的程序地址页寄存器(DMDSTP,子地址为0x1F)的低7位指定目的程序地址的所在页,它们的其他位均保留,如图3.37和图3.38所示。
2.DMCTRn(单元计数器)
DMCTRn用来跟踪第n个通道的传输次数,看做16位无符号整数,实际传输次数比DMCTRn多1。在多帧传输模式下,每次传输后,DMCTRn自动减1,当到达每帧的最后一个单元时,则从DMGCR中重载DMCTRn的初值。
在自动缓冲模式(ABU)下,DMCTRn为缓冲器的大小,但不会自动减1,其功能与McBSP相同。
3.DMSFCn(同步事件与帧个数寄存器)
DMSFCn确定传输的帧长、字长及哪个同步事件用于DMA传输,其结构如图3.39所示,各比特位的功能如表3.31所示。图3.39
DMSFC的结构
DMA单元传输可以由各种事件触发,包括McBSP收发事件、定时中断事件及外中断事件等,也可以运行在非同步事件(与任何事件无关的)。当一个DMA通道与一个特定的事件同步时,每个传输单元要等待该事件出现才可以操作,如果不与任何事件同步,则以尽可能快的速度进行。5416的DMA同步事件选择如表3.32所示。帧计数器(FrameCount)指定在一个数据块中传输的帧数,实际传输的帧数比FrameCount大1。每完成一帧传输,FrameCount的值就自动减1。一旦传输到最后一帧,如果自动初始
化模式使能,则FrameCount会自动重载DMGFR中的值。单元计数器(DMCTRn)与DMSFCn中的FrameCount可以同时使用,传输单元数为两者的乘积。
4.DMMCRn(传输模式控制寄存器)
DMMCRn配置DMA的自动初始化模式、中断产生方式,源地址和目的地址的选择空间、变址方式等,其结构参见图3.40,各比特位的功能参见表3.33。图3.40
DMMCR的结构自动初始化模式仅在多帧模式(CTMOD=0)下可用。在自动初始化模式使能的情况下,当块传输完成时,下列寄存器自动加载初值,为下一块数据块传输做好准备。
DMSRCn加载DMGSA(DMA全局源地址重载寄存器);
DMDSTn加载DMGDA(DMA全局目的地址重载寄存器);
DMCTRn加载DMGCR(DMA全局单元个数重载寄存器);DMSFCn的FrameCount加载DMGFR(DMA全局帧个数重载寄存器)的低8位,高8位保留。
DINM、CTMOD和IMOD组合确定DMA块传输中断模式,见表3.34。
DMA的源地址和目的地址寻址非常灵活,共有7种模式。正常情况下地址有增1、减1、不变及增DMIDX0或DMIDX1等5种模式。在多帧模式下,如果在帧结束处,还可以利用帧变址寄存器DMFRI0或DMFRI1参与修改下一帧的地址。所有16位DMA传输都是由一次读传输后接一次写传输组成的。从片内源地址到目的地址的一次DMA传输需4个CPU周期,其中读传输和写传输各需2个CPU周期。如果源地址或目的地址来自片外存储器,则一次DMA的传输时间与等待状态、分区转换周期、有效的DMA通道数和HPI的活动情况有关。例3.3利用DMA的通道1同步接收McBSP0的数据,McBSP0的数据格式为一块分4帧,每帧4个单元,所有相同编号的单元按帧顺序存储在一起,存储顺序为帧0~3的单元0,帧0~3的单元1,…,帧0~3的单元3。参考程序如下:
3.9外部总线操作
C54x的外部总线由数据总线、地址总线和一组访问片外存储器和I/O端口的控制线组成。不同芯片的控制线略有不同,5416有以下总线端口:
(1)地址线A22~A0;
(2)数据线D15~D0;
(3)控制线PS、DS、IS、MSTRB、IOSTRB、R/W、HOLD、HOLDA、MSC、IAQ、IACK、READY等。其中MSTRB用于访问程序或数据存储器,而IOSTRB用于访问I/O设备。3.9.2外部总线时钟
外部总线时钟CLKOUT由DSP时钟经DIVFCT分频而来。5416的分区切换控制寄存器(BSCR,地址为0x29)的DIVFCT位控制主时钟的输出频率。时钟输出CLKOUT的频率等于1/(DIVFCT+1)×fCPU,DIVFCT=0,1,2,3,默认DIVFCT=3。3.9.3外部总线优先权及等待
C54x片内有1条程序总线(PB)、3条数据总线(DB)和4条地址总线(PAB、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年单晶生产炉项目提案报告模板
- 2022年《想做熊的孩子》观后感5篇模板
- 中层干部竞争上岗演讲稿范文集锦五篇
- 总经理辞职报告15篇
- 2025年板式家具机械项目申请报告模范
- 幼师专业学生自我鉴定(5篇)
- 客服工作总结15篇
- 2024年虚拟现实游戏开发与授权经营合同
- 2024年育儿嫂服务合同
- 校园文明主题演讲稿(15篇)
- 北京市东城区2023-2024学年高二上学期期末考试+英语 含答案
- 服装厂安全教育培训规章制度
- 车辆修理厂自查自纠整改方案及总结报告
- 2024版成人脑室外引流护理TCNAS 42─20241
- 湖北省八校2025届高二生物第一学期期末质量检测模拟试题含解析
- 人教版八年级音乐上册 第一单元 《拉起手》 教案
- 《马克思主义基本原理》学习通超星期末考试答案章节答案2024年
- 一例尿毒症患者股骨颈骨折的临床护理查房
- 工艺以及质量保证措施,工程实施的重点、难点分析和解决方案
- 2023年小学二年级数学竞赛试题(后附答案)
- 七年级上册道德与法治第1-4单元共4个单元复习教学设计
评论
0/150
提交评论