dsp数字电压表.docx
《dsp数字电压表.docx》由会员分享,可在线阅读,更多相关《dsp数字电压表.docx(11页珍藏版)》请在冰点文库上搜索。
![dsp数字电压表.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/7a3b8147-c7d4-43d8-ba05-70a08ccea011/7a3b8147-c7d4-43d8-ba05-70a08ccea0111.gif)
dsp数字电压表
DSP课程论文
题目基于2812的数字电压表
专业电气工程及其自动化_
姓名郁健
班级11东电气1_
学号11811528
执行学期2014-11
基于DSP2812的数字电压表
绪论:
DSP即为数字信号处理器(DigitalSignalProcessing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。
它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。
自从数字信号处理器(DigitalSignalProcessor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。
随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。
DSP数字信号处理器DSP芯片采用了数据总线和程序总线分离的哈佛结构及改进的哈佛结构,较传统处理器的冯?
诺依曼结构具有更高的指令执行速度。
其处理速度比最快的CPU快10-50倍。
在当今数字化时代背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的“旗手”。
最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。
DSP器件紧随着数字信号理论的发展而不断发展。
DSP发展最快,现在的DSP属于第五代产品,它与第四代相比,系统集成度更高,将DSP芯核及外围组件综合集成在单一芯片上。
这种集成度极高的DSP芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。
近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。
现在,通信领域中许多产品都与DSP密切联系,例如,Modem、数据加密、扩频通信、可视电话等。
而寻找DSP芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起来,然后再加以处理。
在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。
设计思想
我运用学习到的DSP知识,设计了一个基于DSP2812的数字电压表。
该设计通过运用GPIO的13、14、15管脚用作I/O口来使信号输出,定时器0先清零,再经过一段时间的延时,让管脚发送信号,从而让相应的灯点亮,通过实验板上的LED的点亮情况来表明当下的电压值。
第一章系统设计
第一节课题目标及整体方案
1.1.1课程目标
以DSP2812为核心,设计一个数字电压表。
采用中断方式,对2路0~2V的模拟电进行循环采集,采集的数据送LED显示,并存入内存。
1.1.2整体方案
通过对DSP2812的I/O的运用,实现3个LED显示0~2V的电压。
具体实现原理如下表1—1。
LED
电压值
0
1
2
LED1
亮
灭
灭
LED2
灭
亮
灭
LED3
灭
灭
亮
表1—1
第二节硬件平台简介
1.2.1硬件结构
引脚说明
JTAG接口:
本板卡和DSP仿真器连接接口,通过本接口用户可进行在线仿真
步进电机接口:
接上步进电机可进行步进电机控制实验
AD输入接口:
2路带运放隔壁的AD输入接口
DA输出接口:
3路DA输出接口
CAN接口:
CAN总线接口插座
RS232接口:
标准的DB9插座
2812全功能引出接口,方便用户扩张使用
图1—1
1.2.2I/O模块介绍
1、下表为I/O空间分配
表1—2
2、I/O空间介绍2.2.2I/O控制模块介绍
数字输入/输出模块是集成在TMS320F2812片内的外设之一,它主要对芯片的通用、双向的数字I/O(GPIO)引脚进行控制。
这些I/O引脚大多数是基本功能和一般I/O复用的引脚,数字I/O模块采用了一种灵活的方法,以控制专用I/O和复用I/O引脚的功能,所有I/O和复用引脚的功能可通过9个16位控制寄存器来设置,这些寄存器可分为两类:
·I/O口复用控制寄存器(MCRx):
用于控制选择I/O口作为基本功能方式或一般I/O引脚功能;
·数据和方向控制寄存器(PxDATDIR):
当I/O口用作一般I/O引脚功能时,用数据和方向控制寄存器可控制数据和到双向I/O引脚的数据方向,这些寄存器直接和双向I/O引脚相连。
具体控制寄存器的访问地址、定义请参见有关资料。
3、I/O管脚及使用方法
TMS320F2812板使用了一些I/O管脚对DSP进行控制。
例如:
跳线JP6连接DSP上MP/MC管脚,在DSP复位时,DSP可读回这一管脚的设置,当管脚接高电平时,DSP采用微处理器(MP)方式工作,否则设置成微控制器(MC)方式。
TMS320F2812板在扩展插头上将未使用的I/O引脚接出,提供给用户连接使用。
其定义见TMS320F2812板说明。
这些管脚支持0-3.3V逻辑电平操作,用户在进行相应设置后可以在I/O管脚上进行输入或输出操作,使用时须注意根据引脚本身的负载能力驱动相关设备。
4、SEED_DEC2812实验箱及控制模块使用的I/O管脚
SEED_DEC2812实验箱将引脚ADCIN00-ADCIN03连接到了实验箱底板上“A/D输入”的四个插座上。
SEED_DEC2812实验箱控制模块使用如下引脚:
PWM12/IOPE6--指示灯
PWM11/IOPE5和TDIRB/IOPF4—步进电机
CANTX/IOPC6—蜂鸣器
第三节软件系统设计
1.3.1软件流程图
1.3.2实验程序
1、实验主程序如下:
#include"global.c"
voidInitSysCtrl();
VoidInitGpio();
voidInitCpuTimers();
voidKickDog();
voidKeyLed();
voiddianya_disply(intm);
unsignedintnumled=0;
Voiddelay(inti);
main()
{
intt;
InitSysCtrl();
MCRC=MCRC&0xFF00;
PEDATDIR=0xFF00;
InitTimer0();
t=1;
if(0<=t&&t<=2)
{dianya_disply(t);}
else
{
while
(1)
{
KeyLed();
}
}
}
2、程序分析
主程序主要是通过对各程序的调用驱动硬件实现数字电压表的功能。
比如对系统初始化、定时器初始化等。
附录1
系统初始化模块
voidInitSysCtrl()
{
Uint16i;
EALLOW;
SysCtrlRegs.WDCR=0x0068;
SysCtrlRegs.PLLCR=0xA;
For(i=0;i<5000;i++)
SysCtrlRegs.HISPCP.all=0x0001;
SysCtrlRegs.LOSPCP.all=0x0002;
EDIS;
}
附录2
GPIO模块初始化
VoidInitGpio()
{
EALLOW;
GpioMuxRegs.GPFMUX.bit.XF_GPIOF13=0;
GpioMuxRegs.GPFDIR.bit.GPIOF13=1;
GpioDataRegs.GPFSET.bit.GPIOF13=1;
GpioMuxRegs.GPFMUX.bit.XF_GPIOF14=0;
GpioMuxRegs.GPFDIR.bit.GPIOF14=1;
GpioDataRegs.GPFSET.bit.GPIOF14=1;
GpioMuxRegs.GPFMUX.bit.XF_GPIOF15=0;
GpioMuxRegs.GPFDIR.bit.GPIOF15=1;
GpioDataRegs.GPFSET.bit.GPIOF15=1;
EDIS;
}
附录3
CPU定时器0模块初始化
voidInitCpuTimers()
{
CpuTimer0.RegsAddr=&CouTimer0Regs;
CpuTimer0Regs.PRD.all=0xFFFFFFFF;
CpuTimer0Regs.TPR.all=0;
CpuTimer0Regs.TPRH.all=0;
CpuTimer0Regs.TCR.bit.TSS=1;
CpuTimer0Regs.TCR.bit.TRB=1;
CpuTimer0.InterruptCount=0;
}
附录4
LED灯亮灭模块
voidKeyLed()
{
PEDATDIR=PEDATDIR&0xFF00;
Delay(1000);
PEDATDIR=PEDATDIR|0x0FF;
}
附录5
CPU定时器0周期中断函数
InterruptvoidTINT0_ISR()
{
CpuTimer0.InterruptCount++;
CpuTimer0Regs.TCR.bit.TIF=1;
PieCtrl.PIEACK.bit.ACK1=1;
EINT;
}
附录6
主函数模块
voidmain()
{
InitSysCtrl;
DINT;
IER=0x0000;
IFR=0x0000;
InitPieCtrl();
InitPIEVectTable();
InitPeripherals();
InitGpio();
PieCtrl.PIEIER1.bit.INTx7=1;
IER|=M_INT1;
EINT;
ERTM;
ConfigCpuTimer(&CpuTimer0,150,1000000);
StartCpuTimer0();
For(;;)
{
}
}
附录7
数字电压显示模块
Voiddianya_disply(intm)
{
switch(m)
{
case0:
PEDATDIR=PEDATDIR&0xFF00;
PEDATDIR=PEDATDIR|0x0002;
break;
case1:
PEDATDIR=PEDATDIR&0xFF00;
PEDATDIR=PEDATDIR|0x4;
break;
case2:
PEDATDIR=PEDATDIR&0xFF00;
PEDATDIR=PEDATDIR|0x8;
break;
}
}
附录7
延时模块
Voiddelay(inti)
{
intm,n=0;
for(m=0;m
for(n=0;n
}
第四节实验过程
1.4.1实验准备
首先将包含实验程序的文件夹拷贝到D:
盘根目录下。
1.将DSP仿真器与计算机连接好;
2.将DSP仿真器与JTAG插头与SEED_DEC2812单元的J1相连接;
3.打开SEED_DTK2812的电源。
观察SEED_DTK_MBoard单元的+5V,+3.3V,+15V,
-15V的电源指示灯以及SEED_DEC2812的电源指示灯D2是否均亮;若有不亮的,
请断开电源,检查电源。
1.4.2实验步骤
1.打开CCS,进入CCS的操作环境;
2.装入GLOBAL.pjt工程文件,添加2812.gel文件;
3.装载GLOBAL.out文件,进行调试;
4.运行程序,观察相应的指示灯是否点亮。
可观察到结果:
当电压为0V时,LED1点亮;当电压为1V时,LED2点亮;当电
压为2V时,LED3点亮;
第五节实验心得
DSP是一门理论与实践并重的技术,在成功掌握了理论知识的同时再配合做
一些经典的DSP实验,从而加深对DSP软、硬件的理解与掌握,为今后从事独立
的开发打下扎实的基础。
通过几个实验的磨练,我初步的对DSP有了一定的了解。
虽然是在老师指导以及同学的帮助下才完成实验要求的,但是我还是收获了不少
关于DSP的知识。
在实验过程中,我经历了对已有程序进行修改,重复相应的过
程野能实现预定的功能。
由于有的需要配置的文件的缺失,无法完成对相应工程
的配置设置,所以采用参考例程里的程序完成整个过程,这也是一个学习的过程。
做项目不是一个人的事,每个同学都应积极的参与,为整个项目的完成提供保障,
团队的协作,尽可能的去发挥每个同学的专长,在整个项目的完成都能有所收获,
这才应该是做项目的真正目的,加强同学之间的交流,用心付出,共享实验带给
大家的成功的喜悦。
相关课程的学习只是基础,在此基础之上对相应的软件与硬
件结合,切实去体验一个芯片所能实现的各种功能,去发现所学的知识会在哪些
用得到,如何应用,有怎样可以改进的方法,更深层次地去掌握跟其他相关课程
的交叉点,提升学习能力。
从近期来看,可以为我们将要开始的毕业设计做准备,
当做是一次练手,争取出色完成毕业设计,为四年的大学交出一份完美的答卷。
从长远看,为自己以后的工作也在一定程度的奠定基础,学习能力强了,自己就
能比较快的接受新知识,更能适应社会对人的要求。
相信团队的力量,同时也要
提高个人解决问题的能力,让自己在团队中发挥作用,将个人融入团队中,才能
让自己有更大的收获。
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)