DSP实验报告SCI.doc

上传人:b****1 文档编号:230312 上传时间:2022-10-07 格式:DOC 页数:9 大小:111KB
下载 相关 举报
DSP实验报告SCI.doc_第1页
第1页 / 共9页
DSP实验报告SCI.doc_第2页
第2页 / 共9页
DSP实验报告SCI.doc_第3页
第3页 / 共9页
DSP实验报告SCI.doc_第4页
第4页 / 共9页
DSP实验报告SCI.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

DSP实验报告SCI.doc

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

DSP实验报告SCI.doc

研究生实验报告

项目名称:

DSP技术应用

设计专题:

SCI串行通讯控制交通灯运行模式

2013年04月21日

一、综合实验题目和要求

1、实验要求

1)使用TMS320F28335扩展的I/O资源,模拟交通灯控制装置,实现东西通、南北通和禁行等功能。

要求每次循环东西通的时间为60秒,南北通的时间为40秒,各方向黄灯亮的时间为2秒。

2)由TMS320F28335内部CPU定时器,实现交通灯的控制。

3)利用TMS320F28335的串行通信接口SCI模块和PC机交换数据。

PC机称为上位机,由TMS320F28335为主控芯片的综合实验系统称为下位机。

PC机通过串口发送命令给下位机,设置不同的运行模式:

日间模式和夜间模式。

夜间模式下各方向通行时间是日间模式的1.5倍。

2、实验目的

1)掌握DSP扩展数字I/O口的方法和掌握片内外设的编程方法。

2)掌握由TMS320F28335CPU定时器的原理和编程方法。

3)了解PC机串行通讯的工作过程,掌握由TMS320F28335串行口工作方式及编程方法。

3、实验说明

试验箱上I/O控制部分映射到TMS320F28335的Zone7,其地址为0x200001,交通灯控制口的位定义如下下表所示:

表1.1交通灯控制口的位定义

D11

D10

D09

D08

D07

D06

D05

D04

D03

D02

D01

D00

SR

SY

SG

WR

EG

EY

WY

ER

WG

NR

NY

NG

NG:

方向北的绿灯控制位;NY:

方向北的黄灯控制位;NR:

方向北的红灯控制位;

WG:

方向西的绿灯控制位;ER:

方向东的红灯控制位;WY:

方向西的黄灯控制位;

EY:

方向东的黄灯控制位;EG:

方向东的绿灯控制位;WR:

方向西的红灯控制位;

SG:

方向南的绿灯控制位;SY:

方向南的黄灯控制位;SR:

方向南的红灯控制位。

二、硬件框图

实验相关硬件:

TMS320F28335实验箱,仿真器,计算机。

计算机通过串口调试工具向下位机发送控制指令,实现交通灯运行模式的切换。

系统硬件框图如图2.1所示。

PC机

TMS320F28335

交通灯

图2.1模拟交通灯实验硬件框图

三、程序流程图

TMS320F28335的SCI模块通过查询的方式接受PC机的指令,交通灯的时间控制通过定时器中断实现,在本实验中选择定时器2。

程序具体分为两个部分,即主程序和定时器中断服务程序。

主程序通过查询的方式接受PC机指令,如果接受到A1,表示运行模式为白天,TMS320F28335向PC机反馈A1,交通灯开始执行白天运行模式;如果接受到A2,表示运行模式为夜间,TMS320F28335向PC机反馈A2,交通灯开始执行夜间运行模式;如果接受到错误指令,TMS320F28335向PC机反馈ERROR,交通灯显示为禁行。

其流程图如图3.1所示。

定时器中断服务程序根据主程序接受到的运行模式,确定循环的周期,并根据定时时间确定各个方向的通行和禁止等功能。

如果接受到错误的PC机指令,将全程禁行。

其流程图如图3.2所示。

1、主程序流程图

开始

系统初始化

配置定时器2定时1s

开定时器2,使能定时器中断

SCI接收到数据

数据为白天

数据为夜间

确定运行模式为白天

准备向上位反馈信息

准备向上位机反馈ERROR

确定运行模式为夜间

准备向上位反馈信息

向上位机发送指令

Y

Y

Y

N

N

N

图3.1模拟交通灯实验主程序

2、中断服务程序流程图

定时器中断入口

白天运行模式

夜间运行模式

东西通60s,南北通40s,黄灯2s

东西通90s,南北通60s,黄灯2s

各个方向禁行

返回

N

Y

Y

N

图3.2模拟交通灯中断服务程序

四、实验结果和分析

1、软件的调试结果(包括调试出的内容和实验的波形、数据、程序出现的现象或界面等)

串口调试工具如下图所示:

图4.1串口调试工具

当PC机通过串口发送A1指令时,下位机向上位机反馈A1信号,表示运行模式为白天。

此时交通灯首先东西方向绿灯亮,南北方向红灯亮,持续时间为60s;60s黄灯持续亮2s;然后南北方向绿灯亮,东西方向红灯亮,时间持续为40s;南北通行时间到后,黄灯亮,并且持续2s。

然后,交通灯将按此顺序循环。

当PC机通过串口发送A2指令时,下位机向上位机反馈A2信号,表示运行模式为夜间。

此时,交通灯将会重新开始计时,东西通行和南北通信的时间为白天通行时间的1.5倍,但各个方向黄灯亮的持续时间保持2s不变。

