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

发布者:快乐的旅程最新更新时间:2008-11-21 来源: 电子系统设计关键字:车辆检测系统  ARM微控制器  向量表  控制单元  补码  ARM微处理器  Flash  行地址  系统变量 手机看文章 扫描二维码
随时随地手机看文章

 

  引言

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

  

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

  

  图2 控制板系统原理框图[page]

  

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

  

  图4 主程序流程图

  [page]总体方案设计

  本文设计的控制板系统原理框图如图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由命令字确定。[page]

  下面以页编程操作为例,给出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);[page]

  //写命令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;

  //获取状态[page]

  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引脚和地之间需接一个弱偏置电阻。[page]

  系统软件设计思想及注意事项

  车辆检测系统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装载程序将执行用户程序。[page]

  结语

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

  参考文献

  1周立功等. ARM微控制器基础与实践.北京航空航天大学出版社. 2003. 11

  2马忠梅等. ARM嵌入式处理器结构与应用基础.北京航空航天大学出版社.2002

  3 Samsung datasheet. "K9F2808U0C Flash Memory"

  4 SIEMENS. "Loop Detector LD4"

 

关键字:车辆检测系统  ARM微控制器  向量表  控制单元  补码  ARM微处理器  Flash  行地址  系统变量 引用地址:基于ARM的车辆检测系统控制单元电路设计

上一篇:柴油发电机组转速控制半物理仿真的分析
下一篇:Diodes智能电机控制器提供全套解决方案

推荐阅读最新更新时间:2024-03-30 21:27

STC89C58RD+ 内部EEPROM 放数据 FLASH-ISP-IAP
#include reg52.h #include intrins.h /* use _nop_() function */ //sfr16 DPTR = 0x82; /* 新增特殊功能寄存器定义 */ sfr ISP_DATA = 0xe2; sfr ISP_ADDRH = 0xe3; sfr ISP_ADDRL = 0xe4; sfr ISP_CMD = 0xe5; sfr ISP_TRIG = 0xe6; sfr ISP_CONTR = 0xe7; /* 定义命令 */ #define READ_AP_and_Data_Memory_Command 0x01 /* 字节读数
[单片机]
ARM微控制器LPC210X的LCD接口技术
摘要:本文分别以GPI0口直接连接、串行转换连接、CPLD分部连接三种方法阐述了无外部总线的Philips ARM微控制器LPC210X与点阵图形液晶显示器的接口设计,并给出硬件电路框图和主要程序。 关键词:ARM LPC210X LCD接口 串并转换 CPLD 引言 Philips最近推出了其第一款基于ARM内核的控制器LPC210X,但由于LPC210X外部总线不开放,无法扩展内存、驱动液晶显示器等,给它的推广带来了一定的影响。笔者最近在一工控板项目中采用了该系列芯片,项目后斯应客户要求需对几个参量进行显示并扩展键盘,不得已之下,采用了CPLD,并利用了GPIO口模拟总线和液晶时序与点阵图形液日模块HS12864-16建
[嵌入式]
ARM单片机汇编指令使用一
目录: 1、ldr/str/mov指令 1)LDR指令 2)STR和LDRB指令 3)MOV指令 4)使用示例 2、movs指令 3、LDM表示装载,STM表示存储 4、teq指令 5、使用tst来检查是否设置了特定的位 6、'^'的理解 7、spsr_cxsf,cpsr_cxsf的理解 8、cpsr的理解 9、指令后缀和条件判断 10、B、BL、BX、BLX 和 BXJ指令的区别 1)B 指令 2)BL 指令 3)BLX 指令 4)BX 指令和BXJ指令 5)总结 -------------------------------------------- 说明: ARM单片机汇编指令使用一 ARM
[单片机]
<font color='red'>ARM</font><font color='red'>单片机</font>汇编指令使用一
Tiny210驱动之NAND_FLASH驱动程序
tiny_nand.c驱动源码: #include "linux/module.h" #include "linux/types.h" #include "linux/init.h" #include "linux/kernel.h" #include "linux/string.h" #include "linux/ioport.h" #include "linux/platform_device.h" #include "linux/delay.h" #include "linux/err.h" #include "linux/slab.h" #include "linux/clk.h" #include "linux/cpu
[单片机]
用Jlink烧写bootloader到mini2440的Nor flash
J-Flash ARM的配置。 一般说来file-- open project里面会找到一些*.jflash的配置文件,加载他们就行了,但是没找到适合S3C2440的。所以自己建了一个mini2440.jflash,手动进行配置: j-link设置 1. 打开J-Flash ARM,并进入菜单:Options-- Project settings 2.主要设置CPU选项和Flash选项 CPU : Core -- ARM9, Little endian Use target RAM(faster)-- Addr:40000000 4KB(不选很慢;从Nor flash启动时内部Boot SRAM的地址和大小,参考S3C2440A
[单片机]
大陆集团为汽车中的各种电子控制单元提供无线功能更新升级
随着联网汽车的数字化,对安全可靠的无线更新的需求日益增加。Continental 为多个电子控制单元 (ECU) 更新提供了端到端无线更新解决方案,并提供车载信息服务和用于软件下载和分发的安全网关硬件、可靠的软件以及成熟的后端解决方案,以实现快速存储过程以及基于卫星通信的单一全球网络。 据了解,通过与移动卫星通信公司Inmarsat的合作,大陆集团可以通过单一网络在全球实现无线更新。国际移动卫星组织Inmarsat管理着多个地球静止轨道通信卫星,通过提供双向数据连接并结合全球广播能力,能为全球各地的汽车提供快速高效的响应式无线更新。大陆集团的客户只需按下按钮,就能部署全球更新活动,避免了与多家移动网络运营商交涉的复杂性。两
[汽车电子]
MSP430 flash写入(三)
/* --COPYRIGHT--,BSD_EX * Copyright (c) 2012, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above c
[单片机]
FLASH存储器的在系统编程及其在DSP系统中的应用
    摘要: ATMEL公司生产的串行Flash AT45系列存储器的容量已达到了16Mb,常用于数据存储系统。文中以AT45D041为例,详细介绍了该系列Flash存储器的命令集以及串行SPI接口的应用方法,并给出了相应的模式时序。     关键词: SPI Flash Buffer 中断 AT45D041 现在,数字信号处理器(DSP)正越来越多地应用到各种场合。而FLASH存储器已成为DSP系统的一个基本配置,主要用于存放用户程序代码。目前FLASH存储器正在从单纯的EPROM的替换件演变为许多电路系统中的不可缺少的组成部分。 将用户程序代码装入FLASH存储器的方法有三种。
[缓冲存储]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved