时钟与定时器:
1)时钟产生器
产生CPU的工作时钟,并提供CLKOUT时钟输出;
2)通用定时器、时时钟以及看门狗定时器
通过计数器为系统提供定时时钟和年、月、日、时、分、秒等时钟信号,以及监控系统正常运行的看门狗时钟,并能发出相应中断
外部设备连接接口:
1)外部存储器连接接口
用来同并行存储器连接、同外部并行设备进行连接
2)主机接口
用来对DSP进行控制、程序加载、数据传输等工作
信号采集:
采集模拟信号的模/数转换器
提供数字信号输入、输出功能的通用输入/输出接口
通信接口:
多通道缓冲串口、I2C接口、异步串口、USB接口以及多媒体卡/SD卡接口
其他外设:
DMA控制器、指令流水线等
辅助CPU工作,提高DSP的工作效率
2、时钟发生器
时钟模式寄存器:
工作模式:
1)旁路模式(BYPASS)
BYPASS DIV=00,输出时钟信号的频率与输入信号的频率相同,即一分频
BYPASS DIV=01,输出时钟信号的频率是输入信号频率一半,即二分频
BYPASS DIV=1x,输出时钟信号的频率是输入信号频率1/4,即四分频
2)锁定模式(LOCK)
CLKOUT输出:
频率由系统寄存器(SYSR)中的CLKDIV确定:
CLKDIV=000b, CLKOUT的频率等于CPU时钟的频率
CLKDIV=001b, CLKOUT的频率等于时钟的频率的1/2
CLKDIV=010b, CLKOUT的频率等于时钟的频率的1/3
CLKDIV=011b, CLKOUT的频率等于时钟的频率的1/4
CLKDIV=100b, CLKOUT的频率等于时钟的频率的1/5
CLKDIV=101b, CLKOUT的频率等于时钟的频率的1/6
CLKDIV=110b, CLKOUT的频率等于时钟的频率的1/7
CLKDIV=111b, CLKOUT的频率等于时钟的频率的1/8
使用方法:
1)省电(IDLE)
与省电有关的位是IAI
2)DSP复位
CLKMD引脚为低电平,输出频率等于输入频率;
CLKMD引脚为高电平,输出频率等于输入频率的一半
3)失锁
锁相环对输入时钟跟踪锁定之后,由于其他原因使其输出时钟发生偏移
使用方法及实例:
1)利用库函数配置时钟发生器的方法
首先要声明PLL配置结构,具体声明如下:
PLL_Config Config_PLL = {
1, /*iai 休眠后重新锁相 */
1, /*iob 失锁后进入旁路模式并重新锁相 */
6, /*pllmult CLKIN * pllmult = DSP主时钟*/
0 /*div CLKOUT= DSP主时钟/(div+1) */
};
之后运行配置函数:
PLL_config(&Config_PLL);
也可以通过函数设置PLL频率:
PLL_setFreq (6, 1);
通过PLL_setFreq函数可以复位PLL锁相环,并改变倍频和分频数从而得到所需的频率
2)时钟发生器的调试
检查DSP的时钟输入引脚CLKIN、时钟输出引脚CLKOUT和时钟模式引脚CLKMD连接是否正确,正常情况下CLKIN应接时钟源,而CLKMD应拉高或拉低,CLKOUT应是信号输出引脚;
系统加电后测量CLKIN引脚时钟输入是否正常,信号的高低电平及占空比是否满足需要;
在没有进行软件设置的情况下,DSP在复位后CLKOUT的输出直接受CLKMD控制,当CLKMD为高,CLKOUT的输出频率将等于CLKIN的频率,CLKMD为低,则CLKOUT输出将等于CLKIN的频率的1/2;
如果以上步骤运行正常,则利用软件设置CLKMD寄存器,使时钟产生器工作于PLL锁相环模式下,此时再检测CLKOUT信号,查看锁相环是否正常工作。
3、通用定时器
结构框图—20位的定时器:
定时器的工作模式:
当FUNC=00b时,TIN/TOUT为高阻态,时钟源是内部时钟(CPU时钟)。
当FUNC=01b时,TIN/TOUT为定时器输出,时钟源是内部时钟(CPU时钟)。
当FUNC=10b时,TIN/TOUT为通用输出,时钟源是内部时钟(CPU时钟)。
当FUNC=11b时,TIN/TOUT为定时器输入,时钟源是外部时钟。
使用方法:
1)初始化定时器
停止计时(TSS=1),定时器装载使能(TLB=1),并将周期寄存器(TIM,PSC)的内容复制到计数寄存器(PRD,TDDR);
将预定标计数周期数写入TDDR;
将主计数器周期数装入PRD;
关闭定时器装载(TLB=0),启动计时(TSS=0)
2)停止/启动定时器
TSS=1,停止计时
TSS=0,启动计时
3)DSP复位
通用定时器的应用:
首先定义通用定时器句柄和配置结构:
TIMER_Handle hTimer;
TIMER_Config Config_TIMER = {
0X0310,
/*; 载入 TCR0t:; IDLE_EN = 0 (不允许空闲状态); FUNC = 00b (引脚为高阻态)
; TLB = 0 (TLB 被清除); FREE = 1 (遇到断点时时钟不停止)
; PWID = 00b (脉冲延迟一个 CPU 时钟周期)
; ARB = 1 (当TIM计数到0时重新载入TIM和PSC)
; TSS = 1 (停止计数器); C/P = 0 (引脚输出为脉冲模式)
; POLAR = 0 (引脚信号开始为低); 其他为0 */
0X197,
/* prd = 407 */
0X0007
/* prsc = 7 TDDR=7 */
//; 计数器每 3264(408*8) 个时钟周期输出:
};
接下来打开句柄:
hTimer = TIMER_open(TIMER_DEV0,0); //设置计数器0,中断20K/s
调用定时器配置函数对计数器初始化:
TIMER_config(hTimer,&Config_TIMER);
调用定时器开始函数使定时器开始工作:
TIMER_start(hTimer);
如果在程序中需要暂时停止定时器计数可以调用定时器停止函数:
TIMER_stop(hTimer);
当使能定时器中断时,则当定时中断发生时将运行定时中断服务程序:
interrupt void Timer0_Isr()
{
……
}
通用定时器的调试:
设定通用定时器的时钟源,通用定时器的时钟源可以是CPU时钟,也可由外部信号提供,如果选择外部时钟,则需要将这个信号从TIN/TOUT引脚引入,应当注意此时TIN/TOUT引脚将不能够作为定时器输出使用。
正确设置定时器寄存器值,使定时器开始工作。
在定时器中断服务程序中设置断点,看能否进入定时中断,如果定时器的时钟源是CPU时钟,这时也可以将定时器信号从TIN/TOUT引脚输出,通过示波器检测定时器输出是否正常。
4、外部存储器接口
外部寄存器接口硬件连接与配置:
异步存储器接口
同步突发静态存储器(SBSRAM)
同步突发动态存储器(SDRAM)
C55x与一片64Mbit(16位宽)SDRAM的连接:
C55x与一片64Mbit(32位宽)SDRAM的连接:
C55x与一片128M位(x32)SDRAM的连接:
多通道选择:
1)接收多通道选择
由MCR1中的RMCM位确定
通道可以独立地被使能或禁止,使能通道的选择由接收通道使能寄存器RCER确定
如果某个接收通道被禁止,在这个通道上接收的数据只传输到接收缓冲寄存器RBR中,并不复制到DRR,因此不会产生DMA同步事件
2)发送多通道选择
由MCR2中的XMCM字段确定
当XMCM=00b时,所有128发送通道使能且不能被屏蔽
当XMCM=01b时,由发送使能寄存器XCER选择通道,如该通道没有被选择则该通道被禁止
当XMCM=10b时,由XCER寄存器禁止通道,如果该通道没有被禁止则通道使能
当XMCM=11b时,所有通道被禁止用,而只有当对应的接收通道使能寄存器RCER使能时发送通道才被使能,当该发送通道使能时,由XCER寄存器决定该通道是否被屏蔽
McBSP寄存器:
1)收发通道寄存器
2)时钟和帧同步寄存器
主要用于控制时钟和帧同步信号的产生、收发数据帧格式和串口状态的检测等
多通道选择寄存器:
1)多通道控制寄存器
两个多通道控制寄存器MCR1和MCR2
2)收发通道使能寄存器
有8个接收通道使能寄存器RCERA到RCERH和8个发送通道使能寄存器XCERA到XCERH