DSP课程设计TMS320LF2407A最小系统设计
- 格式:doc
- 大小:376.50 KB
- 文档页数:11
一、设计要求
要求设计的最小系统包括TMS320LF2407A基本电路、电源电路、扩展RAM、指示灯等部分,需要用protel软件完成原理图和PCB的设计,并编写验证程序,在实验箱上进行调试。
二、设计原理及框图
对于DSP2407,加上电源、复位和晶振,就构成了DSP最小系统。为使这一最小系统能工作在开发状态下,应配以锁相环、JTAG接口、扩展片外程序存储器、FLASH烧写、指示灯、引脚扩展以及对其他引脚的处理等电路。
DSP2407最小系统框图如下图所示:
三、主要芯片说明
3.1 TMS320LF2407A
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种低功耗电源管理模式
TMS320LF2407A 锁相环
电源模块
扩展片外程序存储器 JTAG电路 晶振电路
FLASH烧写 滤波电路
复位电路 指示灯
引脚扩展 3.2 TPS7333Q
TPS7333Q是TI公司生产的一款电压转换芯片,能将5V电压转换成3.3V,
其特点如下:
1.TPS7333Q克服了常规LDO稳压器的弊端,它具有非常低的静态电流,即使对于变化较大的负载,静态电流可以保持稳定
2.具有关断特性
3.具有输入和输出电容的选择
3.3 CY7C1021
选用的RAM型号为CY7C1021,64k*16位大小。其高速转换时间:8、10、12、15ns,CMOS低功耗管理,TTL可共存界面,由3.3V供电,完全静态管理:无时钟或刷新要求,三种输出状态,高位、低位数据控制
3.4 MAX811
MAX811是一款四管脚微处理器复位芯片,用于监控微控制器和其他逻辑系统的电源电压,带有手动复位输入低电平复位芯片,支持手动复位功能,当MR引脚持续存在180ms的低电平,芯片的复位输出即会产生复位信号。
3.5 74HC08
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.3 PLL锁相环电路
在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.6 JTAG仿真接口电路
JTAG是JOINT TEST ACTION GPOUP的简称,JTAG接口用于连接DSP系统板和仿真器,实现仿真器DSP访问,JTAG的接口必须和仿真器的接口一致,否则将无法连接上仿真器。其连接图如下:
4.7 FLASH烧写的电源供给
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电源:PLL 3.3V引脚PLL VCCA,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"
#define uint unsigned int
#define uchar unsigned char
/*************************************************************
*系统初始化子程序
**************************************** ********************/
int initial ( )
{
asm (" setc INTM"); //关总中断
asm (" clrc SXM"); //抑制符号位扩展
asm (" clrc OVM"); //累加器正常溢出
asm (" clrc CNF"); //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
**************************************** ********************/
void delay(uint pp)
{
uint k,i;
for(k=0;k
{
for(i=0;i<3997;i++);//延时1ms(用汇编语句具体算出,可见DSP学习心得)
}
}
/*************************************************************
*其他中断
***************************************** ********************/
void interrupt nothing()
{
return;
}