微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于CC2430的城市车辆限行系统研究

基于CC2430的城市车辆限行系统研究

时间:05-07 来源:现代电子技术 点击:

时钟电路通过T1,T2接一个20 MHz晶振以及2个电容,实现全双工方式。
LED0,LED1各接一发光二极管以反映通信状态:LED0表示LED_COL,即通信有冲突;LED2表示LED_RX,即接收到网上的信息包。

2. 3 硬件传输性能及功耗

自由空间传播距离与发射功率、接收灵敏度以及所使用的载波频率有关,其数学表达式为:

式中:d为传播距离;Lp为自由空间损耗;c为光速;f为载波频率。由理论计算可知,CC2430最远识别距离可达1 500 m。实际中,由于外接干扰、障碍物遮挡和空气质量等因素影响,识别距离无法达理论长度。表1给出了利用CC2430实现远距离收发数据的测试结果。设数据包大小为32 B,数据速率为1 MHz。由电子标签到采集单元、和从采集单元到电子标签分别发送100个数据包,记录接收到正确数据包的数量。可见,在40 m以内的范围内,采集单元可以实现对车辆全部的识别,不会发生丢包现象。在实际使用中可能会遇到其他种种干扰,抗干扰能力是系统需要考虑的问题之一。

系统均选用较低功耗器件,电子标签中有源器件包括电压转换芯片、CC2430,它们的工作电流分别为3.5μA,27 mA(接收)/25 mA(发送)。且采用休眠-唤醒-休眠的工作方式,休眠时功耗更低。只需加装电池,即可满足3~5年的使用。实现低成本、低功耗、高性能的系统需求。

3 软件设计

软件设计分为CC2430进行无线收发部分和单片机控制以太网进行数据传输部分。软件设计的难点在于射频芯片数据的收发,下面主要介绍射频数据收发控制以及以太网数据传送控制,对这两方面的操作处理做简要分析。

3.1 射频数据传输协议

电子标签和采集单元之间的数据传输遵循ZigBee无线网络传输协议。ZigBee协议是在IEEE 802.15.4标准基础上建立的,工作于免授权的2.4 GHz频段,其规定了有关组网、安全和应用软件方面的技术标准。由一组子层构成,每层为其上层提供一组特定的服务:数据实体提供数据传输服务,管理实体提供全部其他服务。每个服务实体通过一个服务接入点(SAP)为上层提供服务接口,并且每个SAP提供一系列的基本服务指令来完成相应的功能,ZigBee协议栈的体系结构模型如图6所示,IEEE 802.15.4标准定义了物理层(PHY)和介质接入控制子层(MAC);ZigBee联盟定义了网络层和应用层(APL)框架的设计。其中应用层框架主要包括3部分:应用支持子层(APS)、ZigBee设备对象(ZDO)和由制造商制定的应用对象。

ZigBee协议栈很好地解决了网络组网问题,整个协议栈的安全性好,层次性强,功耗低,可以实现网状网络。在ZigBee 2006协议栈中已经将CC2430的底层驱动全部固化在协议栈中,可以直接调用。选用CC2430芯片作为无线通信模块硬件核心芯片,软件部分选用ZigBee 2006协议栈来实现无线模块之间的通信功能。

3.2 射频数据收发处理程序

利用软件IAR 7.30B进行程序的开发。系统软件基于TIChipcon公司免费提供的ZigBee 2006协议栈,以Zstack-1.4.3-1.2.1版本中GenericApp例程为基础。下面给出串口部分和数据接收、发送部分程序。

3.2.1 串口初始化

主要是设置halUARTCfg_t结构体成员值:

通过对halUARTCfg_t赋值,可以设置波特率、字符数、数据位、停止位、奇偶校验位等。其中callBackFunc是自定义设置串口回调函数,即一旦出口有数据传送,OSAL会自动转到自定义的回调函数,执行自定义的操作。

3.2.2 数据接收

当有数据通过无线发送到应用层时,应用层会发送一个AF_INCOMING_MSG_CMD消息事件。

这里表示收到AF_INCOMING_MSG_CMD消息事件,然后调用收到消息事件的信息处理函数GenericApp_MessageMSGCB(MSGpkt),开始接收数据并通过调用串口HalUARTWrite(uint8 port,uint8*buf,uintl6 len)写函数发送、接收到的数据。

3.2.3 数据发送

当串口回调函数中有数据输入时,应用层会发送一个GENERICAPP_SEND_MSG_EVT消息事件。

调用GenericApp_SendTheMessage()数据发送函数,具体到TI/Chipcon公司所提供的ZigBee 2006协议栈中即为AF_DataRequest()函数,具体形式如下:


3.3 以太网数据传送控制

程序采用Franklin C51语言编制,可读性强,移植性好,开发简易。

3.3. 1 初始化RTL8019AS

通过C51的P3.4链接RTL8019AS的RESDRV来进行复位操作。RSTDRV高电平有效,只要给引脚施加一个1μs以上的高电平即可。

初始化页0、页1相关寄存器,页2的寄存器是只读的,不可以设置,页3的寄存器不是NE2000兼容的,不用设置。
(1)CR=0x21,选择页0的寄存器;
(2)TPSR=0x45,发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0x40;
(3)PSTART=0x4c,PSTOP=0x80,构造缓冲环:0x4C~0x80;
(4)BNBY=0x4c,设置指针;
(5)RCR=0xcc,设置接收配置寄存器,使用按收缓冲区,仅接收自己地址的数据包(以及广播地址数据包)和多点播送地址包,小于64 B的包丢弃,校验错的数据包不接收;
(6)TCR=0xe0,设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;
(7)DCR=0xe8,设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA;
(8)IMR=0x00,设置中断屏蔽寄存器,屏蔽所有中断;
(9)CR=0x61,选择页1的寄存器;
(10)CURR=0x4d,CURR是RTL8019AS写内存的指针,指向当前正在写的页的下一页,初始化时指向0x4c+1=0x4d;
(11)设置多址寄存器MAR0~MAR5,均设置为0x00;
(12)设置网卡地址寄存器PAR0~PAR5;
(13)CR=0x22,选择页1的寄存器,进入正常工作状态。

3.3.2 发送帧

将待发送的数据按帧格式封装,通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令,完成帧的发送。需要设置以太网目的地址、以太网源地址、协议类型,再按所设置的协议类型来设置数据段。之后启动远程DMA,数据写入RTL8019AS的RAM,再启动本地DMA,将数据发到网上。

RTL8019AS无法将整个数据包通过DMA通道一次存入FIFO,则在构造一个新的数据包之前必须先等待前一数据包发送完成。为提高发送效率,设计将12页的发送缓存区分为两个6页的发送缓存区,一个用于数据包发送,另一个用于构造新的数据包,交替使用。

通过调试,利用PC机接收一个构造的ARP请求包,接收效果比较满意。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top