DSP课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、设计任务 (1)
二、实验目的 (1)
三、设计内容 (2)
4、实验原理 (2)
4.1DSP(2812)性能概述 (2)
4.2TMS320F2812的引脚图及功能 (4)
4.3DSP最小系统 (4)
5、程序设计 (7)
5.1流程图 (7)
5.2程序源代码 (8)
六、实验总结 (13)
七、参考资料 (14)
4.2TMS320F2812的引脚图及功能
如图4-2-1为TMS320F2812引脚图以及各个引脚的作用。
图4-2-1
4.3DSP最小系统
系统整体框图如下图4-3-1所示。
电源电路
复位电路
时钟电路JTAG接口电路DSP2812
LED流水灯
图4-3-1系统整体框图
1、电源转换
DSP最小系统仅有5V电源供电,由于DSP芯片供电电压只能是3.3V,所以在设计电路时,需要将5V电源转换为3.3V给CPU供电,因此使用了TI公司的5V/3V的
TPS7333Q高性能稳压芯片,并可提供上电复位信号,该信号/RS—DSP接到DSP的复位引脚上。该芯片最大输出电流500mA。TPS7333Q输出后的10μf和0.1μf的电容不能省略,否则得不到稳定的3.3V电压。图4-3-2为电源转换原理图。
图4-3-2电源转换原理图
2、复位电路
DSP系统的复位电路的设计对于系统性能有重要影响。DSP2812为低电平复位,由于内部有复位电路,所以直接在复位引脚/xrs接一个10K的上拉电阻即可;有些电源芯片有复位引脚,可用于DSP的直接复位。
复位电路原理图如图4-3-3所示:
图4-3-3复位电路原理图
3、时钟电路
TMS320F2812DSP的时钟可以有两种连接方式,即外部振荡器方式和谐振器方式。
有源晶振驱动能力较强,频率范围较宽,在1HZ—400MHZ之间。无源晶振驱动能
力差,价格便宜,频率范围较窄。
本文采用的是外部有源时钟方式,直接选择一个3.3V供电的30MHz有源晶振实现。晶振电路如图4-3-4所示。
图4-3-4时钟电路
4、JTAG仿真接口电路
几乎所有的高速控制器和可编程器件都配有标准仿真接口JTAG,F2812也不例外。JTAG扫描逻辑电路用于仿真和测试,采用JTAG可实现在线仿真,同时也.是调试过程
装载数据、代码的唯一通道。通过JTAG接口可将仿真器与目标系统相连接。为了与仿真器通信,DSP控制板必须带有14引脚的双排直插管座。F2812和14针仿真插座连接的电路如图4-3-5。
图4-3-5JTAG接口设计电路
5、流水灯控制系统电路
流水灯控制电路如下图4-3-6所示。
图4-3-6流水灯电路图
五、程序设计:
5.1程序流程图
这里用软件延时的方法来调整发光二极管的延时时间间隔。当发光二极管被点亮
之后,通过改变端口的数据输出,达到点亮不同的LED显示管的目的。
实验要求实现LED显示管的循环显示:先第1个LED亮,然后是第2个LED亮,
第3个LED显示管亮。第4个灯亮。如此循环显示。
首先给temp赋初值00000001(由于高八位都为00000000,这里只写低八位),
再给寄存器GPBCLEAR的值与temp的值相或,其相应位被写1,实现相应的端口输
出低电平,LED灯亮,通过寄存器GPBSET的值再与temp值相或,则相应的端口输
出高电平,LED等灭,通过tenp的值左移便可以完成00000001……10000000的改变,每改变一次就可以实现相应的LED灯的亮灭。当数据的最高位等于1的时候,temp重新赋初值,即给程序重新赋值为00000001,进行下一轮的循环。
如此即可以实现实验要求的功能。程序流程图如下图5-1-1所示。
开始
初始化设计
将temp的值与寄存器
GPBCLEAR值相或,则相
应引脚输出低电平,LED
灯亮
延时
temp值与寄存器GPBSET
的值相或,相应引脚输出
高电平,LED灯灭
temp左移一位
y
判断temp值是否为
0X0100
N
LED灯显示
结束
图5-1-1程序流程图
5.2程序源代码
(1)系统初始化子程序DSP28_sysctrl.c #include"DSP281x_Device.h"
#include"System.h"
#pragma CODE_SECTION(InitFlash,"ramfuncs");
/*------------------------------------------*/ /*形式参数:void*/ /*返回值:void*/
/*函数描述:初始化系统*/ /*------------------------------------------*/ void InitSysCtrl(void)
{
DisableDog();//禁止看门狗
InitPll(0x02);//设置系统时钟=XCLKIN*2/2
InitPeripheralClocks();//设置外设时钟
DINT;//关闭总中断