1、 目录 1 系统概述 . 2 1.1 设计目的 . 2 1.2 设计任务 . 2 2 方案论证 . 3 2.1 设计思路 . 3 2.2 设计方案 . 3 2.3 工作状态 . 4 3硬件设计 . 5 3.1 硬件总体设计 . 5 3.2 交通灯显示模块 . 6 3.3 计数显示模块 . 7 3.4 开关模块 . 7 4软件设计 . 8 4.1 程序流程 . 8 4.2 交通灯模拟显示 . 9 4.3 定时器及中断设计 . 10 4.4 外中断设计 . 11 5系统调试 . 12 5.1 硬件调试 . 12 5.2 软件调试 . 14 5.3 系统下载 . 17 6 设计心得 . 17 参考文
2、献 . 18 附录 . 19 1 系统概述 1.1 设计目的 (1)熟悉使用 ICETEK F2812-AE评估板控制 ICETEK-CTR上交通灯的方法。 练习自主独立的设计,实现理论和实践的统一,提高自我动手能力。 (2)掌握 TMS320F2812DSP 定时器的使用和编程。 (3)掌握 TMS320F2812DSP 外中断的使用和编程。 (4)学习复杂控制程序设计思路。 (5)利用 DSP 开发环境 CCS C2000 对源程序文件进行编译、链接、装载调试,以完成基本的 DSP项目文件设计。 (6)通过此次课程设计,学习 DSPF2812 芯片的 I/O 端口控制方法,熟悉字模的简单构
3、建和使用,熟悉掌握在 DSP软硬件环境下的程序开发流程,达到学以致用的目 的 。 1.2 设计任务 利用 ICETEK-EDU实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制的程序。要求如下: 交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。 计时显示: 8 8点阵显示两位计数,为倒计时,每秒改变计数显示。 正常交通控制信号顺序:正常交通灯信号自动变换 (1)南北方向绿灯,东西红灯 (10秒 )。 (2)南北方向绿灯闪烁 3次 ,东西红灯 (4秒 )。 (3)南北方向黄灯 ,东西红灯 (2秒 )
4、。 (4)南北方向红灯,东西方向绿 灯 ( 10秒) 。 (5)南北方向红灯, 东西方向绿灯 闪 3次 (4 秒 )。 (6)南北方向红灯, 东西方向 黄灯 ( 2秒) 。 (7)返回 (1)循环控制。 功能键:( 1)启动开关 ( 2)急救灯的启动开关 紧急情况处理:模仿紧急情况 (重要车队通过、急救车通过等 )发生时,交通警察手动控制 (1)当任意方向通行剩余时间多于 10秒,将时间改成 10秒。 (2)正常变换到四面红灯 (20 秒 )。 ( 3)直接返回正常信号顺序的下一个通行信号 (跳过闪烁绿灯、黄灯状态 )。 2 方案 论证 2.1 设计思路 根据 DSP 的硬件中断、定时器、 显
5、示 /控制模块上的发光二极管 控制的原理。用定时器定时,用 连接在 2812DSP 扩展地址接口上的寄存器 EWR和 SNR控制红绿黄灯的开关,用硬件外部中断模拟急救车的到达。有急救车到达时,两向为全红,以便让急救车通过。急救车通过后,交通灯恢复硬件中断前的状态。触发开关为中断申请,表示有急救车通过。在实验箱上交通灯模块由 连接在 2812DSP 扩展地址接口上的寄存器 EWR和 SNR 控制 , 这两个寄存器均为 6位寄存器 ,交通灯模块(CTRLR)的 I/O地址 : 0x108007。 2.2 设计方案 2.2.1 设计原理 根据设计要求,由于控制是由不同的各种状态按顺序发生的, 可以采
6、用状态机制控制方法来解决此问题。这种方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制。对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。时钟计数:采用 250ms 一次中断进行累加计数。如表 2.1所示。 状 态 编号 信号灯状态 状态定义 时间 (计数值 , 起始时间 , 结束时间 ) 计数 显示 1 南北灯绿 ,东西灯红 statusNSGreenEWRed 10s( 40, 0 , 39) 10-1 2 南北绿灯闪,东西红灯 statusNSFlashEWRed 4s ( 16, 40, 55 ) 4-1 3 南北黄灯,
7、东西红灯 statusNSYellowEWRed 2s ( 8, 56, 63) 2-1 4 南北红灯,东西绿灯 statusNSRedEWGreen 10s( 40,64,103) 10-1 5 南北红灯,东西绿灯闪 statusNSRedEWFlash 4s ( 16,104,119) 4-1 6 南北红灯,东西黄灯 statusNSRedEWYellow 2s ( 8,120,127) 2-1 * 南北红灯,东西红灯 statusNSRedEWRed 20s( 80, 0, 79) 20-1 表 2.1 信号灯状态图 2.2.2 定时器设计 MS320F2812A内部有三个 32位通用定
8、时器( TIMER0/1/2),定时器 1和 2被保留给实时操作系统( DSPBIOS)用,只有定时器 0可以提供给用户使用。定时器采用中断方式,可以提高 CPU的利用率。 2.2.3 倒计时显示设计 利用 ICETEK-CTR上的发光二极管显示阵列模拟显示。 DSP须将显示的图形按列的顺序存储起来 (8 8点阵, 8个字节,高位在下方,低位在上方 ),然后定时刷新控制显示。 具体方法是,将以下控制字按先后顺序、每两个为一组发送到端口0x602802,发送完毕后,隔不太长的时间 (以人眼观察不闪烁的时间间隔 )再发送一遍。由于位值为“ 0”时点亮,所以需要将显示的数据取反。 2.2.4 紧急状
9、况下设计 利用 ICETEK-CTR上键盘产生外中断,中断正常信号顺序, 进入 突发情况 。 2.3 工作状态 状态一:南北绿灯、东西红灯,延时 10 秒, 10 秒后 南北绿灯闪 3 次,东西红灯延时 4 秒 ;如图 2.1 所示 图 2.1 状态一 状态二:南北黄灯、东西红灯,持续 2 秒; 图 2.2 状态二 状态三:东西绿灯、南北红灯,延时 10 秒, 10 秒后东西绿灯闪 3 次,南北红灯持续 4 秒; 图 2.3 状态三 状态四:东西黄灯、南北红灯,持续 2 秒; 图 2.4 状态四 状态五:紧急状态下东西南北均亮红灯; 图 2.5 状态五 3 硬件设计 3.1 硬件 总体设计 根
10、据设计要求 , 由于控制是由不同的各种状态按顺序发生的 , 我可以采用状态机制控制方法来解决此问题。这种方法是 : 首先列举所有可能发生的状态 ; 然后将这些状态编号 , 按顺序产生这些状态 ; 状态延续的时间用程序控制 ,对于突发情况 , 可采用在正常顺序的控制中插入特殊控制序列的方式完成。 突发事件设置 , 在实际交通过程中会出现突发状况 , 比如说有救护车或者110 紧急车要通过 , 此时就可以通过小键盘进行突发状况模拟。通过按键进入到中断服务子程序 , 相当于原来先要通过的车辆在突发状况来了以后就要先让紧急车辆通过。 原理框图如图 3.1所示。 图 3.1 ICETEK-F2812-A
11、E 原理框图 3.2 交通灯显示模块 利用 ICETEK-CTR 上的一组发光二极管 (共 12只,分为东西南北四组、红黄绿三色 )的亮灭实现交通信号的模拟。 TMS320F2812 DSP 有最多 56 个专门的通用输入输出管脚。这些通用输入输出管脚通过专用寄存器可以由软件控制,比如指定输入、输出以及输出值等。通过 ICETEK-F2812-AE评估板的插座,扩展板(通用输出 /控制模块 ICETEK-CTR)将板上的一个指示灯和 DSP的一个通用输入 /输出管脚直接相连。这个管脚为 PWM12,可以设置成通用输入 /输出管脚使用。扩展原理如图 3.2所示。 TMS320F2812PGFA
12、JTAG PORT 片上资源 : 主频 :150MHz A/D RAM:128K*16bit FLASH128*16bit CAN DSP总线SRAM:64K*16bit 扩展 DSP 引脚 CPLD LED 数据 地址 控制 I/O PWM SPI 驱动 RS232 CAN JTAG 16 路 ,12bit 驱动 4 个用户可控开关 图 3.2 发光二极管设计原理 3.3 计数显示模块 计数显示采用放光二极管显示阵列显示。 TMS320F2812 DSP 的存储器扩展接口( EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。这一接口提供地址线、数据线和一组控制线, IC
13、ETEK-F2812-A 评估板已将这些扩展线引到了板上的扩展插座上,供扩展使用。发光二极管显示阵列由扩展端口控制, EMIF 接口的两个寄存器提供具体控制。原理图如图 3.3所示。 图 3.3 计数显示原理 3.4 开关模块 开关模块采用外部外部存储器扩展接口( EMIF)上的 PS2接口键盘,通过扫描码判断输入键值。 TMS320F2812 DSP 的扩展存储器接口( EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。这一接口提供地址线、数据线和一组控制线, ICETEK-F2812-A 评估板已将这些扩展线引到了板上的扩展插座上。键盘的扫描码由 DSP 的扩展地址
14、0x108001 给出,当有键盘输入时,读此端口得到扫描码,当无键被按下时读此端口的结果为 0。开关设计原理如图 3.4所示。 图 3.4 开关设计原理 4 软件设计 4.1 程序流程 该设计实现的功能是 南北方向绿灯,东西红 10秒 , 南北方向绿灯闪烁 3 次 ,东西红灯 4 秒, 南北方向黄灯 ,东西红灯 2 秒,南北方向红灯,东西方向绿 灯 10秒,南北方向红灯, 东西方向绿灯 闪 3次 4 秒 ,南北方向红灯, 东西方向 黄灯( 2秒)。在紧急情况下, 当任意方向通行剩余时间多于 10秒,将时间改成 10 秒,正常变换到四面红灯 20秒 ,然后 直接返回正常信号顺序的下一个通行信号
15、(跳过闪烁绿灯、黄灯状态 )。程序流程图如图 4.1 所示。 图 4.1 程序流程图 4.2 交通灯模拟显示 显示 /控制模块上的发光二极管是由连接在 2812DSP 扩展地址接口上的寄存器EWR 和 SNR 控制的。这两个寄存器均为 6位寄存器,其位定义见表 4.1表 4.2。两 个寄存器的地址均映射到 2812DSP 的扩展空间, CTRLR 地址为 0x108007, DSP通过 对该地址的写操作来修改两个寄存器上各位的状态,当寄存器某位取 1值时,相应指示灯 被点亮,取 0值则熄灭。当写入 CTRLR的数据 (8 位有效值 )的高两位为 00开始 初始化 : CPU 频率、 ICETEK-CTR、定时器、中断控制寄存器、工作变量 根据定时器计数确定当前状态 根据当前状态设置指示灯状态 根据当前状态设置发光二极管显示阵列状态 读取键盘输入 结束 ? 是 否 结束 定时器中断服务程序入口 计数工作变量值在原基础上加 1 退出定时器中断服务程序 键盘中断服务程序入口 设置突发事件标志 退出键盘中断服务程序