基于ARM的车辆检测系统控制单元设计

发布者:Wanderlust123最新更新时间:2011-07-14 关键字:ARM微处理器  LPC2114  Flash存储  车辆检测系统 手机看文章 扫描二维码
随时随地手机看文章

  引言

  由于交通需求的不断增加,有越来越多的环形感应线圈检测器用于交通检测。这些埋设在道路表面下的线圈可以检测到车辆通过时的电磁变化进而精确地算出交通流量。交通流量是交通统计和交通规划的基本数据,通过这些检测结果可以用来计算占用率(表征交通密度),在使用双线圈模式时还可以提供速度、车辆行驶方向、车型分类等数据,这些数据对于交通管理和统计是极为重要的。通常高速公路车辆检测系统由多通道环形检测单元LD4和控制单元CCU组成,本文采用PHILIPS公司最新推出的ARM7内核微处理器LPC2114设计实现了车辆检测系统控制单元部分,并且和5个LD4环形检测器一起构成10通道高速公路车辆检测系统,其原理框图如图1所示。

基于ARM的车辆检测系统控制单元设计

  图1 车辆检测系统原理框图

基于ARM的车辆检测系统控制单元设计

  图2 控制板系统原理框图

基于ARM的车辆检测系统控制单元设计

  图3 LPC2114和电子硬盘连线示意图图

基于ARM的车辆检测系统控制单元设计

  图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天备份数据,并且该电子硬盘能够灵活升级。[page]

  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信号来锁存数据,而擦除时只须送两个周期的地址。

[page]

  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内核单片机相似。[page]

  首先,设置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装载程序将执行用户程序。

  结语

  本文基于PHILIPS公司最新的ARM7内核微处理器LPC2114实现了高速公路车辆检测系统的控制单元部分的设计。LPC2114使用简单、开发容易、具有较高的性价比,非常适用于嵌入式系统中。目前本系统已经推向市场,并取得了较好经济效益。

 

 

关键字:ARM微处理器  LPC2114  Flash存储  车辆检测系统 引用地址:基于ARM的车辆检测系统控制单元设计

上一篇:uC/OS-II在ARM系统上的移植与实现
下一篇:基于ARM+uCLinux的网络控制系统设计与实现

推荐阅读最新更新时间:2024-03-16 12:38

基于ARM核的微处理器ADμC7024在医疗电子中的应用
0 引言 随着信息技术的迅猛发展和人民生活水平的提高,极大地推动了医疗电子设备的发展,当今医疗电子设备的发展趋势是高精度、实时性、低功耗和小尺寸,作为医疗电子设备中核心地位的MCU(微处理器)也随着这一发展趋势向前不断衍变着。由早期的8位MCU发展到目前的32位RISC(精简指令集计算机)MCU。美国ADI公司根据市场的需要最新推出了一款基于ARM(高级精简指令集计算机)核的微处理器ADμC7024便是目前32位RISC MCU的杰出代表。ADμC7024卓越的处理能力、集成众多片上外围器件和芯片低功耗的特点,完全胜任目前医疗电子设备的需求及未来的发展目标。 本文以ADμC7024在医疗电子中监护产品脉搏血氧计的应
[单片机]
基于<font color='red'>ARM</font>核的<font color='red'>微处理器</font>ADμC7024在医疗电子中的应用
LPC2114启动代码分析
LPC2114启动代码的编写主要包括: 1.异常向量表的建立 2.MCU各种模式堆栈的初始化 3.系统基本的初始化工作 下面分别进行介绍. (一)ARM相关指令及伪指令 LDR PC,ResetAddr 将ResetAddr标号地址所指的内容传送给PC寄存器 LDR PC,=ResetAddr 将ResetAddr标号地址传送给PC寄存器 ResetAddr DCD ResetInit 为ResetAddr分配一个字的地址空间,以ResetInit初始化,即ResetAddr地址所指的内容为ResetInit标号地址 SvcStackSpace Space SVC_S
[单片机]
基于ARM车辆检测系统控制单元设计
摘 要:本文介绍了利用ARM7内核微处理器LPC2114设计的高速公路车辆检测系统控制单元,着重分析了大容量Flash存储单元的设计和ARM开发相关注意事项,给出了系统原理框图、单元电路设计和软件设计思想。 关键词:ARM微处理器;LPC2114;Flash存储;车辆检测系统 引言 由于交通需求的不断增加,有越来越多的环形感应线圈检测器用于交通检测。这些埋设在道路表面下的线圈可以检测到车辆通过时的电磁变化进而精确地算出交通流量。交通流量是交通统计和交通规划的基本数据,通过这些检测结果可以用来计算占用率(表征交通密度),在使用双线圈模式时还可以提供速度、车辆行驶方向、车型分类等数据,这些数据对于交通管理和统计是极为重要的。通
[传感技术]
ARM微处理器上实现Rijndael加密算法
  引 言   2000年10月2日,美国国家标准局NIST宣布,比利时密码学家Joat Daemen和Vincent Rijmen设计的“RijndaeI算法”以安全性好、运算速度快、存储要求低、灵活性强最终当选AES。该算法对目前的各种威胁是免疫的。这标志着信息技术有了新的安全工具,为计算机网络和电子商务的发展提供了强有力的保障。   在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统技术已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术以及人们的日常生活等方方面面中,成为目前最热门的技术之一。   本文使用北京博创兴业科技有限公司研制的UP-NETARM300嵌入式开发板,在ARM SD
