DSP课程设计TMS320LF2407A最小系统设计.docx
《DSP课程设计TMS320LF2407A最小系统设计.docx》由会员分享,可在线阅读,更多相关《DSP课程设计TMS320LF2407A最小系统设计.docx(14页珍藏版)》请在冰豆网上搜索。
DSP课程设计TMS320LF2407A最小系统设计
一、设计要求
要求设计的最小系统包括TMS320LF2407A基本电路、电源电路、扩展RAM、指示灯等部分,需要用protel软件完成原理图和PCB的设计,并编写验证程序,在实验箱上进行调试。
二、设计原理及框图
对于DSP2407,加上电源、复位和晶振,就构成了DSP最小系统。
为使这一最小系统能工作在开发状态下,应配以锁相环、JTAG接口、扩展片外程序存储器、FLASH烧写、指示灯、引脚扩展以及对其他引脚的处理等电路。
DSP2407最小系统框图如下图所示:
三、主要芯片说明
3.1TMS320LF2407A
TMS320LF2407A的常用资源见下表:
片内资源
功能参数描述
存储资源
FLASH;32KB;DARAM;544KB;SARAM;2KB
2个事件管理EVA和EVB
每个含2个16位通用定时器TIM,8个16位脉冲调宽PWM通道,3个捕获单元CAP,1套正交编码脉冲QED接口
通用I/O
40个可单独编程的通用输入/输出引脚GPIO,部分属于复用脚
串行接口
现场总线CAN2.0B,串行通信接口SCI,串行外设接口SPI
模拟接口
ADC;16个输入通道,10位,最小转换时间为0.5us
核心模块
PLL时钟发生器,看门狗定时器(WDT),增强中断控制器,5个外部中断(2个电技驱动保护,2个可屏蔽中断,复位),3种低功耗电源管理模式
3.2TPS7333Q
TPS7333Q是TI公司生产的一款电压转换芯片,能将5V电压转换成3.3V,
其特点如下:
1.TPS7333Q克服了常规LDO稳压器的弊端,它具有非常低的静态电流,即使对于变化较大的负载,静态电流可以保持稳定
2.具有关断特性
3.具有输入和输出电容的选择
3.3CY7C1021
选用的RAM型号为CY7C1021,64k*16位大小。
其高速转换时间:
8、10、12、15ns,CMOS低功耗管理,TTL可共存界面,由3.3V供电,完全静态管理:
无时钟或刷新要求,三种输出状态,高位、低位数据控制
3.4MAX811
MAX811是一款四管脚微处理器复位芯片,用于监控微控制器和其他逻辑系统的电源电压,带有手动复位输入低电平复位芯片,支持手动复位功能,当MR引脚持续存在180ms的低电平,芯片的复位输出即会产生复位信号。
3.574HC08
74HC08是4-2输入与门,相当于四个两输入与门。
其逻辑图如下:
引脚图为
四、设计过程
4.1电源电路
电源电路的选择是系统设计的一个重要的部分,设计好坏对系统的影响最大。
这里使用TI公司的TPS7333Q来设计电源供电电路。
电源插孔J1标识为内正外负,5V稳压直流电源输入。
FUSE为自恢复保险;7333电源转换芯片作为5V转3.3V的高性能稳压芯片。
并可提供上电复位信号。
该信号/RS_DSP接到DSP的复位引脚上。
7333输出后的10uF和0.1uF的电容不能省略,否则得不到稳定的3.3V电压。
电容滤波电路是滤去所得3.3V的非直流部分。
4.2复位电路
TMS320LF2407A内部带有复位电路,因此可以直接RS复位引脚外面接一个上拉电阻即可,这对于简化外围电路,减少电路板尺寸很有用处,但是为了调试方便经常采用手动复位电路。
这里使用MAX811复位芯片。
4.3PLL锁相环电路
在DSP内部,有一个锁相环时钟模块PLL,它是被作为一个片内外设看待的,接在在片内外设总线上,为DSP2407提供所需的各种时钟信号。
PLL锁相环电路时利用锁相环技术队输入信号进行分频或倍频的电路。
有了PLL,可以选择片外的振荡源频率更低一些,这样可以相对减少印刷板级的电磁干扰,使硬件系统更容易实现,系统性能更好。
其电路如下图:
PLL的分频系数和倍频系数由SCSR1寄存器的第11-9位决定。
CLKPS2
CLKSP1
ClKSP0
系统时钟频率
CLKPS2
CLKSP1
ClKSP0
系统时钟频率
0
0
0
4*fin
1
0
0
0.8*fin
0
0
1
2*fin
1
0
1
0.66*fin
0
1
0
1.33*fin
1
1
0
0.57*fin
0
1
1
1*fin
1
1
1
0.5*fin
4.4晶振电路
DSP2407最小系统的时钟电路设计有两种工作方法。
一种是利用利用锁相环时钟模块中提供内部振荡电路,在DSP芯片的引脚XTAL1/CLKIN与XTAL2之间连接一晶体,启动内部振荡器。
另一种方法是不使用片内的振荡电路,完全由外部有源晶体振荡器产生时钟电路信号。
第二种方法比较复杂,这里使用第一种方法。
4.5外部扩展存储器
DSP2407A仿真开发和脱机工作时使用不同的程序存储器。
在仿真开发时,DSP2407A使用片外扩展的SARAM作为程序存储器;而在脱机工作时,DSP2407A使用片内的FLASH存储器作为程序存储器。
2407A片内RAM只有2K,如果要调试较大一些的程序的话就只能外扩RAM作为程序存储器。
外扩的RAM也可以作为数据存储器。
因为2407A内部RAM空间不足,数据采集大的场合,所有采样结果均保存在外部的CY7C1021中,CY7C1021在调试过程中作为程序的外部存储器,正常运行时作为AD采样结果的存储空间。
4.6JTAG仿真接口电路
JTAG是JOINTTESTACTIONGPOUP的简称,JTAG接口用于连接DSP系统板和仿真器,实现仿真器DSP访问,JTAG的接口必须和仿真器的接口一致,否则将无法连接上仿真器。
其连接图如下:
4.7FLASH烧写的电源供给
VCCP为TMS320LF2407A的flash烧写电源输入脚,flash烧写要用到5V电源,而不是工作电压3.3V。
而DSP正常工作时,VCCP应接成低电平,设计电路如下:
4.8引脚扩展
为方便使用扩展,将TMS320LF2407A的所有引脚均通过排针引出边。
这些引脚定义如图所示:
4.9指示灯电路
4.10其他引脚的处理
1.为使TMS320LF2407A最小系统正常工作,在设计时需考虑一下四种类型电源,以满足DSP芯片工作。
CPU核电源:
CPU核3.3V引脚VDD,CPU核地引脚VSS
I/O口电源:
I/O口3.3V引脚VDDO,I/O口地引脚VSSO
PLL电源:
PLL3.3V引脚PLLVCCA,PLL地引脚VSS
FLASH编程电源:
FLASH编程5V引脚VCCP
应当把2407A以上所有电源引脚都接到各自供电电源上。
2.DSP其他引脚功能处理
READY接高电平,使其一直固定为有效的访问外部存储器状态
ENA_144通过上拉电阻接3.3V,其意义为使外部接口信号有效
VIS_OE可视为输出使能引脚,故悬空
TP1、TP2测试引脚,悬空
3.未用I/O引脚处理
对于未用的I/O引脚,如果缺省状态为输出引脚,则可以悬空不接;如果缺省状态为输入引脚,可以将它们上拉或下拉为固定电平。
这样做有两方面原因:
一是悬空不接时,电平浮动,对于DSP是一种干扰;二是输入引脚悬空,当高、低电平转换时,会产生功耗。
对于未用的I/O引脚,若没有做硬件处理,在软件初始化时把这些I/O引脚设置为输出引脚。
4.11测试电路
五、软件设计
在实验箱按测试电路连接好电路,以备测试仿真使用。
测试程序如下:
#include"2407c.h"
#defineuintunsignedint
#defineucharunsignedchar
/*************************************************************
*系统初始化子程序
************************************************************/
intinitial()
{
asm("setcINTM");//关总中断
asm("clrcSXM");//抑制符号位扩展
asm("clrcOVM");//累加器正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
*WDCR=0x00E8;//关闭看门狗
*SCSR1=0x81FE;//CLKIN=10M,CLKOUT=CLK*4=40M
*IMR=0x0000;//禁止所有中断
*IFR=0xFFFF;//清全部中断,写1清0Z
WSGR=0x00;//禁止所有等待
*MCRA=0;//IOPA、IOPB配置为一般I/O功能
*MCRC=0;//IOPE、IOPF配置为一般I/O功能
*PADATDIR=0xFF00;//IOPA输出低电平
*PBDATDIR=0xFF00;//IOPB输出低电平
*PEDATDIR=0xFF00;//IOPE输出低电平
}
/*************************************************************
*延时pp个ms
************************************************************/
voiddelay(uintpp)
{
uintk,i;
for(k=0;k{
for(i=0;i<3997;i++);//延时1ms(用汇编语句具体算出,可见DSP学习心得)
}
}
/*************************************************************
*其他中断
*************************************************************/
voidinterruptnothing()
{
return;
}
/*************************************************************
*主程序
************************************************************/
voidmain(void)
{
uinti=0;
initial();//初始化
while
(1)
{
//全亮
*PEDATDIR=0xFF1C;//LED1~LED3E口用到2/3/4脚
*PADATDIR=0xFF30;//LED4~LED5A口用到4/5脚
*PBDATDIR=0xFF86;//LED6~LED8B口用到1/2/7脚
delay(1000);
//全灭
*PEDATDIR=0xFF00;
*PADATDIR=0xFF00;
*PBDATDIR=0xFF00;
delay(1000);
//123
//45
//678
*PEDATDIR=0xFF08;//LED1亮
delay(1000);
*PEDATDIR=0xFF00;//LED1灭
*PBDATDIR=0xFF04;//LED2亮
delay(1000);
*PBDATDIR=0xFF00;//LED2灭
*PEDATDIR=0xFF04;//LED3亮
delay(1000);
*PEDATDIR=0xFF00;//LED3灭
*PADATDIR=0xFF10;//LED4亮
delay(1000);
*PADATDIR=0xFF00;//LED4灭
*PEDATDIR=0xFF10;//LED5亮
delay(1000);
*PEDATDIR=0xFF00;//LED5灭
*PADATDIR=0xFF20;//LED6亮
delay(1000);
*PADATDIR=0xFF00;//LED6灭
*PBDATDIR=0xFF02;//LED7亮
delay(1000);
*PBDATDIR=0xFF80;//LED7灭、LED8亮
delay(1000);
}
}
六、最小系统原理图
七、设计体会及收获
作为电子信息专业的学生,学过DSP之后我觉得能做这样的课程设计是十分有意义的。
在已度过的两年半大学生活里我们接触的是专业基础课程。
我们在课堂上学的仅仅是专业基础课的理论面,如何自己动手做各种电子设计?
如何把我们所学知识运用到实践中去?
这样的课程设计无疑是为我们提供的实践平台。
刚看到这个课程设计的要求时,心里一片茫然,感觉它与我所学DSP知识没有太大的联系,有种无从下手的感觉。
后来通过老师的讲解和我在图书馆和网上查找的资料,心里才有一些眉目。
在之后的设计中又勤于向老师和同学请教,才完成了这次课程设计。
这次课程设计中,我对DSP有了全新的认识,知道了自己在平时的学习中存在的不足之处,在以后的学习中加以弥补。
同时也学会了使用protelDXP2004。
最后感谢老师和同学的热心帮助!