DSP实习报告.docx

上传人:b****8 文档编号:11208818 上传时间:2023-02-25 格式:DOCX 页数:22 大小:422.19KB
下载 相关 举报
DSP实习报告.docx_第1页
第1页 / 共22页
DSP实习报告.docx_第2页
第2页 / 共22页
DSP实习报告.docx_第3页
第3页 / 共22页
DSP实习报告.docx_第4页
第4页 / 共22页
DSP实习报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

DSP实习报告.docx

《DSP实习报告.docx》由会员分享,可在线阅读,更多相关《DSP实习报告.docx(22页珍藏版)》请在冰豆网上搜索。

DSP实习报告.docx

DSP实习报告

 

 

DSP实习报告

 

课题名称:

DSP应用技术

学院:

电气信息工程学院

专业:

自动化11-1

姓名:

xxxxxxxx

班级学号:

00

指导教师:

吴勇

实验日期:

2014.12.22--2017.12.26

目录

一、开发板调试3

1.1实习目的3

1.2实习要求3

1.3实习内容3

1.3.1CPU定时器0实验3

1.3.2CPU定时器2实验4

1.3.3EVtime1实验5

1.3.4数码管显示实验9

1.3.5外部RAM实验11

1.3.6外部Flash读写实验12

1.3.7直流电机控制实验14

二、基于DSP的直流电动机的闭环调速的系统设计16

2.1硬件设计16

2.1.1系统硬件设计总体框图16

2.1.2主电路17

2.1.3驱动电路17

2.1.4电流电压采样电路18

2.1.5电动机转速检测电路18

2.1.6控制电路21

2.1.7保护电路22

2.1.8显示电路22

三、总结23

3.1实习心得23

四、参考文献

 

一、开发板调试

1.1实习目的

1)学习DSP内部定时器0、定时器2的使用

2)掌握DSP的SPI工作原理

3)理解DSP控制步进电机原理

1.2实习要求

1)通过使用DSP内部的定时器0来实现对LED灯的控制实现LED灯循环闪烁

2):

QQ2812通过SPI接口控制LED数码管实现数码管从0~F循环显示

3)由DSP输出的PWM3~6做为步进电机的4个信号线输入完成DSP控制步进电机

1.3实习内容

1.3.1CPU定时器0实验

#include"DSP28_Device.h"//8个LED灯的地址,由CPLD得知

unsignedint*Led8=(unsignedint*)0x4100;

unsignedintLedCount;

Uint16LedCode[]={0xfe,0xfd,0xfc,0xf7};左四循环右四灭

//定时器0中断函数,这里我们是另外写了,大家也可以把他直接放在#include"DSP28_Device.h"中.

interruptvoidISRTimer0(void);

voidmain(void)

{

/*初始化系统*/

InitSysCtrl();

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;//清中断

LedCount=0;

/*初始化PIE*/

InitPieCtrl();

/*初始化PIE中断矢量表*/

InitPieVectTable();

/*初始化定时器0*/

InitCpuTimers();

/*初始化外设*/

InitPeripherals();

/*受EALLOW保护的定时器0中断矢量*/

EALLOW;//允许访问EALLOW保护的寄存器

PieVectTable.TINT0=&ISRTimer0;//指向中断服务寄存器定时器0的地址

EDIS;//重新EALLOW保护

/*设置CPU,配置定时器0多长时间中断一次,这里的配置可参见课本P61*/

ConfigCpuTimer(&CpuTimer0,10,1000000);

CpuTimer0Regs.TCR.bit.TSS=0;///开启CPU定时器0

//StartCpuTimer0();

/*开中断,查看中断向量表可知CPU定时器0位于INT1.7,见课本P82*/

IER|=M_INT1;

PieCtrl.PIEIER1.bit.INTx7=1;

EINT;//开放全局中断,EnableGlobalinterruptINTM

ERTM;//开放全局实时中断,EnableGlobalrealtimeinterruptDBGM

for(;;);

}

interruptvoidISRTimer0(void)

{

//响应中断寄存器清除,写1清0,进而才能接收下一外围中断

PieCtrl.PIEACK.bit.ACK7=1;

//向CPLD控制的LED灯地址写数据,进而实现对灯的控制

*Led8=LedCode[LedCount];LedCount++;

if(LedCount>=6)LedCount=0;

}

1.3.2CPU定时器2实验奇亮偶灭

#include"DSP28_Device.h"

unsignedint*Led8=(unsignedint*)0x4100;//二极管地址,由CPLD提供

unsignedintLed_Flag;//二极管全亮,全灭标志位

interruptvoidISRTimer2(void);//中断服务寄存器定时器2函数

voidmain(void)

{

/*初始化系统*/

InitSysCtrl();

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;

Led_Flag=0;

/*初始化PIE*/

InitPieCtrl();

/*初始化PIE中断矢量表*/

InitPieVectTable();

/*初始化外设*/

InitPeripherals();

EALLOW;

PieVectTable.TINT2=&ISRTimer2;

EDIS;

/*设置CPU*/

ConfigCpuTimer(&CpuTimer2,50,1000000);

CpuTimer2Regs.TCR.bit.TSS=0;//启动定时器2

///StartCpuTimer2();

/*开中断*/

IER|=M_INT14;//内部定时器在PIE分组中位于14

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

for(;;);

}

interruptvoidISRTimer2(void)

{

CpuTimer2.InterruptCount++;//中断计数

if(Led_Flag==1)

{

*Led8=0x55;//全亮

Led_Flag=0;

}

else

{

*Led8=0xaa;//全灭

Led_Flag=1;

}

}

1.3.3EVtime1实验

实验目的:

了解事件管理器的定时器的应用,大家在学习时要结合第四章的事件管理器来进行实验说明:

这里我们只使用了EvaTimer1来控制LED灯的亮灭,你在学习中可通过它来了解

EV的定时器工作原理,对以后做电机之类的控制时可以引用部分函数

实验结果:

可看到板上8个发光二极管产生左2灭右2亮中间4循环的效果

1.3.4数码管显示实验

实验目的:

通过学习本实验来掌握DSP的SPI工作原理**

实验说明:

QQ2812通过SPI接口控制LED数码管SPI是一高速同步的串行输入输出口,它的通信速率和通信数据长度都是可编程的,可以接收和发送16位的数据位,并且带有双缓冲的.SPI的4个外部引脚由:

从输出主输入(SPISOMI),从输入主输出(SPISIMO),从发送使能(/SPISTE),串行时钟引脚(SPICLK)组成。

主要硬件部分:

DSP,CPLD,74HC595(串入并出的移位器)共阳数码管。

SPIMOSI和SPICLK直接从DSPJIE接到了74HC595的**

SER和SRCLK,作为数据和时钟信号的输入,SPICS由CPLD引出来控制74HC595的选通。

实验结果:

可看到数码管从0~F循环显示

#include"DSP28_Device.h"

voidWriteLED(unsignedchardata);//送给数码管的数据函数

//voiddelay(unsignedlongt);

unsignedint*SPI_CS=(unsignedint*)0x4500;//0X4500是CPLD的SPICS地址

unsignedlonginta;

Uint16SpiCode[]={0x2222,0xe0e0,0xb1b1,0x6868,0xa1a1,0xa3a3,0xffff};

//数码管的笔画对应关系如下:

//6

//37

//4

//20

//15

//就是说0~7分别对应笔画的a~h,在原理图看就是分别连接的Q0~Q7

//这个数码管的型号是LG3611BH,是共阳级的,也就是说某个笔画为0的时候,

//这个笔画被点亮。

//我们以"1",0x7E7E为例说明

//7E的二进制是01111110,对应点亮的就是Q0和Q7,也就是'1'了。

//其他的自己拿笔画一下就清楚了。

voidmain(void)

{intk;

/*初始化系统*/

InitSysCtrl();

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;

/*初始化PIE控制寄存器*/

InitPieCtrl();

/*初始化PIE参数表*/

InitPieVectTable();

/*初始化外设寄存器*/

InitPeripherals();

/*设置CPU*/

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

*SPI_CS=0x00;//写0,低电平选中

for(;;)

{

for(k=0;k<17;k++)//循环发送16个数据

{WriteLED(SpiCode[k]);//发送数据函数

for(a=0;a<500000;a++);

}

}

}

voidWriteLED(unsignedchardata)

{

if(Spi_TxReady()==1)//当检测到SPI发送准备信号致1时,开始发送数据

SpiaRegs.SPITXBUF=data;//把数据写如SPI发送缓冲区

while(Spi_TxReady()!

=1);//没检测到发送准备信号

*SPI_CS=0x01;//关片选

*SPI_CS=0x00;//退出时开片选

}

/*voiddelay(unsignedlongt)

{

while(t>0)

t--;

}*/

1.3.5外部RAM实验

实验目的:

通过学习DSP与外部RAM的读写数据

实验说明:

能够为以后写比较大的程序时,在仿真运行时内部RAM不够用时,可利用外部RAM来进行,当然这需要.CMD文件来配置

实验结果:

在指定位置设置断点后可观察通过函数来写到地址里面的值

#include"DSP28_Device.h"

#include"ext_inf.h"

voidmain(void)

{

/*初始化系统*/

InitSysCtrl();

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;

/*初始化PIE*/

InitPieCtrl();

/*初始化PIE中断矢量表*/

InitPieVectTable();

InitExRam(0);//以下任一行停下后观察内存地址的值

RamRead(0x4000);//这里设置断点可查看到外部RAM中写入我们的数据

InitExRam1(0x0);

for(;;);//这里设置断点可查看到外部RAM里面全部清0

}

1.3.7直流电机控制实验

实验目的:

通过学习直流电机实验,了解PWM波如何配置,来控制电机的转动。

大家在学习时还是要在去熟悉下我们课本的事件管理器那一章,对其寄存器有个了解,好再去看程序,就都明白了

实验说明:

因为直流电机就两根线,我们取了DSP的PWM1和PWM2来进行控制,然后经过了两级放大输出。

实验结果:

运行程序可看到电机在转动,若要改变电机转速或转向,可在DSP28_EV.c文件里按相应注释修改,即实现PWM波来控制电机

voidInitEv(void)

{

EvaRegs.ACTR.all=0x0006;///通过对比较方式控制寄存器的配置,得PWM2低有效,PWM1高有效,改变设置可使电机反转

EvaRegs.DBTCONA.all=0x0530;///使能死区定时器,分频45/16=2.8125M,死区时间5*0.356us=1.78us

EvaRegs.COMCONA.all=0xa600;///比较器控制A

EvaRegs.T1PR=5000;////定时器1周期值0.356us*N

EvaRegs.T1CMPR=2500;///定时器1比较值,没什么用,没用这种方式

EvaRegs.T1CNT=0;///定时器1初值设为0

EvaRegs.T1CON.all=0x144E;///连续增模式,TPS系数45M/2/16,T1使能

/*

EvaRegs.T2PR=5000;////定时器2周期值0.356us*N

EvaRegs.T2CMPR=4000;///定时器2比较值

EvaRegs.T2CNT=0;///定时器2初值设为0

EvaRegs.T2CON.all=0x144E;///连续增模式,TPS系数45M/2/16,T2使能

EvaRegs.GPTCONA.bit.TCOMPOE=1;

EvaRegs.GPTCONA.bit.T1PIN=1;

EvaRegs.GPTCONA.bit.T2PIN=2;

*/

EvaRegs.CMPR1=500;//占空比越小,转得越快

//EvaRegs.CMPR2=2000;

//EvaRegs.CMPR3=3000;

}

二、基于DSP的直流电动机的闭环调速的系统设计

2.1硬件设计

2.1.1系统硬件设计总体框图

该设计包含DSP控制单元、功率驱动单元、检测单元、显示单元、通信单元五个部分。

DSP控制单元:

对来自上位机的给定信号和来自传感器的反馈信号按一定的算法进行处理,输出相应的PWM波,经过光电隔离部分,送给功率驱动单元;

功率驱动单元:

对来自DSP控制器的PWM信号进行功率放大后送给直流电动机的电枢两端,驱动电机与负载;

速度检测单元:

采集电机的速度信息,并送给主控制器;

显示单元:

将采集到的电机转速信息予以显示;

通信单元:

负责主控制器与上位机及外设的信息交换。

2.1.2主电路

2.1.3驱动电路

本设计的功率驱动电路采用的是基于双极型H桥型脉宽调制方式(PWM)的集成电路L298N[14]。

L298N是SGS公司的产品,内部包含二个H桥的高电压大电流桥式驱动器,接收标准TTL逻辑电平信号,可驱动46伏、2安培以下的电机,工作温度范围从零下25°到130°。

表3-1是其使能引脚,输入引脚和输出引脚之间的逻辑关系。

EnA是控制使能端,控制OUT1和OUT2之间电机的停转,IN1、IN2脚接入控制电平,控制OUT1和OUT2之间电机的转向。

当使能端EnA为高,IN1为高电平IN2为低电平时,电机正转;反之电机则反转。

当IN1和IN2电平相同时,电机停转。

表L298N功能逻辑表

EnA

IN1

IN2

电机转向

H

H

L

正转

H

L

H

反转

H

同IN2

同IN1

停止

L

X

X

停止

图中的EnA(PWM)输入对应LF2407上的IOPA6引脚,IN1和IN2分别对应LF2407上的IOPF3和IOPF4引脚。

接口电路如图3-3所示。

图中二极管的作用是消除电机的反向电动势,保护电路,因此采用整流二极管比较合适。

需要注意的是,三个引脚信号都应通过光电隔离的变换后再作用于L298N,目的是为了防止因电机启动停止瞬间产生的尖峰脉冲对主控制器的影响。

本设计中的光电隔离采用的是高速光耦6N137,信号经过6N137的隔离后不改变逻辑状态。

当电机要求正转时,IOPF3给出高电平信号,IOPF4给出低电平信号,此时IOPA6的逻辑信号就决定了电机正转的速度,也就是说DSP产生的PWM信号的占空比决定了电机两端电枢电压的大小,从而实现电机调速。

同样,当电机要求反转时,IOPF3给出低电平信号,IOPF4给出高电平信号。

2.1.4电流电压采样电路

电压检测电路

电流检测电路

2.1.5电动机转速检测电路

电机测速模型如图1-5.1,将栅格圆盘变化通过光电发射器和接收器以及外围转换电路的作用送给DSP通过数学运算得到电机的转速。

图1-5.1电机测速模型

光电对管产生的脉冲在经过施密特触发器SN74LS14后送入LF2407的捕获单元,捕获单元可以记录在某个时间段内捕获到的脉冲数,从而计算出电机的转速。

具体的接口电路如图1-5.2所示。

图1-5.2速度检测电路

需要注意的是,光电对管出来的信号一般为+5V的方波信号,为此需要经过一个电平转换芯片SN74LVC245隔离才能与LF2407的CAP电路进行相连。

电路如图1-5.3所示。

图1-5.4电平转换电路

主电路

键盘电路

2.1.6控制电路

直流电动机转速n的表达式为:

(3-1)

公式(3-1)中,U为电枢端电压;I为电枢电流;R为电枢电路总电阻;Φ中为每极磁通量;K为电动机结构参数。

所以直流电动机的转速控制方法可分为两类:

对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制法。

其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。

现在,大多数应用场合都使用电枢控制法。

绝大多数直流电机采用开关驱动方式。

开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制PWM来控制电动机电枢电压,实现调速[2]。

PWM调速控制原理图和电压波形

图3-2是利用开关管对直流电动机进行PWM调速控制的原理图和输入输出电压波形。

图中,当开关管MOSFET的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端有电压

t1秒后,栅极输入变为低电平,开关管截止,电动机电枢两端电压为0。

