1 引言
目前,国内的信号机主要分为两类:一类采用8/16位单片机作为处理器,交通控制功能简单、方案单一,以RS232 或RS485 为通讯方式,难以与控制中心联网以及实现区域交通协调控制,不能适应现代化大路口交通控制的要求;另一类则是基于工控机或PC104,功能虽然强大,但由于工控机或PC104都是按通用计算机标准设计,并非专门针对信号机应用设计,该类信号机硬件结构复杂且许多功能并不需要,成本也高。国外的信号机(如西门子公司的2070 和美国的EAGLE) 开发起步早,水平高,已有各种自适应联网型信号机产品,但一般不适用于中国混合交通的实际情况,且价格昂贵,操作不方便[1]。
信号机是一个典型的嵌入式系统,嵌入式系统是以应用为中心来设计,对功能、性能、可靠性、成本、功耗、体积等有严格要求,既要满足智能交通系统对信号机智能化、多功能化的要求,又要最大化信号机的性价比,因此本文设计选择基于ARM 核的32 位嵌入式RISC 处理器S3C44B0X来完成智能交通信号机硬件设计,以达到使信号机在交通控制系统中成为收集与处理交通流量数据、通信联网以及区域协调控制平台的设计目标。
2 信号机系统硬件设计
2. 1 系统总体硬件结构
智能交通系统要求信号机向控制中心实时提供多种道路信息和车流量数据信息,接收控制中心的控制命令,独立执行一些复杂的算法,并可以根据交通流量的变化来实时调整绿灯时间,因此考虑到现有信号机的不足,根据信号机功能发展的趋势和要求,本文设计的信号机具有控制参数输入、控制状态输出、控制参数保存、灯态输出控制、车流量实时检测与历史数据存储、多种灯态控制方案与算法模型存储、交通指示牌控制、以太网及与手持终端设备通讯等基本功能。整个系统硬件框图如图1 所示。
2.2交通信号机主要硬件电路设计
2.2.1 S3C44B0X微处理器介绍[2]
S3C44B0X微处理器提供了丰富的内置部件,包括:8KB cache,内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,外部存储器控制器,带有PWM功能的5通道定时器,I/O端口,RTC,IIC总线接口,10位ADC,IIS总线接口,同步SIO接口和PLL倍频器。
图1 信号机硬件框图
2.2.2 最小系统模块
最小系统包括电源模块、RTC模块和存储器模块。
(1)电源模块
信号机采用12/5V电源供电,S3C44B0X工作于3.3V和2.5V,系统其他器件尽量选择工作电压为3.3V和5V。
(2)RTC(实时时钟)模块
信号机在通讯、干线或者区域协调控制中需要使用统一的时间来同步,因此设计RTC(实时时钟)用来对时。S3C44B0X内部集成RTC单元,它只需要外接一个32.768kHz的晶振就能工作。RTC提供可编程的实时时钟:年、月、日、时、分、秒、毫秒、星期及定时报警和产生节拍,并可以在掉电后使用后备电源工作。
(3)存储器模块
信号机需要存放引导程序、嵌入式操作系统及其文件系统、应用程序和其他在运行需要保存的数据,另外当系统启动后,操作系统和程序运行还需要更大的空间,因此设计了外存储单元来扩展存储空间,存储器模块包括8MB的SDRAM 、2MB的NorFlash和16MB的NandFlash。图2为存储系统的简图
图2 存储系统模块
SDRAM采用现代公司的HY57V641620,用于程序运行,S3C44B0X芯片本身提供了SDRAM接口,我们只须对存储器控制器相关的寄存器进行适当的配置;NorFlash采用SST公司的39VF160,主要用于存放引导程序Bootloader和操作系统µClinux内核镜像,系统上电或复位后从FlashROM中运行Bootloader,由Bootloader初始化硬件并将µClinux拷贝到SDRAM中运行;NandFlash采用三星公司的K9F2808,主要用于存放应用程序和数据,S3C44B0X没有像支持SDRAM一样提供NandFlash存储器接口,读写要靠软件编程来完成。
2.2.3液晶显示与键盘模块
液晶显示与键盘模块用来手动设置或者修改交通信号机的控制参数。S3C44B0X内置LCD驱动控制器,能自动产生LCD驱动控制所需的控制信号,因此S3C44B0X可以与诸如黑白灰度、STN型彩色等LCD直接连接,而不需要另外加LCD控制器;键盘模块通过ZLG7290B扩展一个4×4的键盘矩阵,ZLG7290B通过IIC串行总线与处理器进行连接。
2.2.4以太网模块
传统的RS232和RS485通信方式已经不适应远距离、大信息量的数据传输,而充分利用网络系统,实现信号机联网,也是智能交通发展的要求。 S3C44B0X本身没有集成网络控制器,本文选用NE2000兼容的典型以太网控制器芯片RTL8019来扩展以太网,图3为以太网模块。
图3 以太网模块
2.2.5 16C554模块
将信号灯驱动任务分解,每项任务由具有单片机的智能化小系统承担,这些小系统与主控板通信,并由主控板协调整个系统工作,至于通信形式,自然是串行总线[3]。本文采用TI公司的TL16C554扩展4个串口,用于主控板与信号灯驱动板、车流量检测板、交通指示牌进行通信。由于信号灯驱动板和车流量检测板是直接插在主控板上的,因机内串行总线的长度不大,一般在1米左右,故无须进行RS232电平转换即可用很高的波特率进行串行通信。图4为TL16C554模块简图。
图4 TL16C554模块
3 信号机控制软件设计
信号机功能比较简单时并不需要使用操作系统,而只是运行一个控制循环程序,利用中断来处理发生的事件,这样的程序结构比较凌乱,难以维护和升级,功能也受限。现代智能信号机功能发展需要同时运行多个任务,如信号灯控制、通讯、车流量检测等,这就需要对多任务进行合理的调度,另外信号机接收和处理的信息、数据的增多,尤其是需要大量保存历史车流量数据提供给信号灯控制模型计算和中心查询使用,单靠表或数组来管理是复杂而低效的,因此文件管理也是必不可少的一项功能。
嵌入式Linux是一款优秀的嵌入式操作系统,它采用微内核体系结构,这使得内核小巧而可靠,易于ROM固化,可模块化扩展,支持多种文件系统,并直接提供完善的网络支持。本文选用µClinux作为嵌入式操作系统,µClinux是专门针对没有MMU的CPU,为嵌入式系统做了许多小型化的工作,目前支持包括S3C44B0X等微处理器。µClinux采用一种平板式(Flat)的内存模型来去除对MMU的依赖,改变了用户程序的加载方式,开发了运行于µClinux的C函数库(µCLibc)。 µClinux内核可完成进程管理、内存管理、文件系统、设备控制、网络实现等功能,内核采用模块化设计,许多功能块可以独立的加上和卸下,我们在设计内核时把这些内核模块作为可选的选项,可以在编译系统内核时指定,对内核重新编译时,选择嵌入式设备所需要的功能模块,删除冗余的功能模块,通过对内核的重新配置,可以使系统运行所需要的内核显著减小,从而缩减资源使用量,使系统运行所需硬件资源显著减少[4]。
交通信号机应用软件由3个通信协议模块和5个算法模块构成。3个通信协议模块是:控制中心通讯协议、串口通信协议和IIC通讯协议。5个算法模块:定时控制、感应控制、多时段控制、黄闪控制和绿波带控制。图5是基于µClinux的交通信号机的软件工作流程。
图5 µClinux的工作流程
如果是8019中断,系统调用控制中心的通讯协议,获得控制中心的控制信息;如果是IIC中断,系统调用IIC通讯协议,获得手动修改的控制信息;如果是串口中断,系统再查询是16C554的哪个串口中断,然后调用相应的协议,如果是关于车流量检测的,就给车流量检测板发出控制指令,如果是信号灯控制板,就给红绿灯控制器发出控制指令,或者给交通指示牌发出相应的控制信息,不管什么中断发生,都要调用正在运行的算法重新计算参数。
4.结束语
本文介绍了基于S3C44B0X微处理器的智能交通信号机的硬件设计以及µClinux软件平台。该设计方案改进了原信号机功能,增加了网络通讯功能,并保存了过去的串口通信以保持兼容。整个开发板结构设计的串行接口与原信号机主板一样,可以直接在现在的信号机上使用,而不用整个修改已经开发成熟的信号机,简化了开发工作。
本文作者创新点:在兼容原来信号机功能的基础上,将嵌入式处理器和嵌入式操作系统结合起来应用于信号机上。
参考文献:
[1] 许荣.基于ARM智能交通信号机控制板开发[J].现代电子技术,2006,7:138-141
[2] 胥静.嵌入式系统设计与开发实例详解—基于ARM的应用[M].北京:北京航空航天大学出版社,2005,1
[3] 石松泉,尚文刚.可重构交通信号控制机的设计[J].微电子学与计算机,2005,6(22):214-220
[4] 李岩,荣盘祥.基于S3C44B0X嵌入式µClinux系统原理及应用[M].北京:清华大学出版社,2005,1
[5] 尹耕钦,唐绪伟.城市交通信号灯模拟控制系统[J].微计算机信息,2005,10-1:68-87