如果PC发送的指令既不是A1也不是A2,那么各个交通灯将一直保持为红色,禁止各个方向通行。

2、结果分析(程序结果与实验要求之间的差别和原因分析)

通过定时器中断能够实现时间的控制。

定时器相对于延时程序得到的延时时间要精确,采用定时器中断实现的交通灯可靠,通过观察计数次数确定是否在计数时间要求之内。

PC机通过上位机发送控制指令时,如果不管TMS320F28335接受到的指令是何值,都向上位机发送相同的数据,那么操作人员将无法了解交通灯的运行方式,甚至不知道交通灯是否处于正确的运行模式。

因此,TMS320F28335根据接受到的不同指令向上位机发送不同的指令,有利于操作人员的判别。

相对于实验要求多一些错误处理的考虑。

当PC机发送错误指令时,如果TMS320F28335不考虑此情况,交通灯可能处于一种危险的运行模式(比如四个方向的交通灯都显示绿色)。

因此,TMS320F28335接受到错误指令时,使4个方向都禁行,可以防止危险模式的发生。

五、源程序清单(双栏)

8

#include"DSP2833x_Device.h"

#include"DSP2833x_Examples.h"

//交通灯东西通(南北禁行)

#defineEASTEWEST0x88c

//交通灯南北通(东西禁行)

#defineSOUTHNORTH0x311

//交通灯各方向黄灯亮

#defineIOCHANGE0x462

//交通灯各方向均禁行

#defineALLFORBIN0x914

//运行模式为白天

#define DAY1

//运行模式为夜间

#defineNIGHT 1.5

//接受到错误指令

#defineERROR0

//交通灯控制口地址

Volatileunsignedint*p_ioenable=(volatileunsignedint*)0x200001;

interruptvoidISRTimer2(void);

voidscib_fifo_init();

//从SCI接受数据

Uint16dataB=0;

//接受到错误指令,向PC机反馈错误

Uint16ERROR[5]={69,82,82,79,82};

//运行模式

floatRun_Mode=0;

voidmain(void)

{

//循环计数器

Uint16Error_Cnt=0;

//初始化系统时钟

InitSysCtrl();

//初始化GPIO

InitGpio();

//GPIO引脚功能作为SCI功能引脚

InitSciGpio();

//关全局中断

DINT;

//初始化中断

InitPieCtrl();

//关CPU中断

IER=0x0000;

//清除终端标志位

IFR=0x0000;

//初始化中断向量表

InitPieVectTable();

//初始化SCI模块

scib_fifo_init();

//允许对受保护的寄存器操作

EALLOW;

//配置中断服务程序入口地址

PieVectTable.TINT2=&ISRTimer2;

//禁止对受保护的寄存器操作

EDIS;

//初始化定时器

InitCpuTimers();

//配置定时器定时时间为1s

ConfigCpuTimer(&CpuTimer2,150,1000000);

//开定时器2

StartCpuTimer2();

//使能CPU中断

IER|=M_INT14;

//使能全局中断

EINT;

//使能全局实时中断

ERTM;

while

(1)

{

//等待从PC机接受指令

while(ScibRegs.SCIFFRX.bit.RXFFST==0);{}

//保存接受到的指令值

dataB=ScibRegs.SCIRXBUF.all;

//根据接收到的数据确定运行模式

if(dataB==49)//白天运行模式

{

//向上位机反馈接受到的指令

ScibRegs.SCITXBUF=dataB;

//确定运行模式为白天

Run_Mode=DAY;

//接受到指令的时刻禁行

*p_ioenable=ALLFORBIN;

//定时器计数清零,重新计时 CpuTimer2.InterruptCount=0;

}

elseif(dataB==50)//夜间运行模式

{

ScibRegs.SCITXBUF=dataB;

Run_Mode=NIGHT;

*p_ioenable=ALLFORBIN; CpuTimer2.InterruptCount=0;

}

else//发下来错误指令

{

//各个方向禁行

*p_ioenable=ALLFORBIN;

//错误的运行模式

Run_Mode=ERROR;

}

//根据接受的指令向上位机反馈信息

//接受到正确的运行模式

if((dataB==49)||(dataB==50))

{

//等待向上发送数据

while(ScibRegs.SCIFFTX.bit.TXFFST!

=0);

}

//接受到错误指令,反馈ERROR

else

{

for(Error_Cnt=0;Error_Cnt<5;

Error++)

{

ScibRegs.SCITXBUF=ERROR[Error_Cnt];

//等待向上发送数据

while(ScibRegs.SCIFFTX.

bit.TXFFST!

=0);

}

}

}

//初始化SCI模块

voidscib_fifo_init()

{

//初始化SCI通信控制寄存器

ScibRegs.SCICCR.all=0x0007;

//初始化SCI控制寄存器1

ScibRegs.SCICTL1.all=0x0003;

//初始化SCI控制寄存器2

ScibRegs.SCICTL2.all=0x0003;

//使能发送中断

ScibRegs.SCICTL2.bit.TXINTENA=1;

//使能接受中断

ScibRegs.SCICTL2.bit.RXBKINTENA=1;

//设定通信波特率为9600

ScibRegs.SCIHBAUD=0x0001;

ScibRegs.SCILBAUD=0x00e7;

ScibRegs.SCICCR.bit.LOOPBKENA=0;

//初

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

当前位置:首页 > 考试认证 > IT认证

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

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