1、研究生实验报告项目名称:DSP技术应用 设计专题:SCI串行通讯控制交通灯运行模式2013年04月21日一、综合实验题目和要求1、 实验要求1) 使用TMS320F28335扩展的I/O资源,模拟交通灯控制装置,实现东西通、南北通和禁行等功能。要求每次循环东西通的时间为60秒,南北通的时间为40秒,各方向黄灯亮的时间为2秒。2) 由TMS320F28335内部CPU定时器,实现交通灯的控制。3) 利用TMS320F28335的串行通信接口SCI模块和PC机交换数据。PC机称为上位机,由TMS320F28335为主控芯片的综合实验系统称为下位机。PC机通过串口发送命令给下位机,设置不同的运行模式
2、:日间模式和夜间模式。夜间模式下各方向通行时间是日间模式的1.5倍。2、 实验目的1) 掌握DSP扩展数字I/O口的方法和掌握片内外设的编程方法。2) 掌握由TMS320F28335CPU定时器的原理和编程方法。3) 了解PC机串行通讯的工作过程,掌握由TMS320F28335串行口工作方式及编程方法。3、 实验说明试验箱上I/O控制部分映射到TMS320F28335的Zone7,其地址为0x200001,交通灯控制口的位定义如下下表所示:表1.1 交通灯控制口的位定义D11D10D09D08D07D06D05D04D03D02D01D00SRSYSGWREGEYWYERWGNRNYNGNG:
3、方向北的绿灯控制位;NY:方向北的黄灯控制位;NR:方向北的红灯控制位;WG:方向西的绿灯控制位;ER:方向东的红灯控制位;WY:方向西的黄灯控制位;EY:方向东的黄灯控制位;EG:方向东的绿灯控制位;WR:方向西的红灯控制位;SG:方向南的绿灯控制位;SY:方向南的黄灯控制位;SR:方向南的红灯控制位。二、硬件框图实验相关硬件:TMS320F28335实验箱,仿真器,计算机。计算机通过串口调试工具向下位机发送控制指令,实现交通灯运行模式的切换。系统硬件框图如图2.1所示。 PC机TMS320F28335交通灯图2.1 模拟交通灯实验硬件框图三、程序流程图TMS320F28335的SCI模块通
4、过查询的方式接受PC机的指令,交通灯的时间控制通过定时器中断实现,在本实验中选择定时器2。程序具体分为两个部分,即主程序和定时器中断服务程序。主程序通过查询的方式接受PC机指令,如果接受到A1,表示运行模式为白天,TMS320F28335向PC机反馈A1,交通灯开始执行白天运行模式;如果接受到A2,表示运行模式为夜间,TMS320F28335向PC机反馈A2,交通灯开始执行夜间运行模式;如果接受到错误指令,TMS320F28335向PC机反馈ERROR,交通灯显示为禁行。其流程图如图3.1所示。定时器中断服务程序根据主程序接受到的运行模式,确定循环的周期,并根据定时时间确定各个方向的通行和禁止
5、等功能。如果接受到错误的PC机指令,将全程禁行。其流程图如图3.2所示。1、 主程序流程图开始系统初始化配置定时器2定时1s开定时器2,使能定时器中断SCI接收到数据数据为白天数据为夜间确定运行模式为白天 准备向上位反馈信息准备向上位机反馈ERROR确定运行模式为夜间准备向上位反馈信息向上位机发送指令YYYNNN图3.1 模拟交通灯实验主程序2、 中断服务程序流程图定时器中断入口白天运行模式夜间运行模式东西通60s,南北通40s,黄灯2s东西通90s,南北通60s,黄灯2s各个方向禁行返回NYYN图3.2 模拟交通灯中断服务程序四、实验结果和分析1、软件的调试结果(包括调试出的内容和实验的波形
6、、数据、程序出现的现象或界面等)串口调试工具如下图所示:图4.1 串口调试工具当PC机通过串口发送A1指令时,下位机向上位机反馈A1信号,表示运行模式为白天。此时交通灯首先东西方向绿灯亮,南北方向红灯亮,持续时间为60s;60s黄灯持续亮2s;然后南北方向绿灯亮,东西方向红灯亮,时间持续为40s;南北通行时间到后,黄灯亮,并且持续2s。然后,交通灯将按此顺序循环。当PC机通过串口发送A2指令时,下位机向上位机反馈A2信号,表示运行模式为夜间。此时,交通灯将会重新开始计时,东西通行和南北通信的时间为白天通行时间的1.5倍,但各个方向黄灯亮的持续时间保持2s不变。如果PC发送的指令既不是A1也不是
7、A2,那么各个交通灯将一直保持为红色,禁止各个方向通行。2、结果分析(程序结果与实验要求之间的差别和原因分析)通过定时器中断能够实现时间的控制。定时器相对于延时程序得到的延时时间要精确,采用定时器中断实现的交通灯可靠,通过观察计数次数确定是否在计数时间要求之内。PC机通过上位机发送控制指令时,如果不管TMS320F28335接受到的指令是何值,都向上位机发送相同的数据,那么操作人员将无法了解交通灯的运行方式,甚至不知道交通灯是否处于正确的运行模式。因此,TMS320F28335根据接受到的不同指令向上位机发送不同的指令,有利于操作人员的判别。相对于实验要求多一些错误处理的考虑。当PC机发送错误
8、指令时,如果TMS320F28335不考虑此情况,交通灯可能处于一种危险的运行模式(比如四个方向的交通灯都显示绿色)。因此,TMS320F28335接受到错误指令时,使4个方向都禁行,可以防止危险模式的发生。五、源程序清单(双栏)8#include DSP2833x_Device.h #include DSP2833x_Examples.h /交通灯东西通(南北禁行)#define EASTEWEST 0x88c/交通灯南北通(东西禁行)#define SOUTHNORTH 0x311/交通灯各方向黄灯亮#define IOCHANGE 0x462/交通灯各方向均禁行#define ALLFO
9、RBIN 0x914/运行模式为白天#define DAY 1/运行模式为夜间#define NIGHT1.5/接受到错误指令#define ERROR 0/交通灯控制口地址Volatile unsigned int* p_ioenable=(volatile unsigned int *) 0x200001;interrupt void ISRTimer2(void);void scib_fifo_init();/从SCI接受数据Uint16 dataB = 0; /接受到错误指令,向PC机反馈错误Uint16 ERROR5 = 69,82,82,79,82; /运行模式float Run_
10、Mode = 0;void main(void) /循环计数器Uint16 Error_Cnt = 0;/初始化系统时钟 InitSysCtrl(); /初始化GPIO InitGpio();/GPIO引脚功能作为SCI功能引脚 InitSciGpio(); /关全局中断 DINT; /初始化中断 InitPieCtrl(); /关CPU中断 IER = 0x0000; /清除终端标志位 IFR = 0x0000; /初始化中断向量表 InitPieVectTable(); /初始化SCI模块scib_fifo_init(); /允许对受保护的寄存器操作EALLOW; /配置中断服务程序入口地
11、址PieVectTable.TINT2= &ISRTimer2;/禁止对受保护的寄存器操作EDIS; /初始化定时器 InitCpuTimers();/配置定时器定时时间为1sConfigCpuTimer(&CpuTimer2,150,1000000);/开定时器2StartCpuTimer2();/使能CPU中断IER |= M_INT14;/使能全局中断EINT; / 使能全局实时中断ERTM;while(1)/等待从PC机接受指令while(ScibRegs.SCIFFRX.bit.RXFFST= 0); /保存接受到的指令值dataB = ScibRegs.SCIRXBUF.all;/
12、根据接收到的数据确定运行模式if(dataB=49)/白天运行模式/向上位机反馈接受到的指令ScibRegs.SCITXBUF=dataB;/确定运行模式为白天Run_Mode = DAY;/接受到指令的时刻禁行*p_ioenable = ALLFORBIN;/定时器计数清零,重新计时CpuTimer2.InterruptCount = 0;else if(dataB=50)/夜间运行模式ScibRegs.SCITXBUF=dataB;Run_Mode = NIGHT;*p_ioenable = ALLFORBIN;CpuTimer2.InterruptCount = 0;else/发下来错误
13、指令/各个方向禁行*p_ioenable = ALLFORBIN;/错误的运行模式Run_Mode = ERROR;/根据接受的指令向上位机反馈信息/接受到正确的运行模式if(dataB=49)|(dataB=50)/等待向上发送数据while(ScibRegs.SCIFFTX.bit.TXFFST != 0);/接受到错误指令,反馈ERRORelsefor(Error_Cnt=0;Error_Cnt5;Error+)ScibRegs.SCITXBUF= ERRORError_Cnt; /等待向上发送数据while(ScibRegs.SCIFFTX.bit.TXFFST != 0); /初始化
14、SCI模块void scib_fifo_init()/初始化SCI通信控制寄存器ScibRegs.SCICCR.all =0x0007; /初始化SCI控制寄存器1 ScibRegs.SCICTL1.all =0x0003; /初始化SCI控制寄存器2ScibRegs.SCICTL2.all =0x0003;/使能发送中断ScibRegs.SCICTL2.bit.TXINTENA =1;/使能接受中断ScibRegs.SCICTL2.bit.RXBKINTENA=1;/设定通信波特率为9600ScibRegs.SCIHBAUD=0x0001;ScibRegs.SCILBAUD=0x00e7;ScibRegs.SCICCR.bit.LOOPBKENA =0; /初
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1