[单片机]
在<font color='red'>ARM</font><font color='red'>微处理器</font>上实现Rijndael加密算法
单片机系统Flash存储器在系统编程设计
随着排放法规的加严,发动机电子控制单元(ECU)成为了现代汽车中一个必备部分。在发动机控制单元这种单片机系统中,Flash存储器已成为其一个基本配置,主要用来存放控制程序代码。 将程序代码装入Flash存储器的方法有3种:第1种方法是要求供应商在存储器发货前将数据写入,但无法满足产品开发阶段修改程序的要求;第2种方法是使用编程器编程,但由于Flash存储器正在向小型化、贴片式发展,从而使Flash存储器难以利用编程器编程;第3种方法是将存储器安装到电路板上进行编程,即在系统编程(In System Programming,ISP),这种编程方式是通过系统的微处理器实现对Flash存储器的编程,不需要其他编程设备和附加编程电源,具
[单片机]
单片机系统<font color='red'>Flash</font><font color='red'>存储</font>器在系统编程设计
ARM推出高性能Cortex-M7处理器 助力微处理器市场发展
ARM宣布推出最新的32位Cortex-M处理器Cortex-M7,这款处理器相较于目前性能最高的ARM架构微控制器(MCU),可大幅提升两倍的运算及数字信号处理(DSP)性能。ARM Cortex-M7处理器针对高端嵌入式应用,适用于新一代汽车电子、连网设备以及智能家居与工业应用。首批获得ARM Cortex-M7处理器授权的厂商包括Atmel、飞思卡尔与意法半导体。 ARM处理器部门总经理Noel Hurley表示:“ARM Cortex-M处理器系列新增Cortex-M7之后,ARM与合作伙伴将可为互联世界提供最具可扩展性与拥有最高软件兼容性的解决方案。通过Cortex-M7的多样性与全新的内存功能,开发者可以为各
[单片机]
ARM微处理器的指令集概述三—— .word的含义
_undefined_instruction是一个标号,处理到这里时,as会把undefined_instruction的值按16bit的形式放在此标号处。 ldr pc, _undefined_instruction 就是从_undefined_instruction处取值,即undefined_instruction, 并设置到pc中 比如: ldr r1, _rWTCON _rWTCON: .word 0x15300000 是把地址_rWTCON上的内容放到r1,而地址_rWTCON上的内容是0x15300000。实际上就是把r1设置为0x15300000 .
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved