您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于ARM的车辆检测体系控制单位计划

发布日期:2011-04-19

 

   由于交通需求的不绝增长,有越来越多的环形感到线圈检测器用于交通检测。这些埋设在蹊径外貌下的线圈可以检测到车辆通过期的电磁变革进而正确地算出交通流量。交通流量是交通统计和交通筹划的根本数据,通过这些检测结果可以用来谋略占用率(表征交通密度),在利用双线圈模式时还可以提供速率、车辆行驶方向、车型分类等数据,这些数据对付交通办理和统计是极为紧张的。通常高速公路车辆检测体系由多通道环形检测单位LD4和控制单位CCU构成,本文采取PHILIPS公司最新推出的ARM7内核微处理惩罚器LPC2114计划实现了车辆检测体系控制单位部分,并且和5个LD4环形检测器一起构成10通道高速公路车辆检测体系,其原理框图如图1所示。 

车辆检测体系原理框图
                                图1 车辆检测体系原理框图
控制板体系原理框图


                                图2 控制板体系原理框图
 lpc2114和电子硬盘连接表示图图


                                 图3 LPC2114和电子硬盘连接表示图图
主步伐流程图


                                图4  主步伐流程图


总体方案计划
    
 本文计划的控制板体系原理框图如图2所示,以LPC2114为内核控制单位,该芯片是一种支持及时仿真和跟踪的16/32位基于ARM7TDMI-S 内核的CPU。内部集成了4路10 位A/D转换器,两个32位定时器、一个及时时钟和看门狗,多个串行接口,包括两个产业标准的UART、高速和两个SPI总线接口,外部多达46个与TTL电平兼容的通用I/O口,非常实用于作为主控单位。CPLD EPM7128作为微处理惩罚器的扩展输入/输出,通过光电耦合和LD4标准定义总线相连,该标准定义的总线基于RS-485总线通讯协议。LD4和控制板通过标准总线举行数据互换,控制板每隔10秒扫描并发送一次恳求数据的下令,相应LD4通道返回恳求数据大概无效信息,ARM处理惩罚器对得到的各通道数据举行相应的统计运算处理惩罚。每隔用户设置的隔断时间就将统计数据存储于静态RAM,供中间站定时获取,同时,以分钟为单位将统计的数据备份至Flash电子硬盘中。中间站可以通过恳求备份数据下令获取相合时间段的数据,并存入数据库。中间站和控制板采取RS-232串口方法通讯,利用调制解调器实现长途数据传输。为了办理大容量存储题目,体系利用了三星公司提供的K9F2808来作为电子硬盘,16MB的容量可以或许存储11天备份数据,并且该电子硬盘可以或许机动升级。


LPC2114与电子硬盘的接话柄现
     
为了防备传输及中间站妨碍等题目而导致数据丢失,体系请求对一段时间内的数据举行备份,因此在体系计划的进程中必要思量大容量存储题目。

设置本体系每分钟必要备份一次统计数据,根据环形检测器LD4的数据格局,一次数据量为1026B,若采取静态RAM作为存储单位,必要多片大容量RAM级联利用,代价昂贵,且存储容量扩展困难。若利用动态RAM作为存储单位,缺点在于控制困难,必要动态RAM控制器帮助操纵。Flash作为存储器利用大略,容量大,只管利用寿命有限,思量到体系每1分钟存储1026B,就16MB容量而言,11天左右写满一次,那么一个月擦写约3次,以此谋略,一年擦写约36次,而Flash寿命一样平常为擦写10万余次,以是本体系完全可以采取Flash作为电子硬盘用在车辆检测体系中。别的,Flash还具有失电非易失特性,更得当应用于本体系。

为了便于存储容量的升级扩展,本体系选用K9F2808作为存储器。K9F2808为48脚外貌封装器件,芯片内部有(16M+512K)×8 bit的存储空间,可构成32768行,528列,此中后备的16列的列地点编码为513~527,可举行528字节为一页的读、写和32页为一块的擦除操纵。别的,K9F2808的特点还在于其下令、地点和数据信息均通过8条I/O总线传输,接口标准同一,易于存储容量升级。

图3为LPC2114和Flash电子硬盘之间的连接表示图,由于LPC2114没有外部总线,以是对Flash操纵只能采取I/O操纵方法。K9F2808种种操纵具有共同特点,即在I/O端口起首发送操纵下令字到下令寄存器,其后的连续3个周期发送必要操纵单位的地点,次序为:A0~A7,A9~A16,A17~A23,此中A8由下令字确定。

下面以页编程操纵为例,给出K9F2808的ARM驱动步伐(基于ADS1.2开辟环境),而页读以及块擦除等要领与页编程雷同,只是读是由#RE信号来锁存数据,而擦除时只须送两个周期的地点。

row_add为页号,必要左移9位得到行地点。erase_flash( )——擦除Flash函数
write_command( )——写下令函数
write_address( )——写地点函数
write_data( )——写数据函数
read_data( )——读数据函数
void  flash_store(uint32 row_add, uint8 *buffer )
{ uint16 i;
 uint32 statue,address;
//变量定义
 IO0DIR |= 0x00ff0000;
//设置IO方向
 if((row_add== 0)|| ((row_add%32)==0))
 {address = row_add<<9;
 address &= 0x00fffe00;
 erase_flash(address);} 
//擦除Flash
 write_command(0x80);
//写下令80H
 address = row_add<<9;
 address &= 0x00fffe00;
 write_address(address);
//写地点
 statue = IO0PIN;
//获取状态
 while((statue&fr_b)==0)
 {statue = IO0PIN;}
//忙,等待
 for(i=0;i<528;i++)
//写528字节
 {write_data(*(buffer+i));} 
//写入数据
 write_command(0x10);
//写下令10H
 statue = IO0PIN;
//获取状态
 while((statue&fr_b)==0)
 {statue = IO0PIN;}
//忙,等待
 write_command(0x70);    
//写下令70H
 statue = read_data();         
//获取状态
 if(statue&0x01)
 {IO0SET |= errorled;}      
//操纵失败
}

LPC2114串口通讯实现
       
控制体系通过LPC2114的两个UART实现和LD4以及中间站的数据互换,两个UART具备触发点可调的16B收发FIFO。此中,UART1比UART0增长了调制解调器接口。UART的根本操纵要领和传统51内核单片机相似。

起首,设置I/O连接到UART;然后设置串口波特率(如U0DLM、U0DLL);接着设置串口事变模式(如U0LCR、U0FCR);这时就可以通过寄存器U0THR和U0RBR发送/吸取数据了,发送/吸取模块的状态信息可以通过U0LSR寄存器读取。

体系通过RS-485总线和LD4板卡通讯,采取MAX3485作为RS-485总线控制器和 
LPC2114的UART1通讯。MAX3485是3.3V供电的半双工收发芯片,将差分RS-485总线信号转换成ARM核可以或许担当的串口信号。为了实现和PC机通讯,体系采取3.3V事变电压的MAX3232作为RS-232电平转换芯片。

LPC2114计划细致事变
    
LPC2114在开辟的进程中有一些必要特别细致的题目,总结如下:

(1) 当用户步伐写入Flash后不克不及运行时,起首,必要思量停止向量表是否精确,停止向量表累加和必须为0。其次,必要思量向量表的定位,向量表是否已经定位在0x00000000地点。然后,必要思量MEMMAP寄存器的设置是否精确,不然停止无法实行。别的,还必要思量ISP硬件条件是否餍足,LPC2114的P0.14脚在#RESET为低时,该引脚线上的低电平将逼迫芯片进入ISP状态,硬件计划时必须在该引脚加10KW上拉电阻,不然,该引脚不稳固,对配置启动将会有影响。

(2) LPC2114共有46个GPIO,这些I/O可以恣意配置,但是个别引脚开漏输出(P0.2、P0.3),需加上拉电阻。别的,Flash存储器K9F2808状态输出引脚R/#B开漏输出,需加10KW的上拉电阻。

(3) LPC2114芯片加密后,只能通过ISP对芯片全局擦除后才华规复JTAG调试以及下载等成果。当#RESET为低时,P1.26的低电平使P1.26~P1.31复位后作为调试端口,细致在P1.26引脚和地之间需接一个弱偏置电阻。 

体系软件计划头脑及细致事变
    
车辆检测体系ARM软件采取分层计划头脑,整个软件由驱动步伐和应用软件两部分构成。驱动步伐部分封装了Flash操纵、RS-485操纵、及时时钟(RTC)操纵、RS-232操纵和I/O等操纵。应用软件分成根本函数库和主步伐。此中,主步伐流程如图4所示。

在32位ARM核应用体系中,为了举行体系初始化,每每采取一个汇编文件作为启动代码,来实现堆栈、停止、体系变量、I/O初始化以及地点重映射等操纵。开辟平台ADS的战略是不提供完备的启动代码,不敷部分必要开辟职员本身编写。

体系计划的启动代码包括停止向量表、堆栈初始化以及相应的停止办事步伐与C语言的接口。对LPC2114而言,为了使向量表中全部数据32位累加和为0 ,向量表中设置保存向量值,将停止向量表中的32个字节数累加,此中,保存向量值不消累加,然后取累加值的补码,这个补码的低32位便是保存向量的值。该保存向量值将被BOOT装载步伐用作有效的用户步伐关键字。当向量表中全部数据累加和为0时,且ISP外部硬件条件不餍足时,BOOT装载步伐将实行用户步伐。