t2秒后,栅极输入重新变为高电平,开关管的动作重复前面的过程。

这样,对应着输入的电平高低,直流电动机电枢绕组两端的电压波形如图中所示。

电动机的电枢绕组两端的电压平均值

为:

(3-2)

公式(3-2)中

为占空比,

=

占空比

表示了在一个周期T里,开关管导通的时间与周期的比值。

如,一个PWM的频率是1000Hz,那么它的时钟周期就是1ms,就是1000us,如果高电平出现的时间是200us,那么低电平的时间肯定是800us,那么占空比就是200:

1000,也就是说PWM的占空比就是1:

5。

占空比的变化范围为0

l。

由此式可知,当电源电压

不变的情况下,电枢的端电压的平均值

取决于占空比

的大小,改变

值就可以改变端电压的平均值,从而达到调速的目的,这就是PWM调速原理。

2.1.7保护电路

为了实时地监控下位机的工作状态,本设计还建立了上位机与下位机通信的电路模块[1]。

利用TMS320LF2407的串行通信接口与RS-232串行口进行DSP与PC机之间的异步通信。

上位机PC都带有RS-232接口,所以可以利用上位机(PC)的串行口与下位机(DSP)进行通信,进行上位机与下位机之间的数据交换,有效的实现监控。

由于上位机的RS-232C电平与下位机的TTL电平不一致,本设计中利用电平转换芯片MAX232进行串行通信,另外,由于本设计中的TMS320LF2407属于低功耗芯片,它采用+3.3V供电。

所以在MAX232与TMS320LF2407之间也需进行电平转换。

接口电路如下图所示。

通信单元接口电路

2.1.8显示电路

1602的V0口外接一个10K的电位器,用以调节液晶显示器的对比度,接正电源时对比度最弱,接地电源时对比度最高;RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器,与芯片的IOPA3口连接;R/W为读写信号线,高电平进行读操作,低电平进行写操作,与芯片的IOPA4口连接;E为使能端,下降沿使能,和芯片的IOPA5口连接。

数据端和LF2407的IOPC口连接。

具体电路连接如图3-9所示。

液晶显示接口电路

主程序主要完成系统和各子程序的初始化,并启动系统定时器,进入循环体,并定时进行按键中断扫描和调用显示子程序[16]。

主程序流程图如图所示。

主程序流程图

三、总结

3.1实习心得 

通过为期一周的实习,使自己对DSP与CCS及有了更加深入的理解。

 一周的时间转眼之间就已经流逝而去,在这一周的DSP实习中,遇到了很多问题,也从中学习到了很多东西。

之前上课的时候,总是对一些东西理解不是很深刻。

通过实习,自己亲自动手做了硬件,编写了程序,知道了一些上课时没弄明白的原理,再次验证了工科离不开实践。

在下载程序的时候,我的开发板有时候程序就下不进去,时刻很久都不行,最后老师让我用重启软件进行下载。

 

此次实习,老师安排了很多的小实验,让我们循序渐进,不至于太陌生,老师能安排我们做这个,真的很感激。

虽然本次课程设计是要求自己独立完成,但是,彼此还是脱离不了集体的力量,遇到问题和同学互相讨论交流,也在老师的帮助下完美的完成。

再这次的 DSP 实训里老师对我们要求了很多,比如在写程序中要求我们把图看清楚理清思路,最好把顺序指令先写出来再作图等等一些要求跟技巧。

而 DSP 控制系统的可能影响到企业的安全生产与经济运行。

因此在使用 DSP 时必须综合考虑各方面的因素,来保证DSP控制系统正常工作,保证工业设备安全高效运行。

 

最后,真心感谢老师一周内的耐心教导与指点,让我们学到知识的同时,也了解了 DSP 更多的知识,我想,之后我一定会继续好好学 DSP 的。

    

四:

参考文献 

《TMS320F281XDSP原理及应用技术程》 韩丰田 编 清华大学业社

《基于DSP的直流电机数字调速系统设计》曹太强等编 电力电子技术 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1